00001 // 00002 // Copyright (c) 2000 by Tech Soft 3D, LLC. 00003 // The information contained herein is confidential and proprietary to 00004 // Tech Soft 3D, LLC., and considered a trade secret as defined under 00005 // civil and criminal statutes. Tech Soft 3D shall pursue its civil 00006 // and criminal remedies in the event of unauthorized use or misappropriation 00007 // of its trade secrets. Use of this information by anyone other than 00008 // authorized employees of Tech Soft 3D, LLC. is granted only under a 00009 // written non-disclosure agreement, expressly prescribing the scope and 00010 // manner of such use. 00011 // 00012 // 00013 00020 #ifndef _HIOMANAGER_H 00021 #define _HIOMANAGER_H 00022 00023 #ifdef H_PACK_8 00024 #pragma pack(push) 00025 #pragma pack(8) 00026 #endif 00027 00028 #include "HTools.h" 00029 00030 00031 // forwards 00032 enum HFileOutputResult; 00033 class HPDFOptions; 00034 class HBaseView; 00035 class HCamera; 00036 class HBaseModel; 00037 struct vlist_s; 00038 class HStreamFileToolkit; 00039 class HBhvBehaviorManager; 00040 class BREP_Topology; 00041 00042 enum H_OUTPUT_TYPE 00043 { 00044 H_OUTPUT_TYPE_DEFAULT = 0, 00045 H_PDF_OUTPUT_PORTFOLIO, 00046 H_PDF_OUTPUT_3D, 00047 H_PDF_OUTPUT_2D, 00048 H_SINGLE_PASS_ZSORT, 00049 H_SINGLE_PASS_NO_HIDDEN_SURFACES 00050 }; 00051 00052 00056 #define HInputOpNone (1UL<<0) 00057 00061 #define HInputOpFileInputByKey (1UL<<1) 00062 00066 #define HInputOpFileInputToImageKey (1UL<<2) 00067 00071 #define HOutputOpNone (1UL<<0) 00072 00076 #define HOutputOpFileOutputByKey (1UL<<1) 00077 00081 #define HOutputOpFileOutputFromImageKey (1UL<<2) 00082 00083 00088 #define HIORegisterInputType(type,input_object) do {HIOManager::GetCurrentHIOManager()->RegisterInputHandler(type, input_object); }while(0); 00089 00090 00091 00093 #define HIORegisterOutputType(type,output_object) do { HIOManager::GetCurrentHIOManager()->RegisterOutputHandler(type, output_object); }while(0); 00094 00095 00096 00097 00102 class MVO_API HIONoticeCallback 00103 { 00104 public: 00105 00106 virtual ~HIONoticeCallback() {} 00111 virtual void Notice(const char * notice) = 0; 00112 virtual void Notice(const __wchar_t * notice) { 00113 UNREFERENCED(notice); 00114 } 00115 #ifdef H_USHORT_OVERLOAD 00116 virtual void Notice(const unsigned short * notice) { 00117 Notice((__wchar_t const *) notice); 00118 } 00119 #endif 00120 }; 00121 00125 class MVO_API HIOPercentNoticeCallback 00126 { 00127 public: 00128 virtual ~HIOPercentNoticeCallback(); 00133 virtual void Notice(float notice) =0; 00134 }; 00135 00136 00137 00140 typedef void * (*HIO_CREATE_FREE_FUNCTION)(void *); 00141 00144 typedef void (*HIO_FREE_CONNECTOR_FUNCTION)(void *); 00145 00151 class MVO_API HIOConnector 00152 { 00153 public: 00154 00155 /*Constructs an HIOConnector object.*/ 00156 HIOConnector(); 00157 virtual ~HIOConnector(); 00158 00166 virtual HC_KEY GetHoopsEntity(void * pKernelEntity); 00167 virtual HC_KEY GetHoopsEntity(void * pKernelEntity, HC_KEY modelKey); 00168 00176 virtual void * GetKernelEntity(HC_KEY key); 00177 virtual void * GetKernelEntity(HC_KEY key, HC_KEY modelKey); 00178 00185 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList); 00186 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList, HC_KEY modelKey); 00187 00194 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList); 00195 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList, HC_KEY modelKey); 00196 00202 virtual void AddConnection(HC_KEY key, void* pKernelEntity); 00203 virtual void AddConnection(HC_KEY key, void* pKernelEntity, HC_KEY modelKey); 00204 00205 00212 virtual void OptimizeTree(const char * segname, const char * option_string); 00213 00214 protected: 00215 00217 struct vhash_s *mhash_Hoops2Kernel; 00218 00220 struct vhash_s *mhash_Kernel2Hoops; 00221 00222 }; 00223 00228 enum HInputHandlerStyle { 00229 HInputHandlerStyleModel, 00230 HInputHandlerStyleImage 00231 }; 00232 00237 enum HDwgViewVector { 00238 DwgTopView, 00239 DwgIsoView, 00240 DwgViewportInherit, 00241 DwgSceneInherit 00242 }; 00243 00249 class MVO_API HInputHandlerOptions 00250 { 00251 public: 00252 00254 HInputHandlerOptions() { 00255 m_z_separation = 1; 00256 m_depth_range = 0; 00257 m_pHBaseView = 0; 00258 m_pImageName = 0; 00259 m_pImageFormat = 0; 00260 m_pConnector = 0; 00261 m_pExtendedData = 0; 00262 m_bLocal = false; 00263 m_tk = 0; 00264 m_bLogging = false; 00265 00266 00267 // Generic options used in DGN, SKP and DWG importer 00268 m_bIgnoreOffEntities = false; 00269 00270 //DWG/SKP option 00271 m_bImportMetadata = false; 00272 00273 // DWG import options (try and move them somewhere else) 00274 m_bInputViaHSF = false; 00275 m_Deviation = 10.0; 00276 m_bImportWireframeForBrep = false; 00277 m_numIsolines = 0; 00278 m_listRegAppNames = 0; 00279 m_listEntityType = 0; 00280 m_bForceReimport = false; 00281 m_listDWGLayouts = 0; 00282 m_bAttachDWGHandles = false; 00283 m_bImportAllLayouts = false; 00284 m_bDWGInsertMeshesAsShells = false; 00285 m_bDisableDWGDrawOrder = false; 00286 m_eDwgViewVector = DwgViewportInherit; 00287 m_sDwgContrastColorRgb = HPoint(0, 0, 0); 00288 m_bLegacyOptimize = false; 00289 m_bDwgDepthRangeDrawOrder = false; 00290 00291 // DGN import Options 00292 m_iDGNCellHeaderOption = SINGLE_ENTITY_CELLHEADER; 00293 m_coneFactor = 10.0; 00294 m_factorForSmartSolids = 45.0; 00295 m_bDGNRebaselineModel = false; 00296 m_bDGNImportAllModels = false; 00297 00298 // PRC options 00299 m_pPRCPMIConnector = 0; 00300 m_pPRCTopologyManager = 0; 00301 m_bPRCMergeFaces = false; 00302 m_bPRCImportNonBrepFaces = true; 00303 m_bPRCCreatePRCFileOnly = false; 00304 m_bPRCInstanceShells = true; 00305 m_bPRCCalculatePhysicalProperties = false; 00306 m_pPRCMultiModelSelectionCallback = 0; 00307 m_pPRCAsmModelFile = 0; 00308 m_pPRCDeleteModelFile = false; 00309 m_bPRCStoreUserAttributes = true; 00310 m_pPRCDeleteModelCallback = 0; 00311 m_bPRCImportHiddenObjects = false; 00312 00313 // DWF import options 00314 m_bDisableDWFDrawOrder = false; 00315 m_bDWFRebaselineModel = true; 00316 m_bImportThumbnail = false; 00317 00318 //SKP optimization option 00319 m_bOptimizeSegmentTree = false; 00320 m_license = 0; 00321 00322 }; 00323 00326 HInputHandlerOptions(HInputHandlerOptions const *o) { 00327 m_z_separation = o->m_z_separation; 00328 m_depth_range = o->m_depth_range; 00329 m_pHBaseView = o->m_pHBaseView; 00330 m_pImageName = o->m_pImageName; 00331 m_pImageFormat = o->m_pImageFormat; 00332 m_pConnector = o->m_pConnector; 00333 m_pExtendedData = o->m_pExtendedData; 00334 m_bLocal = o->m_bLocal; 00335 00336 m_license = o->m_license; 00337 00338 //DWG/DGN/SKP option 00339 m_bIgnoreOffEntities = o->m_bIgnoreOffEntities; 00340 00341 //DWG/SKP option 00342 m_bImportMetadata = o->m_bImportMetadata; 00343 00344 00345 //DWG Options 00346 m_bInputViaHSF = o->m_bInputViaHSF; 00347 m_Deviation = o->m_Deviation; 00348 m_bImportWireframeForBrep = o->m_bImportWireframeForBrep; 00349 m_numIsolines = o->m_numIsolines; 00350 m_listRegAppNames = o->m_listRegAppNames; 00351 m_listEntityType=o->m_listEntityType; 00352 m_bForceReimport = o->m_bForceReimport; 00353 m_listDWGLayouts = o->m_listDWGLayouts; 00354 m_bAttachDWGHandles = o->m_bAttachDWGHandles; 00355 m_bImportAllLayouts = o->m_bImportAllLayouts; 00356 m_bDWGInsertMeshesAsShells = o->m_bDWGInsertMeshesAsShells; 00357 m_bDisableDWGDrawOrder = o->m_bDisableDWGDrawOrder; 00358 m_eDwgViewVector = o->m_eDwgViewVector; 00359 m_sDwgContrastColorRgb = o->m_sDwgContrastColorRgb; 00360 m_bLegacyOptimize = o->m_bLegacyOptimize; 00361 m_bDwgDepthRangeDrawOrder = o->m_bDwgDepthRangeDrawOrder; 00362 00363 //DGN Options 00364 m_iDGNCellHeaderOption = o->m_iDGNCellHeaderOption; 00365 m_bDGNRebaselineModel = o->m_bDGNRebaselineModel; 00366 m_coneFactor = o->m_coneFactor; 00367 m_factorForSmartSolids = o->m_factorForSmartSolids; 00368 m_bDGNImportAllModels = o->m_bDGNImportAllModels; 00369 00370 // PRC options 00371 m_pPRCPMIConnector = o->m_pPRCPMIConnector; 00372 m_pPRCTopologyManager = o->m_pPRCTopologyManager; 00373 m_bPRCMergeFaces = o->m_bPRCMergeFaces; 00374 m_bPRCImportNonBrepFaces = o->m_bPRCImportNonBrepFaces; 00375 00376 m_bPRCCreatePRCFileOnly = o->m_bPRCCreatePRCFileOnly; 00377 m_bPRCInstanceShells = o->m_bPRCInstanceShells; 00378 m_bPRCCalculatePhysicalProperties = o->m_bPRCCalculatePhysicalProperties; 00379 m_pPRCMultiModelSelectionCallback = o->m_pPRCMultiModelSelectionCallback; 00380 m_pPRCAsmModelFile = o->m_pPRCAsmModelFile; 00381 m_pPRCDeleteModelFile = o->m_pPRCDeleteModelFile; 00382 m_pPRCDeleteModelCallback = o->m_pPRCDeleteModelCallback; 00383 m_bPRCImportHiddenObjects = o->m_bPRCImportHiddenObjects; 00384 00385 00386 // DWF import options 00387 m_bDisableDWFDrawOrder = o->m_bDisableDWFDrawOrder; 00388 m_bDWFRebaselineModel = o->m_bDWFRebaselineModel; 00389 m_bImportThumbnail = o->m_bImportThumbnail; 00390 00391 00392 //SKP import option 00393 m_bOptimizeSegmentTree = o->m_bOptimizeSegmentTree; 00394 00395 }; 00396 00399 HInputHandlerOptions(const HInputHandlerOptions &o) { 00400 m_z_separation = o.m_z_separation; 00401 m_depth_range = o.m_depth_range; 00402 m_pHBaseView = o.m_pHBaseView; 00403 m_pImageName = o.m_pImageName; 00404 m_pImageFormat = o.m_pImageFormat; 00405 m_pConnector = o.m_pConnector; 00406 m_pExtendedData = o.m_pExtendedData; 00407 m_bLocal = o.m_bLocal; 00408 00409 //DWG/DGN/SKP option 00410 m_bIgnoreOffEntities = o.m_bIgnoreOffEntities; 00411 00412 //DWG/SKP option 00413 m_bImportMetadata = o.m_bImportMetadata; 00414 00415 //DWG options 00416 m_bInputViaHSF = o.m_bInputViaHSF; 00417 m_Deviation = o.m_Deviation; 00418 m_bImportWireframeForBrep = o.m_bImportWireframeForBrep; 00419 m_numIsolines = o.m_numIsolines; 00420 m_listRegAppNames = o.m_listRegAppNames; 00421 m_listEntityType = o.m_listEntityType; 00422 m_bForceReimport = o.m_bForceReimport; 00423 m_listDWGLayouts = o.m_listDWGLayouts; 00424 m_bAttachDWGHandles = o.m_bAttachDWGHandles; 00425 m_bImportAllLayouts = o.m_bImportAllLayouts; 00426 m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells; 00427 m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder; 00428 m_eDwgViewVector = o.m_eDwgViewVector; 00429 m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb; 00430 m_bLegacyOptimize = o.m_bLegacyOptimize; 00431 m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder; 00432 00433 //DGN options 00434 m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption; 00435 m_bDGNRebaselineModel = o.m_bDGNRebaselineModel; 00436 m_coneFactor = o.m_coneFactor; 00437 m_factorForSmartSolids = o.m_factorForSmartSolids; 00438 m_bDGNImportAllModels = o.m_bDGNImportAllModels; 00439 00440 // PRC options 00441 m_pPRCPMIConnector = o.m_pPRCPMIConnector; 00442 m_pPRCTopologyManager = o.m_pPRCTopologyManager; 00443 m_bPRCMergeFaces = o.m_bPRCMergeFaces; 00444 m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces; 00445 m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly; 00446 m_bPRCInstanceShells = o.m_bPRCInstanceShells; 00447 m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties; 00448 m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback; 00449 m_pPRCAsmModelFile = o.m_pPRCAsmModelFile; 00450 m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile; 00451 m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects; 00452 00453 // DWF import options 00454 m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder; 00455 m_bDWFRebaselineModel = o.m_bDWFRebaselineModel; 00456 m_bImportThumbnail = o.m_bImportThumbnail; 00457 00458 00459 //SKP import option 00460 m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree; 00461 00462 }; 00463 00464 virtual ~HInputHandlerOptions(); 00465 00467 HBaseView * m_pHBaseView; 00468 00470 const char * m_pImageName; 00471 00473 const char * m_pImageFormat; 00474 00476 bool m_bLocal; 00477 00479 HStreamFileToolkit * m_tk; 00480 00482 bool m_bLogging; 00483 00485 HIOConnector * m_pConnector; 00486 00488 void * m_pExtendedData; 00489 00491 bool m_bInputViaHSF; 00492 00494 double m_Deviation; 00495 00497 bool m_bImportMetadata; 00498 00500 const char *m_license; 00501 00502 00503 00504 00508 struct vlist_s * m_listRegAppNames; 00509 00511 struct vlist_s * m_listEntityType; 00512 00514 bool m_bImportWireframeForBrep; 00515 00517 double m_numIsolines; 00518 00520 bool m_bForceReimport; 00521 00526 bool m_bDisableDWGDrawOrder; 00527 00529 struct vlist_s * m_listDWGLayouts; 00530 00532 bool m_bIgnoreOffEntities; 00533 00537 double m_coneFactor; 00538 00542 double m_factorForSmartSolids; 00543 00545 bool m_bAttachDWGHandles; 00546 00548 int m_iDGNCellHeaderOption; 00549 00550 00551 00555 enum { 00556 SINGLE_ENTITY_CELLHEADER, 00557 BREAK_CELLHEADER, 00558 OPT_CELLHEADER 00559 }; 00560 00562 void *m_pPRCAsmModelFile; 00563 00565 bool m_pPRCDeleteModelFile; 00566 00568 HIOConnector * m_pPRCPMIConnector; 00570 BREP_Topology * m_pPRCTopologyManager; 00572 bool m_bPRCMergeFaces; 00573 bool m_bPRCImportNonBrepFaces; 00574 00576 bool m_bPRCCreatePRCFileOnly; 00577 bool m_bPRCInstanceShells; 00578 00579 bool m_bPRCCalculatePhysicalProperties; 00581 void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const ** in_configs, 00582 int & out_config_selection); 00584 bool m_bPRCStoreUserAttributes; 00586 void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile); 00588 bool m_bPRCImportHiddenObjects; 00589 00590 00593 bool m_bImportAllLayouts; 00594 00596 bool m_bDGNRebaselineModel; 00597 00599 bool m_bDGNImportAllModels; 00600 00604 bool m_bDWGInsertMeshesAsShells; 00605 00606 // DWF import options 00611 bool m_bDisableDWFDrawOrder; 00612 00614 bool m_bImportThumbnail; 00615 00617 bool m_bDWFRebaselineModel; 00618 00620 bool m_bOptimizeSegmentTree; 00621 00627 HDwgViewVector m_eDwgViewVector; 00628 00635 HPoint m_sDwgContrastColorRgb; 00636 00643 bool m_bLegacyOptimize; 00644 00651 bool m_bDwgDepthRangeDrawOrder; 00652 00657 double m_z_separation; 00658 00663 double m_depth_range; 00664 }; 00665 00666 00667 00669 00675 class MVO_API HInputHandler 00676 { 00677 00678 public: 00686 HInputHandler(); 00687 virtual ~HInputHandler(); 00688 00693 unsigned long GetInputOps() {return m_InputOps;}; 00694 00695 00698 virtual const char * GetInputName() = 0; 00699 00700 00707 virtual void RegisterInputHandlerTypes() = 0; 00708 00715 virtual HInputHandlerStyle GetInputStyle() = 0; 00716 00724 virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options); 00725 virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options); 00726 00727 00736 virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options); 00737 00748 virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00749 virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00750 00751 00761 virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00762 00775 virtual const char * GetInputTypesString() = 0; 00776 00780 const __wchar_t * GetInputProgress(); 00781 00785 float GetInputPercentProgress(); 00786 00790 const __wchar_t * GetInputInformation(); 00791 00798 HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback); 00799 00800 00807 HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 00808 00815 HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback); 00816 00818 void ReportInputProgress(const char * progress); 00819 void ReportInputProgress(const __wchar_t * progress); 00820 00822 void ReportInputPercentProgress(float percent_progress); 00823 00825 void ReportInputInformation(const char * information); 00826 void ReportInputInformation(const __wchar_t * information); 00827 00828 void SetModuleDirectory(const char *module_directory); 00829 void SetModuleDirectory(const __wchar_t *module_directory); 00830 protected: 00831 00835 void SetStartingInput(const char *filename); 00836 void SetStartingInput(const __wchar_t *filename = 0); 00837 00841 void SetFinishedInput(); 00842 00844 void SetInputOps(unsigned long ops) {m_InputOps=ops;}; 00845 00847 unsigned long m_InputOps; 00848 00849 __wchar_t *m_module_directory; 00850 00851 private: 00852 00853 __wchar_t *m_progress; 00854 float m_percent_progress1; 00855 float m_percent_progress2; 00856 __wchar_t *m_information; 00857 struct vlist_s *m_information_list; 00858 HIONoticeCallback *m_progress_callback; 00859 HIONoticeCallback *m_information_callback; 00860 HIOPercentNoticeCallback *m_percent_progress_callback; 00861 }; 00862 00866 enum HOutputHandlerStyle 00867 { 00868 HOutputHandlerStyleModel, 00869 HOutputHandlerStyleImage, 00870 HOutputHandlerStyleHardcopy, 00871 HOutputHandlerStyleHTML, 00872 HOutputHandlerStyleDontCare 00873 }; 00874 00881 class MVO_API ExportNameMap 00882 { 00883 private: 00884 void * _imp; 00885 public: 00886 ExportNameMap(); 00887 ~ExportNameMap(); 00888 00889 H_FORMAT_TEXT lookup(HC_KEY) const; 00890 void tag(HC_KEY, H_FORMAT_TEXT const &); 00891 }; 00892 00900 enum HPrcBrepCompression { 00901 PrcBrepCompressionNone, 00902 PrcBrepCompressionLow, 00903 PrcBrepCompressionMedium, 00904 PrcBrepCompressionHigh 00905 }; 00906 00912 class MVO_API HOutputHandlerOptions 00913 { 00914 public: 00916 HOutputHandlerOptions(); 00917 00918 virtual char const * GetType() const; 00919 00922 virtual bool PopulateOptions(); 00923 00927 HOutputHandlerOptions(HOutputHandlerOptions const *o) { 00928 Init(o); 00929 }; 00930 00934 HOutputHandlerOptions(const HOutputHandlerOptions &o) { 00935 Init(&o); 00936 }; 00937 00938 00939 virtual ~HOutputHandlerOptions(); 00940 00944 void Init(HOutputHandlerOptions const *o); 00945 00947 HBaseView * m_pHBaseView; 00949 HBaseView * const View() const {return m_pHBaseView;}; 00951 void View(HBaseView * const v) {m_pHBaseView = v;}; 00952 00954 HBaseModel * m_pHBaseModel; 00956 HBaseModel * const Model() const {return m_pHBaseModel;}; 00958 void Model(HBaseModel * const m) {m_pHBaseModel = m;}; 00959 00961 HCamera * m_pCamera; 00963 HCamera * const Camera() const {return m_pCamera;}; 00965 void Camera(HCamera * const c) {m_pCamera = c;}; 00966 00968 HC_KEY m_Key; 00970 HC_KEY const Key() const {return m_Key;}; 00972 void Key(HC_KEY const k) {m_Key = k;}; 00973 00975 char const * m_pHSRAOptions; 00977 char const * const HSRAOptions() const {return m_pHSRAOptions;}; 00979 void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;}; 00980 00982 HPoint const * m_pWindowColor; 00984 HPoint const * const WindowColor() const {return m_pWindowColor;}; 00986 void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;}; 00987 00989 bool m_bUseWindowColor; 00991 bool UseWindowColor() const {return m_bUseWindowColor;}; 00993 void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;}; 00994 00996 float m_Window_Width; 00998 float const WindowWidth() const {return m_Window_Width;}; 01000 void WindowWidth(float const f) {m_Window_Width = f;}; 01001 01003 float m_Window_Height; 01005 float const WindowHeight() const {return m_Window_Height;}; 01007 void WindowHeight(float const f) {m_Window_Height = f;}; 01008 01010 float m_Paper_Width; 01012 float const PaperWidth() const {return m_Paper_Width;}; 01014 void PaperWidth(float const f) {m_Paper_Width = f;}; 01015 01017 float m_Paper_Height; 01019 float const PaperHeight() const {return m_Paper_Height;}; 01021 void PaperHeight(float const f) {m_Paper_Height = f;}; 01022 01024 bool m_ForceGrayscale; 01026 bool ForceGrayscale() const {return m_ForceGrayscale;}; 01028 void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;}; 01029 01031 bool m_bFastPrint; 01033 bool FastPrint() const {return m_bFastPrint;}; 01035 void FastPrint(bool const tf) {m_bFastPrint = tf;}; 01036 01038 bool m_bConserveMemory; 01040 bool ConserveMemory() const {return m_bConserveMemory;}; 01042 void ConserveMemory(bool const tf) {m_bConserveMemory = tf;}; 01043 01044 bool m_bWriteAnimations; 01045 bool WriteAnimations() const {return m_bWriteAnimations;}; 01046 void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;}; 01047 01049 bool m_bWindowFrame; 01051 bool WindowFrame() const {return m_bWindowFrame;}; 01053 void WindowFrame(bool const tf) {m_bWindowFrame = tf;}; 01054 01056 bool m_bUseSubscreen; 01058 bool UseSubscreen() const {return m_bUseSubscreen;}; 01060 void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;}; 01061 01063 int m_Image_Dpi; 01065 int const ImageDpi() const {return m_Image_Dpi;}; 01067 void ImageDpi(int const dpi) {m_Image_Dpi = dpi;}; 01068 01070 int m_Paper_Dpi; 01072 int const PaperDpi() const {return m_Paper_Dpi;}; 01074 void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;}; 01075 01077 void * m_pExtendedData; 01078 void * const ExtendedData() const {return m_pExtendedData;}; 01079 void ExtendedData(void * const vp) {m_pExtendedData = vp;}; 01080 void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;}; 01081 01082 bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;}; 01083 void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;}; 01084 float const AnnotLeft() const {return m_fAnnotLeft;}; 01085 void AnnotLeft(float f) {m_fAnnotLeft = f;}; 01086 float const AnnotRight() const {return m_fAnnotRight;}; 01087 void AnnotRight(float f) {m_fAnnotRight = f;}; 01088 float const AnnotBottom() const {return m_fAnnotBottom;}; 01089 void AnnotBottom(float f) {m_fAnnotBottom = f;}; 01090 float const AnnotTop() const {return m_fAnnotTop;}; 01091 void AnnotTop(float f) {m_fAnnotTop = f;}; 01092 01093 01095 const char *m_license; 01096 01097 int m_antialiasLevel; 01098 int m_jpeg_quality; 01099 unsigned char* m_imageOutputBuffer; 01100 size_t m_imageOutputBufferSize; 01101 01102 01103 01104 01106 int m_Version; 01107 int const Version() const {return m_Version;}; 01108 void Version(int const v) {m_Version = v;}; 01109 01111 H_OUTPUT_TYPE m_OutputType; 01113 H_OUTPUT_TYPE OutputType() const {return m_OutputType;}; 01115 void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;}; 01116 01118 bool m_b3dOutput; 01120 bool Output3d() const {return m_b3dOutput;}; 01122 void Output3d(bool const tf) {m_b3dOutput = tf;}; 01123 01125 bool m_bAscii; 01127 bool Ascii() const {return m_bAscii;}; 01129 void Ascii(bool const tf) {m_bAscii = tf;}; 01130 01132 bool m_bStlNormals; 01134 bool StlNormals() const {return m_bStlNormals;}; 01136 void StlNormals(bool const tf) {m_bStlNormals = tf;}; 01137 01139 double m_ratio_cm_to_internal_units; 01140 01144 double PrintToScale() const {return m_ratio_cm_to_internal_units;}; 01145 01161 void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;}; 01162 01169 float m_PageMargins[4]; 01170 01172 HBhvBehaviorManager * m_pBehaviorManager; 01173 01175 char const* m_pDWFModelName; 01176 01178 ExportNameMap m_names; 01179 01181 void *m_pPRCAsmModelFile; 01182 01184 bool m_bActivateOnPageOpen; 01185 01187 float m_fAnnotLeft; 01188 01190 float m_fAnnotRight; 01191 01193 float m_fAnnotBottom; 01194 01196 float m_fAnnotTop; 01197 01199 HPrcBrepCompression m_ePrcBrepCompression; 01200 01202 bool m_bPrcCompressTessellation; 01203 01205 bool m_bAVIShowCompressionDialog; 01206 01208 bool m_bExporting2DDwf; 01209 }; 01210 01211 01213 01219 class MVO_API HOutputHandler 01220 { 01221 01222 public: 01230 HOutputHandler(); 01231 virtual ~HOutputHandler(); 01232 01233 01236 virtual const char * GetOutputName() = 0; 01237 01242 unsigned long GetOutputOps() {return m_OutputOps;}; 01243 01254 virtual void RegisterOutputHandlerTypes() = 0; 01255 01256 01264 virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options); 01265 virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options); 01266 01274 virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options); 01275 01276 01285 virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01286 virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01287 01298 virtual const char * GetOutputTypesString() = 0; 01299 01308 virtual HOutputHandlerStyle GetOutputStyle() = 0; 01309 01316 virtual const char * GetOutputDefaultHSRA(); 01317 01321 const char * GetOutputProgress(); 01322 01326 float GetOutputPercentProgress(); 01327 01331 const __wchar_t * GetOutputInformation(); 01332 01339 HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback); 01340 01341 01348 HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 01349 01356 HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback); 01357 01359 void ReportOutputProgress(const char * progress); 01360 01362 void ReportOutputPercentProgress(float percent_progress); 01363 01365 void ReportOutputInformation(const char * information); 01366 01367 01368 void SetModuleDirectory(const char *module_directory); 01369 void SetModuleDirectory(const __wchar_t *module_directory); 01370 01371 protected: 01372 01376 void SetStartingOutput(); 01377 01381 void SetFinishedOutput(); 01382 01384 void SetOutputOps(unsigned long ops) {m_OutputOps=ops;}; 01386 unsigned long m_OutputOps; 01387 01388 char *m_module_directory; 01389 private: 01390 01391 char *m_progress; 01392 float m_percent_progress1; 01393 float m_percent_progress2; 01394 __wchar_t *m_information; 01395 struct vlist_s *m_information_list; 01396 HIONoticeCallback *m_progress_callback; 01397 HIOPercentNoticeCallback *m_percent_progress_callback; 01398 HIONoticeCallback *m_information_callback; 01399 }; 01400 01406 class MVO_API HIOManager 01407 { 01408 01409 public: 01410 01411 HIOManager(); 01412 virtual ~HIOManager(); 01413 01423 virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler); 01424 01433 virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler); 01434 01445 virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free); 01446 01451 virtual HInputHandler * GetInputHandler(const char * file_type); 01452 HInputHandler * GetInputHandler(const __wchar_t * file_type); 01453 #ifdef _MSC_VER 01454 HInputHandler * GetInputHandler(const unsigned short * file_type); 01455 #endif 01456 01461 virtual HOutputHandler * GetOutputHandler(const char * file_type); 01462 virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type); 01463 01468 virtual void RegisterHandlers(); 01469 01474 virtual const char * GetInputHandlerTypes(); 01475 01480 virtual const char * GetOutputHandlerTypes(); 01481 01482 01489 virtual HIOConnector * CreateConnector(const char * file_type); 01490 01495 virtual void FreeConnector(HIOConnector * old_connector); 01496 01497 01502 static HIOManager *GetCurrentHIOManager(); 01503 01509 static void GetFileOutputResultString(HFileOutputResult result, char *result_str); 01510 01511 protected: 01512 01514 struct vhash_s * input_handlers; 01515 01517 struct vhash_s * output_handlers; 01518 01520 struct vhash_s * connector_procs; 01521 01523 struct vlist_s * owned_input_handlers; 01524 01526 struct vlist_s * owned_output_handlers; 01527 01529 struct vlist_s * loaded_input_handlers; 01530 01532 struct vlist_s * loaded_output_handlers; 01533 01535 struct vhash_s * created_connectors; 01536 01537 char * m_input_types; 01538 int m_input_types_allocated; 01539 01540 char * m_output_types; 01541 int m_output_types_allocated; 01542 }; 01543 01544 #ifdef H_PACK_8 01545 #pragma pack(pop) 01546 #endif 01547 01548 #endif 01549