00001 // Copyright (c) 1998-2014 by Tech Soft 3D, Inc. 00002 // 00003 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., 00004 // and considered a trade secret as defined under civil and criminal statutes. 00005 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of 00006 // unauthorized use or misappropriation of its trade secrets. Use of this information 00007 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under 00008 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use. 00009 00016 #ifndef _HIOMANAGER_H 00017 #define _HIOMANAGER_H 00018 00019 #ifdef H_PACK_8 00020 #pragma pack(push) 00021 #pragma pack(8) 00022 #endif 00023 00024 #include "HTools.h" 00025 00026 00027 // forwards 00028 enum HFileOutputResult; 00029 class HPDFOptions; 00030 class HBaseView; 00031 class HCamera; 00032 class HBaseModel; 00033 struct vlist_s; 00034 class HStreamFileToolkit; 00035 class HBhvBehaviorManager; 00036 class BREP_Topology; 00037 00038 enum H_OUTPUT_TYPE 00039 { 00040 H_OUTPUT_TYPE_DEFAULT = 0, 00041 H_PDF_OUTPUT_PORTFOLIO, 00042 H_PDF_OUTPUT_3D, 00043 H_PDF_OUTPUT_2D, 00044 H_SINGLE_PASS_ZSORT, 00045 H_SINGLE_PASS_NO_HIDDEN_SURFACES 00046 }; 00047 00048 00052 #define HInputOpNone (1UL<<0) 00053 00057 #define HInputOpFileInputByKey (1UL<<1) 00058 00062 #define HInputOpFileInputToImageKey (1UL<<2) 00063 00067 #define HOutputOpNone (1UL<<0) 00068 00072 #define HOutputOpFileOutputByKey (1UL<<1) 00073 00077 #define HOutputOpFileOutputFromImageKey (1UL<<2) 00078 00079 00084 #define HIORegisterInputType(type,input_object) HIOManager::GetCurrentHIOManager()->RegisterInputHandler(type, input_object); 00085 00086 00087 00089 #define HIORegisterOutputType(type,output_object) HIOManager::GetCurrentHIOManager()->RegisterOutputHandler(type, output_object); 00090 00091 00092 00093 00098 class MVO_API HIONoticeCallback 00099 { 00100 public: 00101 00102 virtual ~HIONoticeCallback() {} 00107 virtual void Notice(const char * notice) = 0; 00108 virtual void Notice(const __wchar_t * notice) { 00109 UNREFERENCED(notice); 00110 } 00111 #ifdef H_USHORT_OVERLOAD 00112 virtual void Notice(const unsigned short * notice) { 00113 Notice((__wchar_t const *) notice); 00114 } 00115 #endif 00116 }; 00117 00121 class MVO_API HIOPercentNoticeCallback 00122 { 00123 public: 00124 virtual ~HIOPercentNoticeCallback(); 00129 virtual void Notice(float notice) =0; 00130 }; 00131 00132 00133 00136 typedef void * (*HIO_CREATE_FREE_FUNCTION)(void *); 00137 00140 typedef void (*HIO_FREE_CONNECTOR_FUNCTION)(void *); 00141 00147 class MVO_API HIOConnector 00148 { 00149 public: 00150 00151 /*Constructs an HIOConnector object.*/ 00152 HIOConnector(); 00153 virtual ~HIOConnector(); 00154 00162 virtual HC_KEY GetHoopsEntity(void * pKernelEntity); 00163 virtual HC_KEY GetHoopsEntity(void * pKernelEntity, HC_KEY modelKey); 00164 00172 virtual void * GetKernelEntity(HC_KEY key); 00173 virtual void * GetKernelEntity(HC_KEY key, HC_KEY modelKey); 00174 00181 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList); 00182 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList, HC_KEY modelKey); 00183 00190 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList); 00191 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList, HC_KEY modelKey); 00192 00198 virtual void AddConnection(HC_KEY key, void* pKernelEntity); 00199 virtual void AddConnection(HC_KEY key, void* pKernelEntity, HC_KEY modelKey); 00200 00201 00208 virtual void OptimizeTree(const char * segname, const char * option_string); 00209 00210 protected: 00211 00213 struct vhash_s *mhash_Hoops2Kernel; 00214 00216 struct vhash_s *mhash_Kernel2Hoops; 00217 00218 }; 00219 00224 enum HInputHandlerStyle { 00225 HInputHandlerStyleModel, 00226 HInputHandlerStyleImage 00227 }; 00228 00233 enum HDwgViewVector { 00234 DwgTopView, 00235 DwgIsoView, 00236 DwgViewportInherit, 00237 DwgSceneInherit 00238 }; 00239 00245 class MVO_API HInputHandlerOptions 00246 { 00247 public: 00248 00250 HInputHandlerOptions() { 00251 m_z_separation = 1; 00252 m_depth_range = 0; 00253 m_pHBaseView = 0; 00254 m_pImageName = 0; 00255 m_pImageFormat = 0; 00256 m_pConnector = 0; 00257 m_pExtendedData = 0; 00258 m_bLocal = false; 00259 m_tk = 0; 00260 m_bLogging = false; 00261 00262 00263 // Generic options used in DGN, SKP and DWG importer 00264 m_bIgnoreOffEntities = false; 00265 00266 //DWG/SKP option 00267 m_bImportMetadata = false; 00268 00269 // DWG import options (try and move them somewhere else) 00270 m_bInputViaHSF = false; 00271 m_Deviation = 10.0; 00272 m_bImportWireframeForBrep = false; 00273 m_numIsolines = 0; 00274 m_listRegAppNames = 0; 00275 m_listEntityType = 0; 00276 m_bForceReimport = false; 00277 m_listDWGLayouts = 0; 00278 m_bAttachDWGHandles = false; 00279 m_bImportAllLayouts = false; 00280 m_bDWGInsertMeshesAsShells = false; 00281 m_bDisableDWGDrawOrder = false; 00282 m_eDwgViewVector = DwgViewportInherit; 00283 m_sDwgContrastColorRgb = HPoint(0, 0, 0); 00284 m_bLegacyOptimize = false; 00285 m_bDwgDepthRangeDrawOrder = false; 00286 00287 // DGN import Options 00288 m_iDGNCellHeaderOption = SINGLE_ENTITY_CELLHEADER; 00289 m_coneFactor = 10.0; 00290 m_factorForSmartSolids = 45.0; 00291 m_bDGNRebaselineModel = false; 00292 m_bDGNImportAllModels = false; 00293 00294 // PRC options 00295 m_pPRCPMIConnector = 0; 00296 m_pPRCTopologyManager = 0; 00297 m_bPRCMergeFaces = false; 00298 m_bPRCImportNonBrepFaces = true; 00299 m_bPRCCreatePRCFileOnly = false; 00300 m_bPRCInstanceShells = true; 00301 m_bPRCCalculatePhysicalProperties = false; 00302 m_pPRCMultiModelSelectionCallback = 0; 00303 m_pPRCAsmModelFile = 0; 00304 m_pPRCDeleteModelFile = false; 00305 m_bPRCStoreUserAttributes = true; 00306 m_pPRCDeleteModelCallback = 0; 00307 m_bPRCImportHiddenObjects = false; 00308 00309 // DWF import options 00310 m_bDisableDWFDrawOrder = false; 00311 m_bDWFRebaselineModel = true; 00312 m_bImportThumbnail = false; 00313 00314 //SKP optimization option 00315 m_bOptimizeSegmentTree = false; 00316 m_license = 0; 00317 00318 m_pOOCNodeDeltas = 0; 00319 m_bOOCAutoUpdate = true; 00320 m_bOOCAutoCleanup = true; 00321 } 00322 00325 HInputHandlerOptions(HInputHandlerOptions const * o) { 00326 m_z_separation = o->m_z_separation; 00327 m_depth_range = o->m_depth_range; 00328 m_pHBaseView = o->m_pHBaseView; 00329 m_pImageName = o->m_pImageName; 00330 m_pImageFormat = o->m_pImageFormat; 00331 m_pConnector = o->m_pConnector; 00332 m_pExtendedData = o->m_pExtendedData; 00333 m_bLocal = o->m_bLocal; 00334 00335 m_license = o->m_license; 00336 00337 //DWG/DGN/SKP option 00338 m_bIgnoreOffEntities = o->m_bIgnoreOffEntities; 00339 00340 //DWG/SKP option 00341 m_bImportMetadata = o->m_bImportMetadata; 00342 00343 00344 //DWG Options 00345 m_bInputViaHSF = o->m_bInputViaHSF; 00346 m_Deviation = o->m_Deviation; 00347 m_bImportWireframeForBrep = o->m_bImportWireframeForBrep; 00348 m_numIsolines = o->m_numIsolines; 00349 m_listRegAppNames = o->m_listRegAppNames; 00350 m_listEntityType=o->m_listEntityType; 00351 m_bForceReimport = o->m_bForceReimport; 00352 m_listDWGLayouts = o->m_listDWGLayouts; 00353 m_bAttachDWGHandles = o->m_bAttachDWGHandles; 00354 m_bImportAllLayouts = o->m_bImportAllLayouts; 00355 m_bDWGInsertMeshesAsShells = o->m_bDWGInsertMeshesAsShells; 00356 m_bDisableDWGDrawOrder = o->m_bDisableDWGDrawOrder; 00357 m_eDwgViewVector = o->m_eDwgViewVector; 00358 m_sDwgContrastColorRgb = o->m_sDwgContrastColorRgb; 00359 m_bLegacyOptimize = o->m_bLegacyOptimize; 00360 m_bDwgDepthRangeDrawOrder = o->m_bDwgDepthRangeDrawOrder; 00361 00362 //DGN Options 00363 m_iDGNCellHeaderOption = o->m_iDGNCellHeaderOption; 00364 m_bDGNRebaselineModel = o->m_bDGNRebaselineModel; 00365 m_coneFactor = o->m_coneFactor; 00366 m_factorForSmartSolids = o->m_factorForSmartSolids; 00367 m_bDGNImportAllModels = o->m_bDGNImportAllModels; 00368 00369 // PRC options 00370 m_pPRCPMIConnector = o->m_pPRCPMIConnector; 00371 m_pPRCTopologyManager = o->m_pPRCTopologyManager; 00372 m_bPRCMergeFaces = o->m_bPRCMergeFaces; 00373 m_bPRCImportNonBrepFaces = o->m_bPRCImportNonBrepFaces; 00374 00375 m_bPRCCreatePRCFileOnly = o->m_bPRCCreatePRCFileOnly; 00376 m_bPRCInstanceShells = o->m_bPRCInstanceShells; 00377 m_bPRCCalculatePhysicalProperties = o->m_bPRCCalculatePhysicalProperties; 00378 m_pPRCMultiModelSelectionCallback = o->m_pPRCMultiModelSelectionCallback; 00379 m_pPRCAsmModelFile = o->m_pPRCAsmModelFile; 00380 m_pPRCDeleteModelFile = o->m_pPRCDeleteModelFile; 00381 m_pPRCDeleteModelCallback = o->m_pPRCDeleteModelCallback; 00382 m_bPRCImportHiddenObjects = o->m_bPRCImportHiddenObjects; 00383 00384 00385 // DWF import options 00386 m_bDisableDWFDrawOrder = o->m_bDisableDWFDrawOrder; 00387 m_bDWFRebaselineModel = o->m_bDWFRebaselineModel; 00388 m_bImportThumbnail = o->m_bImportThumbnail; 00389 00390 00391 //SKP import option 00392 m_bOptimizeSegmentTree = o->m_bOptimizeSegmentTree; 00393 00394 m_pOOCNodeDeltas = o->m_pOOCNodeDeltas; 00395 m_bOOCAutoUpdate = o->m_bOOCAutoUpdate; 00396 m_bOOCAutoCleanup = o->m_bOOCAutoCleanup; 00397 } 00398 00401 HInputHandlerOptions(const HInputHandlerOptions &o) { 00402 m_z_separation = o.m_z_separation; 00403 m_depth_range = o.m_depth_range; 00404 m_pHBaseView = o.m_pHBaseView; 00405 m_pImageName = o.m_pImageName; 00406 m_pImageFormat = o.m_pImageFormat; 00407 m_pConnector = o.m_pConnector; 00408 m_pExtendedData = o.m_pExtendedData; 00409 m_bLocal = o.m_bLocal; 00410 00411 //DWG/DGN/SKP option 00412 m_bIgnoreOffEntities = o.m_bIgnoreOffEntities; 00413 00414 //DWG/SKP option 00415 m_bImportMetadata = o.m_bImportMetadata; 00416 00417 //DWG options 00418 m_bInputViaHSF = o.m_bInputViaHSF; 00419 m_Deviation = o.m_Deviation; 00420 m_bImportWireframeForBrep = o.m_bImportWireframeForBrep; 00421 m_numIsolines = o.m_numIsolines; 00422 m_listRegAppNames = o.m_listRegAppNames; 00423 m_listEntityType = o.m_listEntityType; 00424 m_bForceReimport = o.m_bForceReimport; 00425 m_listDWGLayouts = o.m_listDWGLayouts; 00426 m_bAttachDWGHandles = o.m_bAttachDWGHandles; 00427 m_bImportAllLayouts = o.m_bImportAllLayouts; 00428 m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells; 00429 m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder; 00430 m_eDwgViewVector = o.m_eDwgViewVector; 00431 m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb; 00432 m_bLegacyOptimize = o.m_bLegacyOptimize; 00433 m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder; 00434 00435 //DGN options 00436 m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption; 00437 m_bDGNRebaselineModel = o.m_bDGNRebaselineModel; 00438 m_coneFactor = o.m_coneFactor; 00439 m_factorForSmartSolids = o.m_factorForSmartSolids; 00440 m_bDGNImportAllModels = o.m_bDGNImportAllModels; 00441 00442 // PRC options 00443 m_pPRCPMIConnector = o.m_pPRCPMIConnector; 00444 m_pPRCTopologyManager = o.m_pPRCTopologyManager; 00445 m_bPRCMergeFaces = o.m_bPRCMergeFaces; 00446 m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces; 00447 m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly; 00448 m_bPRCInstanceShells = o.m_bPRCInstanceShells; 00449 m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties; 00450 m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback; 00451 m_pPRCAsmModelFile = o.m_pPRCAsmModelFile; 00452 m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile; 00453 m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects; 00454 00455 // DWF import options 00456 m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder; 00457 m_bDWFRebaselineModel = o.m_bDWFRebaselineModel; 00458 m_bImportThumbnail = o.m_bImportThumbnail; 00459 00460 00461 //SKP import option 00462 m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree; 00463 00464 m_pOOCNodeDeltas = o.m_pOOCNodeDeltas; 00465 m_bOOCAutoUpdate = o.m_bOOCAutoUpdate; 00466 m_bOOCAutoCleanup = o.m_bOOCAutoCleanup; 00467 } 00468 00469 virtual ~HInputHandlerOptions(); 00470 00472 HBaseView * m_pHBaseView; 00473 00475 const char * m_pImageName; 00476 00478 const char * m_pImageFormat; 00479 00481 bool m_bLocal; 00482 00484 HStreamFileToolkit * m_tk; 00485 00487 bool m_bLogging; 00488 00490 HIOConnector * m_pConnector; 00491 00493 void * m_pExtendedData; 00494 00496 bool m_bInputViaHSF; 00497 00499 double m_Deviation; 00500 00502 bool m_bImportMetadata; 00503 00505 const char *m_license; 00506 00507 00508 00509 00513 struct vlist_s * m_listRegAppNames; 00514 00516 struct vlist_s * m_listEntityType; 00517 00519 bool m_bImportWireframeForBrep; 00520 00522 double m_numIsolines; 00523 00525 bool m_bForceReimport; 00526 00531 bool m_bDisableDWGDrawOrder; 00532 00534 struct vlist_s * m_listDWGLayouts; 00535 00537 bool m_bIgnoreOffEntities; 00538 00542 double m_coneFactor; 00543 00547 double m_factorForSmartSolids; 00548 00550 bool m_bAttachDWGHandles; 00551 00553 int m_iDGNCellHeaderOption; 00554 00555 00556 00560 enum { 00561 SINGLE_ENTITY_CELLHEADER, 00562 BREAK_CELLHEADER, 00563 OPT_CELLHEADER 00564 }; 00565 00567 void *m_pPRCAsmModelFile; 00568 00570 bool m_pPRCDeleteModelFile; 00571 00573 HIOConnector * m_pPRCPMIConnector; 00575 BREP_Topology * m_pPRCTopologyManager; 00577 bool m_bPRCMergeFaces; 00578 bool m_bPRCImportNonBrepFaces; 00579 00581 bool m_bPRCCreatePRCFileOnly; 00582 bool m_bPRCInstanceShells; 00583 00584 bool m_bPRCCalculatePhysicalProperties; 00586 void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const ** in_configs, 00587 int & out_config_selection); 00589 bool m_bPRCStoreUserAttributes; 00591 void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile); 00593 bool m_bPRCImportHiddenObjects; 00594 00595 00598 bool m_bImportAllLayouts; 00599 00601 bool m_bDGNRebaselineModel; 00602 00604 bool m_bDGNImportAllModels; 00605 00609 bool m_bDWGInsertMeshesAsShells; 00610 00611 // DWF import options 00616 bool m_bDisableDWFDrawOrder; 00617 00619 bool m_bImportThumbnail; 00620 00622 bool m_bDWFRebaselineModel; 00623 00625 bool m_bOptimizeSegmentTree; 00626 00632 HDwgViewVector m_eDwgViewVector; 00633 00640 HPoint m_sDwgContrastColorRgb; 00641 00648 bool m_bLegacyOptimize; 00649 00656 bool m_bDwgDepthRangeDrawOrder; 00657 00662 double m_z_separation; 00663 00668 double m_depth_range; 00669 00671 void * m_pOOCNodeDeltas; 00672 00674 bool m_bOOCAutoUpdate; 00675 00677 bool m_bOOCAutoCleanup; 00678 }; 00679 00680 00681 00683 00689 class MVO_API HInputHandler 00690 { 00691 00692 public: 00700 HInputHandler(); 00701 virtual ~HInputHandler(); 00702 00707 unsigned long GetInputOps() {return m_InputOps;}; 00708 00709 00712 virtual const char * GetInputName() = 0; 00713 00714 00721 virtual void RegisterInputHandlerTypes() = 0; 00722 00729 virtual HInputHandlerStyle GetInputStyle() = 0; 00730 00738 virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options); 00739 virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options); 00740 00741 00750 virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options); 00751 00762 virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00763 virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00764 00765 00775 virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00776 00789 virtual const char * GetInputTypesString() = 0; 00790 00794 const __wchar_t * GetInputProgress(); 00795 00799 float GetInputPercentProgress(); 00800 00804 const __wchar_t * GetInputInformation(); 00805 00812 HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback); 00813 00814 00821 HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 00822 00829 HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback); 00830 00832 void ReportInputProgress(const char * progress); 00833 void ReportInputProgress(const __wchar_t * progress); 00834 00836 void ReportInputPercentProgress(float percent_progress); 00837 00839 void ReportInputInformation(const char * information); 00840 void ReportInputInformation(const __wchar_t * information); 00841 00842 void SetModuleDirectory(const char *module_directory); 00843 void SetModuleDirectory(const __wchar_t *module_directory); 00844 protected: 00845 00849 void SetStartingInput(const char *filename); 00850 void SetStartingInput(const __wchar_t *filename = 0); 00851 00855 void SetFinishedInput(); 00856 00858 void SetInputOps(unsigned long ops) {m_InputOps=ops;}; 00859 00861 unsigned long m_InputOps; 00862 00863 __wchar_t *m_module_directory; 00864 00865 private: 00866 00867 __wchar_t *m_progress; 00868 float m_percent_progress1; 00869 float m_percent_progress2; 00870 __wchar_t *m_information; 00871 struct vlist_s *m_information_list; 00872 HIONoticeCallback *m_progress_callback; 00873 HIONoticeCallback *m_information_callback; 00874 HIOPercentNoticeCallback *m_percent_progress_callback; 00875 }; 00876 00880 enum HOutputHandlerStyle 00881 { 00882 HOutputHandlerStyleModel, 00883 HOutputHandlerStyleImage, 00884 HOutputHandlerStyleHardcopy, 00885 HOutputHandlerStyleHTML, 00886 HOutputHandlerStyleDontCare 00887 }; 00888 00895 class MVO_API ExportNameMap 00896 { 00897 private: 00898 void * _imp; 00899 public: 00900 ExportNameMap(); 00901 ~ExportNameMap(); 00902 00903 H_FORMAT_TEXT lookup(HC_KEY) const; 00904 void tag(HC_KEY, H_FORMAT_TEXT const &); 00905 }; 00906 00914 enum HPrcBrepCompression { 00915 PrcBrepCompressionNone, 00916 PrcBrepCompressionLow, 00917 PrcBrepCompressionMedium, 00918 PrcBrepCompressionHigh 00919 }; 00920 00926 class MVO_API HOutputHandlerOptions 00927 { 00928 public: 00930 HOutputHandlerOptions(); 00931 00932 virtual char const * GetType() const; 00933 00936 virtual bool PopulateOptions(); 00937 00941 HOutputHandlerOptions(HOutputHandlerOptions const *o) { 00942 Init(o); 00943 }; 00944 00948 HOutputHandlerOptions(const HOutputHandlerOptions &o) { 00949 Init(&o); 00950 }; 00951 00952 00953 virtual ~HOutputHandlerOptions(); 00954 00958 void Init(HOutputHandlerOptions const *o); 00959 00961 HBaseView * m_pHBaseView; 00963 HBaseView * const View() const {return m_pHBaseView;}; 00965 void View(HBaseView * const v) {m_pHBaseView = v;}; 00966 00968 HBaseModel * m_pHBaseModel; 00970 HBaseModel * const Model() const {return m_pHBaseModel;}; 00972 void Model(HBaseModel * const m) {m_pHBaseModel = m;}; 00973 00975 HCamera * m_pCamera; 00977 HCamera * const Camera() const {return m_pCamera;}; 00979 void Camera(HCamera * const c) {m_pCamera = c;}; 00980 00982 HC_KEY m_Key; 00984 HC_KEY const Key() const {return m_Key;}; 00986 void Key(HC_KEY const k) {m_Key = k;}; 00987 00989 char const * m_pHSRAOptions; 00991 char const * const HSRAOptions() const {return m_pHSRAOptions;}; 00993 void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;}; 00994 00996 HPoint const * m_pWindowColor; 00998 HPoint const * const WindowColor() const {return m_pWindowColor;}; 01000 void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;}; 01001 01003 bool m_bUseWindowColor; 01005 bool UseWindowColor() const {return m_bUseWindowColor;}; 01007 void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;}; 01008 01010 float m_Window_Width; 01012 float const WindowWidth() const {return m_Window_Width;}; 01014 void WindowWidth(float const f) {m_Window_Width = f;}; 01015 01017 float m_Window_Height; 01019 float const WindowHeight() const {return m_Window_Height;}; 01021 void WindowHeight(float const f) {m_Window_Height = f;}; 01022 01024 float m_Paper_Width; 01026 float const PaperWidth() const {return m_Paper_Width;}; 01028 void PaperWidth(float const f) {m_Paper_Width = f;}; 01029 01031 float m_Paper_Height; 01033 float const PaperHeight() const {return m_Paper_Height;}; 01035 void PaperHeight(float const f) {m_Paper_Height = f;}; 01036 01038 bool m_ForceGrayscale; 01040 bool ForceGrayscale() const {return m_ForceGrayscale;}; 01042 void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;}; 01043 01045 size_t m_lineFuseThreshold; 01046 01050 size_t LineFuseThreshold() const {return m_lineFuseThreshold;}; 01051 01055 void LineFuseThreshold(size_t const tf) {m_lineFuseThreshold = tf;}; 01056 01058 bool m_bFastPrint; 01060 bool FastPrint() const {return m_bFastPrint;}; 01062 void FastPrint(bool const tf) {m_bFastPrint = tf;}; 01063 01065 bool m_bConserveMemory; 01067 bool ConserveMemory() const {return m_bConserveMemory;}; 01069 void ConserveMemory(bool const tf) {m_bConserveMemory = tf;}; 01070 01071 bool m_bWriteAnimations; 01072 bool WriteAnimations() const {return m_bWriteAnimations;}; 01073 void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;}; 01074 01076 bool m_bWindowFrame; 01078 bool WindowFrame() const {return m_bWindowFrame;}; 01080 void WindowFrame(bool const tf) {m_bWindowFrame = tf;}; 01081 01083 bool m_bUseSubscreen; 01085 bool UseSubscreen() const {return m_bUseSubscreen;}; 01087 void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;}; 01088 01090 int m_Image_Dpi; 01092 int const ImageDpi() const {return m_Image_Dpi;}; 01094 void ImageDpi(int const dpi) {m_Image_Dpi = dpi;}; 01095 01097 int m_Paper_Dpi; 01099 int const PaperDpi() const {return m_Paper_Dpi;}; 01101 void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;}; 01102 01104 void * m_pExtendedData; 01105 void * const ExtendedData() const {return m_pExtendedData;}; 01106 void ExtendedData(void * const vp) {m_pExtendedData = vp;}; 01107 void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;}; 01108 01109 bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;}; 01110 void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;}; 01111 float const AnnotLeft() const {return m_fAnnotLeft;}; 01112 void AnnotLeft(float f) {m_fAnnotLeft = f;}; 01113 float const AnnotRight() const {return m_fAnnotRight;}; 01114 void AnnotRight(float f) {m_fAnnotRight = f;}; 01115 float const AnnotBottom() const {return m_fAnnotBottom;}; 01116 void AnnotBottom(float f) {m_fAnnotBottom = f;}; 01117 float const AnnotTop() const {return m_fAnnotTop;}; 01118 void AnnotTop(float f) {m_fAnnotTop = f;}; 01119 01120 01122 const char *m_license; 01123 01124 int m_antialiasLevel; 01125 int m_jpeg_quality; 01126 unsigned char* m_imageOutputBuffer; 01127 size_t m_imageOutputBufferSize; 01128 01129 01130 01131 01133 int m_Version; 01134 int const Version() const {return m_Version;}; 01135 void Version(int const v) {m_Version = v;}; 01136 01138 H_OUTPUT_TYPE m_OutputType; 01140 H_OUTPUT_TYPE OutputType() const {return m_OutputType;}; 01142 void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;}; 01143 01145 bool m_b3dOutput; 01147 bool Output3d() const {return m_b3dOutput;}; 01149 void Output3d(bool const tf) {m_b3dOutput = tf;}; 01150 01152 bool m_bAscii; 01154 bool Ascii() const {return m_bAscii;}; 01156 void Ascii(bool const tf) {m_bAscii = tf;}; 01157 01159 bool m_bStlNormals; 01161 bool StlNormals() const {return m_bStlNormals;}; 01163 void StlNormals(bool const tf) {m_bStlNormals = tf;}; 01164 01166 double m_ratio_cm_to_internal_units; 01167 01171 double PrintToScale() const {return m_ratio_cm_to_internal_units;}; 01172 01188 void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;}; 01189 01196 float m_PageMargins[4]; 01197 01199 HBhvBehaviorManager * m_pBehaviorManager; 01200 01202 char const* m_pDWFModelName; 01203 01205 ExportNameMap m_names; 01206 01208 void *m_pPRCAsmModelFile; 01209 01211 bool m_bActivateOnPageOpen; 01212 01214 float m_fAnnotLeft; 01215 01217 float m_fAnnotRight; 01218 01220 float m_fAnnotBottom; 01221 01223 float m_fAnnotTop; 01224 01226 HPrcBrepCompression m_ePrcBrepCompression; 01227 01229 bool m_bPrcCompressTessellation; 01230 01232 bool m_bAVIShowCompressionDialog; 01233 01242 char m_bAVICodec[4]; 01243 01245 bool m_bExporting2DDwf; 01246 }; 01247 01248 01250 01256 class MVO_API HOutputHandler 01257 { 01258 01259 public: 01267 HOutputHandler(); 01268 virtual ~HOutputHandler(); 01269 01270 01273 virtual const char * GetOutputName() = 0; 01274 01279 unsigned long GetOutputOps() {return m_OutputOps;}; 01280 01291 virtual void RegisterOutputHandlerTypes() = 0; 01292 01293 01301 virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options); 01302 virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options); 01303 01311 virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options); 01312 01313 01322 virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01323 virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01324 01335 virtual const char * GetOutputTypesString() = 0; 01336 01345 virtual HOutputHandlerStyle GetOutputStyle() = 0; 01346 01353 virtual const char * GetOutputDefaultHSRA(); 01354 01358 const char * GetOutputProgress(); 01359 01363 float GetOutputPercentProgress(); 01364 01368 const __wchar_t * GetOutputInformation(); 01369 01376 HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback); 01377 01378 01385 HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 01386 01393 HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback); 01394 01396 void ReportOutputProgress(const char * progress); 01397 01399 void ReportOutputPercentProgress(float percent_progress); 01400 01402 void ReportOutputInformation(const char * information); 01403 01404 01405 void SetModuleDirectory(const char *module_directory); 01406 void SetModuleDirectory(const __wchar_t *module_directory); 01407 01408 protected: 01409 01413 void SetStartingOutput(); 01414 01418 void SetFinishedOutput(); 01419 01421 void SetOutputOps(unsigned long ops) {m_OutputOps=ops;}; 01423 unsigned long m_OutputOps; 01424 01425 char *m_module_directory; 01426 private: 01427 01428 char *m_progress; 01429 float m_percent_progress1; 01430 float m_percent_progress2; 01431 __wchar_t *m_information; 01432 struct vlist_s *m_information_list; 01433 HIONoticeCallback *m_progress_callback; 01434 HIOPercentNoticeCallback *m_percent_progress_callback; 01435 HIONoticeCallback *m_information_callback; 01436 }; 01437 01443 class MVO_API HIOManager 01444 { 01445 01446 public: 01447 01448 HIOManager(); 01449 virtual ~HIOManager(); 01450 01460 virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler); 01461 01470 virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler); 01471 01482 virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free); 01483 01488 virtual HInputHandler * GetInputHandler(const char * file_type); 01489 HInputHandler * GetInputHandler(const __wchar_t * file_type); 01490 #ifdef _MSC_VER 01491 HInputHandler * GetInputHandler(const unsigned short * file_type); 01492 #endif 01493 01498 virtual HOutputHandler * GetOutputHandler(const char * file_type); 01499 virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type); 01500 01505 virtual void RegisterHandlers(); 01506 01511 virtual const char * GetInputHandlerTypes(); 01512 01517 virtual const char * GetOutputHandlerTypes(); 01518 01519 01526 virtual HIOConnector * CreateConnector(const char * file_type); 01527 01532 virtual void FreeConnector(HIOConnector * old_connector); 01533 01534 01539 static HIOManager *GetCurrentHIOManager(); 01540 01546 static void GetFileOutputResultString(HFileOutputResult result, char *result_str); 01547 01548 protected: 01549 01551 struct vhash_s * input_handlers; 01552 01554 struct vhash_s * output_handlers; 01555 01557 struct vhash_s * connector_procs; 01558 01560 struct vlist_s * owned_input_handlers; 01561 01563 struct vlist_s * owned_output_handlers; 01564 01566 struct vlist_s * loaded_input_handlers; 01567 01569 struct vlist_s * loaded_output_handlers; 01570 01572 struct vhash_s * created_connectors; 01573 01574 char * m_input_types; 01575 int m_input_types_allocated; 01576 01577 char * m_output_types; 01578 int m_output_types_allocated; 01579 }; 01580 01581 #ifdef H_PACK_8 01582 #pragma pack(pop) 01583 #endif 01584 01585 #endif 01586