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 HBaseView; 00034 class HCamera; 00035 class HBaseModel; 00036 struct vlist_s; 00037 class HStreamFileToolkit; 00038 class HBhvBehaviorManager; 00039 class BREP_Topology; 00040 00041 enum H_OUTPUT_TYPE 00042 { 00043 H_OUTPUT_TYPE_DEFAULT = 0, 00044 H_PDF_OUTPUT_PORTFOLIO, 00045 H_PDF_OUTPUT_3D, 00046 H_PDF_OUTPUT_2D, 00047 H_SINGLE_PASS_ZSORT, 00048 H_SINGLE_PASS_NO_HIDDEN_SURFACES 00049 }; 00050 00051 00055 #define HInputOpNone (1UL<<0) 00056 00060 #define HInputOpFileInputByKey (1UL<<1) 00061 00065 #define HInputOpFileInputToImageKey (1UL<<2) 00066 00070 #define HOutputOpNone (1UL<<0) 00071 00075 #define HOutputOpFileOutputByKey (1UL<<1) 00076 00080 #define HOutputOpFileOutputFromImageKey (1UL<<2) 00081 00082 00087 #define HIORegisterInputType(type,input_object) do {HIOManager::GetCurrentHIOManager()->RegisterInputHandler(type, input_object); }while(0); 00088 00089 00090 00092 #define HIORegisterOutputType(type,output_object) do { HIOManager::GetCurrentHIOManager()->RegisterOutputHandler(type, output_object); }while(0); 00093 00094 00095 00096 00101 class MVO_API HIONoticeCallback 00102 { 00103 public: 00104 00105 virtual ~HIONoticeCallback() {;}; 00110 virtual void Notice(const char * notice) =0; 00111 virtual void Notice(const __wchar_t * notice){ 00112 }; 00113 #ifdef H_USHORT_OVERLOAD 00114 virtual void Notice(const unsigned short * notice){ 00115 Notice((__wchar_t const *) notice); 00116 }; 00117 #endif 00118 }; 00119 00123 class MVO_API HIOPercentNoticeCallback 00124 { 00125 public: 00126 virtual ~HIOPercentNoticeCallback(); 00131 virtual void Notice(float notice) =0; 00132 }; 00133 00134 00135 00138 typedef void * (*HIO_CREATE_FREE_FUNCTION)(void *); 00139 00142 typedef void (*HIO_FREE_CONNECTOR_FUNCTION)(void *); 00143 00149 class MVO_API HIOConnector 00150 { 00151 public: 00152 00153 /*Constructs an HIOConnector object.*/ 00154 HIOConnector(); 00155 virtual ~HIOConnector(); 00156 00164 virtual HC_KEY GetHoopsEntity(void * pKernelEntity); 00165 virtual HC_KEY GetHoopsEntity(void * pKernelEntity, HC_KEY modelKey); 00166 00174 virtual void * GetKernelEntity(HC_KEY key); 00175 virtual void * GetKernelEntity(HC_KEY key, HC_KEY modelKey); 00176 00183 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList); 00184 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList, HC_KEY modelKey); 00185 00192 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList); 00193 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList, HC_KEY modelKey); 00194 00200 virtual void AddConnection(HC_KEY key, void* pKernelEntity); 00201 virtual void AddConnection(HC_KEY key, void* pKernelEntity, HC_KEY modelKey); 00202 00203 00210 virtual void OptimizeTree(const char * segname, const char * option_string); 00211 00212 protected: 00213 00215 struct vhash_s *mhash_Hoops2Kernel; 00216 00218 struct vhash_s *mhash_Kernel2Hoops; 00219 00220 }; 00221 00226 enum HInputHandlerStyle { 00227 HInputHandlerStyleModel, 00228 HInputHandlerStyleImage 00229 }; 00230 00235 enum HDwgViewVector { 00236 DwgTopView, 00237 DwgIsoView, 00238 DwgViewportInherit, 00239 DwgSceneInherit 00240 }; 00241 00247 class MVO_API HInputHandlerOptions 00248 { 00249 public: 00250 00252 HInputHandlerOptions() { 00253 m_z_separation = 1; 00254 m_depth_range = 0; 00255 m_pHBaseView = 0; 00256 m_pImageName = 0; 00257 m_pImageFormat = 0; 00258 m_pConnector = 0; 00259 m_pExtendedData = 0; 00260 m_bLocal = false; 00261 m_tk = 0; 00262 m_bLogging = false; 00263 00264 00265 // Generic options used in DGN, SKP and DWG importer 00266 m_bIgnoreOffEntities = false; 00267 00268 //DWG/SKP option 00269 m_bImportMetadata = false; 00270 00271 // DWG import options (try and move them somewhere else) 00272 m_bInputViaHSF = false; 00273 m_Deviation = 10.0; 00274 m_bImportWireframeForBrep = false; 00275 m_numIsolines = 0; 00276 m_listRegAppNames = 0; 00277 m_listEntityType = 0; 00278 m_bForceReimport = false; 00279 m_listDWGLayouts = 0; 00280 m_bAttachDWGHandles = false; 00281 m_bImportAllLayouts = false; 00282 m_bDWGInsertMeshesAsShells = false; 00283 m_bDisableDWGDrawOrder = false; 00284 m_eDwgViewVector = DwgViewportInherit; 00285 m_sDwgContrastColorRgb = HPoint(0, 0, 0); 00286 m_bLegacyOptimize = false; 00287 m_bDwgDepthRangeDrawOrder = false; 00288 00289 // DGN import Options 00290 m_iDGNCellHeaderOption = SINGLE_ENTITY_CELLHEADER; 00291 m_coneFactor = 10.0; 00292 m_factorForSmartSolids = 45.0; 00293 m_bDGNRebaselineModel = false; 00294 m_bDGNImportAllModels = false; 00295 00296 // PRC options 00297 m_pPRCPMIConnector = 0; 00298 m_pPRCTopologyManager = 0; 00299 m_bPRCMergeFaces = false; 00300 m_bPRCCreatePRCFileOnly = false; 00301 m_bSuppressEarlyOptimization = false; 00302 m_bPMIDetected = false; 00303 m_pPRCMultiModelSelectionCallback = 0; 00304 m_pPRCAsmModelFile = 0; 00305 m_pPRCDeleteModelFile = false; 00306 m_bPRCStoreUserAttributes = true; 00307 m_dPRCMinimumTransparency = 0; 00308 m_bPRCImportHiddenObjects = false; 00309 00310 // DWF import options 00311 m_bDisableDWFDrawOrder = false; 00312 m_bDWFRebaselineModel = true; 00313 m_bImportThumbnail = false; 00314 00315 //SKP optimization option 00316 m_bOptimizeSegmentTree = false; 00317 m_license = 0; 00318 }; 00319 00322 HInputHandlerOptions(HInputHandlerOptions const *o) { 00323 m_z_separation = o->m_z_separation; 00324 m_depth_range = o->m_depth_range; 00325 m_pHBaseView = o->m_pHBaseView; 00326 m_pImageName = o->m_pImageName; 00327 m_pImageFormat = o->m_pImageFormat; 00328 m_pConnector = o->m_pConnector; 00329 m_pExtendedData = o->m_pExtendedData; 00330 m_bLocal = o->m_bLocal; 00331 00332 m_license = o->m_license; 00333 00334 00335 //DWG/DGN/SKP option 00336 m_bIgnoreOffEntities = o->m_bIgnoreOffEntities; 00337 00338 //DWG/SKP option 00339 m_bImportMetadata = o->m_bImportMetadata; 00340 00341 00342 //DWG Options 00343 m_bInputViaHSF = o->m_bInputViaHSF; 00344 m_Deviation = o->m_Deviation; 00345 m_bImportWireframeForBrep = o->m_bImportWireframeForBrep; 00346 m_numIsolines = o->m_numIsolines; 00347 m_listRegAppNames = o->m_listRegAppNames; 00348 m_listEntityType=o->m_listEntityType; 00349 m_bForceReimport = o->m_bForceReimport; 00350 m_listDWGLayouts = o->m_listDWGLayouts; 00351 m_bAttachDWGHandles = o->m_bAttachDWGHandles; 00352 m_bImportAllLayouts = o->m_bImportAllLayouts; 00353 m_bDWGInsertMeshesAsShells = o->m_bDWGInsertMeshesAsShells; 00354 m_bDisableDWGDrawOrder = o->m_bDisableDWGDrawOrder; 00355 m_eDwgViewVector = o->m_eDwgViewVector; 00356 m_sDwgContrastColorRgb = o->m_sDwgContrastColorRgb; 00357 m_bLegacyOptimize = o->m_bLegacyOptimize; 00358 m_bDwgDepthRangeDrawOrder = o->m_bDwgDepthRangeDrawOrder; 00359 00360 //DGN Options 00361 m_iDGNCellHeaderOption = o->m_iDGNCellHeaderOption; 00362 m_bDGNRebaselineModel = o->m_bDGNRebaselineModel; 00363 m_coneFactor = o->m_coneFactor; 00364 m_factorForSmartSolids = o->m_factorForSmartSolids; 00365 m_bDGNImportAllModels = o->m_bDGNImportAllModels; 00366 00367 // PRC options 00368 m_pPRCPMIConnector = o->m_pPRCPMIConnector; 00369 m_pPRCTopologyManager = o->m_pPRCTopologyManager; 00370 m_bPRCMergeFaces = o->m_bPRCMergeFaces; 00371 m_bPRCCreatePRCFileOnly = o->m_bPRCCreatePRCFileOnly; 00372 m_bSuppressEarlyOptimization = o->m_bSuppressEarlyOptimization; 00373 m_bPMIDetected = o->m_bPMIDetected; 00374 m_pPRCMultiModelSelectionCallback = o->m_pPRCMultiModelSelectionCallback; 00375 m_pPRCAsmModelFile = o->m_pPRCAsmModelFile; 00376 m_pPRCDeleteModelFile = o->m_pPRCDeleteModelFile; 00377 m_bPRCStoreUserAttributes = o->m_bPRCStoreUserAttributes; 00378 m_dPRCMinimumTransparency = o->m_dPRCMinimumTransparency; 00379 m_bPRCImportHiddenObjects = o->m_bPRCImportHiddenObjects; 00380 00381 00382 00383 // DWF import options 00384 m_bDisableDWFDrawOrder = o->m_bDisableDWFDrawOrder; 00385 m_bDWFRebaselineModel = o->m_bDWFRebaselineModel; 00386 m_bImportThumbnail = o->m_bImportThumbnail; 00387 00388 00389 //SKP import option 00390 m_bOptimizeSegmentTree = o->m_bOptimizeSegmentTree; 00391 00392 00393 }; 00394 00397 HInputHandlerOptions(const HInputHandlerOptions &o) { 00398 m_z_separation = o.m_z_separation; 00399 m_depth_range = o.m_depth_range; 00400 m_pHBaseView = o.m_pHBaseView; 00401 m_pImageName = o.m_pImageName; 00402 m_pImageFormat = o.m_pImageFormat; 00403 m_pConnector = o.m_pConnector; 00404 m_pExtendedData = o.m_pExtendedData; 00405 m_bLocal = o.m_bLocal; 00406 00407 //DWG/DGN/SKP option 00408 m_bIgnoreOffEntities = o.m_bIgnoreOffEntities; 00409 00410 //DWG/SKP option 00411 m_bImportMetadata = o.m_bImportMetadata; 00412 00413 //DWG options 00414 m_bInputViaHSF = o.m_bInputViaHSF; 00415 m_Deviation = o.m_Deviation; 00416 m_bImportWireframeForBrep = o.m_bImportWireframeForBrep; 00417 m_numIsolines = o.m_numIsolines; 00418 m_listRegAppNames = o.m_listRegAppNames; 00419 m_listEntityType = o.m_listEntityType; 00420 m_bForceReimport = o.m_bForceReimport; 00421 m_listDWGLayouts = o.m_listDWGLayouts; 00422 m_bAttachDWGHandles = o.m_bAttachDWGHandles; 00423 m_bImportAllLayouts = o.m_bImportAllLayouts; 00424 m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells; 00425 m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder; 00426 m_eDwgViewVector = o.m_eDwgViewVector; 00427 m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb; 00428 m_bLegacyOptimize = o.m_bLegacyOptimize; 00429 m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder; 00430 00431 //DGN options 00432 m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption; 00433 m_bDGNRebaselineModel = o.m_bDGNRebaselineModel; 00434 m_coneFactor = o.m_coneFactor; 00435 m_factorForSmartSolids = o.m_factorForSmartSolids; 00436 m_bDGNImportAllModels = o.m_bDGNImportAllModels; 00437 00438 // PRC options 00439 m_pPRCPMIConnector = o.m_pPRCPMIConnector; 00440 m_pPRCTopologyManager = o.m_pPRCTopologyManager; 00441 m_bPRCMergeFaces = o.m_bPRCMergeFaces; 00442 m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly; 00443 m_bSuppressEarlyOptimization = o.m_bSuppressEarlyOptimization; 00444 m_bPMIDetected = o.m_bPMIDetected; 00445 m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback; 00446 m_pPRCAsmModelFile = o.m_pPRCAsmModelFile; 00447 m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile; 00448 m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects; 00449 00450 // DWF import options 00451 m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder; 00452 m_bDWFRebaselineModel = o.m_bDWFRebaselineModel; 00453 m_bImportThumbnail = o.m_bImportThumbnail; 00454 00455 00456 //SKP import option 00457 m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree; 00458 00459 }; 00460 00461 virtual ~HInputHandlerOptions(); 00462 00464 HBaseView * m_pHBaseView; 00465 00467 const char * m_pImageName; 00468 00470 const char * m_pImageFormat; 00471 00473 bool m_bLocal; 00474 00476 HStreamFileToolkit * m_tk; 00477 00479 bool m_bLogging; 00480 00482 HIOConnector * m_pConnector; 00483 00485 void * m_pExtendedData; 00486 00488 bool m_bInputViaHSF; 00489 00491 double m_Deviation; 00492 00494 bool m_bImportMetadata; 00495 00497 const char *m_license; 00498 00502 struct vlist_s * m_listRegAppNames; 00503 00505 struct vlist_s * m_listEntityType; 00506 00508 bool m_bImportWireframeForBrep; 00509 00511 double m_numIsolines; 00512 00514 bool m_bForceReimport; 00515 00520 bool m_bDisableDWGDrawOrder; 00521 00523 struct vlist_s * m_listDWGLayouts; 00524 00526 bool m_bIgnoreOffEntities; 00527 00531 double m_coneFactor; 00532 00536 double m_factorForSmartSolids; 00537 00539 bool m_bAttachDWGHandles; 00540 00542 int m_iDGNCellHeaderOption; 00543 00544 00545 00549 enum { 00550 SINGLE_ENTITY_CELLHEADER, 00551 BREAK_CELLHEADER, 00552 OPT_CELLHEADER 00553 }; 00554 00556 void *m_pPRCAsmModelFile; 00557 00559 bool m_pPRCDeleteModelFile; 00560 00562 HIOConnector * m_pPRCPMIConnector; 00564 BREP_Topology * m_pPRCTopologyManager; 00566 bool m_bPRCMergeFaces; 00568 bool m_bPRCCreatePRCFileOnly; 00570 void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const ** in_configs, 00571 int & out_config_selection); 00573 bool m_bPRCStoreUserAttributes; 00575 double m_dPRCMinimumTransparency; 00577 bool m_bPRCImportHiddenObjects; 00578 00579 bool m_bSuppressEarlyOptimization; 00580 bool m_bPMIDetected; 00581 00582 00585 bool m_bImportAllLayouts; 00586 00588 bool m_bDGNRebaselineModel; 00589 00591 bool m_bDGNImportAllModels; 00592 00596 bool m_bDWGInsertMeshesAsShells; 00597 00598 // DWF import options 00603 bool m_bDisableDWFDrawOrder; 00604 00606 bool m_bImportThumbnail; 00607 00609 bool m_bDWFRebaselineModel; 00610 00612 bool m_bOptimizeSegmentTree; 00613 00619 HDwgViewVector m_eDwgViewVector; 00620 00627 HPoint m_sDwgContrastColorRgb; 00628 00635 bool m_bLegacyOptimize; 00636 00643 bool m_bDwgDepthRangeDrawOrder; 00644 00649 double m_z_separation; 00650 00655 double m_depth_range; 00656 }; 00657 00658 00659 00661 00667 class MVO_API HInputHandler 00668 { 00669 00670 public: 00678 HInputHandler(); 00679 virtual ~HInputHandler(); 00680 00685 unsigned long GetInputOps() {return m_InputOps;}; 00686 00687 00690 virtual const char * GetInputName() = 0; 00691 00692 00699 virtual void RegisterInputHandlerTypes() = 0; 00700 00707 virtual HInputHandlerStyle GetInputStyle() = 0; 00708 00716 virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options); 00717 virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options); 00718 00719 00728 virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options); 00729 00740 virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00741 virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00742 00743 00753 virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00754 00767 virtual const char * GetInputTypesString() = 0; 00768 00772 const __wchar_t * GetInputProgress(); 00773 00777 float GetInputPercentProgress(); 00778 00782 const __wchar_t * GetInputInformation(); 00783 00790 HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback); 00791 00792 00799 HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 00800 00807 HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback); 00808 00810 void ReportInputProgress(const char * progress); 00811 void ReportInputProgress(const __wchar_t * progress); 00812 00814 void ReportInputPercentProgress(float percent_progress); 00815 00817 void ReportInputInformation(const char * information); 00818 void ReportInputInformation(const __wchar_t * information); 00819 00820 void SetModuleDirectory(const char *module_directory); 00821 void SetModuleDirectory(const __wchar_t *module_directory); 00822 protected: 00823 00827 void SetStartingInput(const char *filename); 00828 void SetStartingInput(const __wchar_t *filename = 0); 00829 00833 void SetFinishedInput(); 00834 00836 void SetInputOps(unsigned long ops) {m_InputOps=ops;}; 00837 00839 unsigned long m_InputOps; 00840 00841 __wchar_t *m_module_directory; 00842 00843 private: 00844 00845 __wchar_t *m_progress; 00846 float m_percent_progress1; 00847 float m_percent_progress2; 00848 __wchar_t *m_information; 00849 struct vlist_s *m_information_list; 00850 HIONoticeCallback *m_progress_callback; 00851 HIONoticeCallback *m_information_callback; 00852 HIOPercentNoticeCallback *m_percent_progress_callback; 00853 }; 00854 00858 enum HOutputHandlerStyle 00859 { 00860 HOutputHandlerStyleModel, 00861 HOutputHandlerStyleImage, 00862 HOutputHandlerStyleHardcopy, 00863 HOutputHandlerStyleHTML, 00864 HOutputHandlerStyleDontCare 00865 }; 00866 00873 class MVO_API ExportNameMap 00874 { 00875 private: 00876 void * _imp; 00877 public: 00878 ExportNameMap(); 00879 ~ExportNameMap(); 00880 00881 H_FORMAT_TEXT lookup(HC_KEY) const; 00882 void tag(HC_KEY, H_FORMAT_TEXT const &); 00883 }; 00884 00892 enum HPrcBrepCompression { 00893 PrcBrepCompressionNone, 00894 PrcBrepCompressionLow, 00895 PrcBrepCompressionMedium, 00896 PrcBrepCompressionHigh 00897 }; 00898 00904 class MVO_API HOutputHandlerOptions 00905 { 00906 public: 00908 HOutputHandlerOptions(); 00909 00910 virtual char const * GetType() const; 00911 00914 virtual bool PopulateOptions(); 00915 00919 HOutputHandlerOptions(HOutputHandlerOptions const *o) { 00920 Init(o); 00921 }; 00922 00926 HOutputHandlerOptions(const HOutputHandlerOptions &o) { 00927 Init(&o); 00928 }; 00929 00930 00931 virtual ~HOutputHandlerOptions(); 00932 00936 void Init(HOutputHandlerOptions const *o); 00937 00939 HBaseView * m_pHBaseView; 00941 HBaseView * const View() const {return m_pHBaseView;}; 00943 void View(HBaseView * const v) {m_pHBaseView = v;}; 00944 00946 HBaseModel * m_pHBaseModel; 00948 HBaseModel * const Model() const {return m_pHBaseModel;}; 00950 void Model(HBaseModel * const m) {m_pHBaseModel = m;}; 00951 00953 HCamera * m_pCamera; 00955 HCamera * const Camera() const {return m_pCamera;}; 00957 void Camera(HCamera * const c) {m_pCamera = c;}; 00958 00960 HC_KEY m_Key; 00962 HC_KEY const Key() const {return m_Key;}; 00964 void Key(HC_KEY const k) {m_Key = k;}; 00965 00967 char const * m_pHSRAOptions; 00969 char const * const HSRAOptions() const {return m_pHSRAOptions;}; 00971 void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;}; 00972 00974 HPoint const * m_pWindowColor; 00976 HPoint const * const WindowColor() const {return m_pWindowColor;}; 00978 void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;}; 00979 00981 bool m_bUseWindowColor; 00983 bool UseWindowColor() const {return m_bUseWindowColor;}; 00985 void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;}; 00986 00993 float m_Window_Width; 00995 float const WindowWidth() const {return m_Window_Width;}; 00997 void WindowWidth(float const f) {m_Window_Width = f;}; 00998 01005 float m_Window_Height; 01007 float const WindowHeight() const {return m_Window_Height;}; 01009 void WindowHeight(float const f) {m_Window_Height = f;}; 01010 01012 float m_Paper_Width; 01014 float const PaperWidth() const {return m_Paper_Width;}; 01016 void PaperWidth(float const f) {m_Paper_Width = f;}; 01017 01019 float m_Paper_Height; 01021 float const PaperHeight() const {return m_Paper_Height;}; 01023 void PaperHeight(float const f) {m_Paper_Height = f;}; 01024 01026 bool m_ForceGrayscale; 01028 bool ForceGrayscale() const {return m_ForceGrayscale;}; 01030 void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;}; 01031 01033 bool m_bFastPrint; 01035 bool FastPrint() const {return m_bFastPrint;}; 01037 void FastPrint(bool const tf) {m_bFastPrint = tf;}; 01038 01040 bool m_bConserveMemory; 01042 bool ConserveMemory() const {return m_bConserveMemory;}; 01044 void ConserveMemory(bool const tf) {m_bConserveMemory = tf;}; 01045 01046 bool m_bWriteAnimations; 01047 bool WriteAnimations() const {return m_bWriteAnimations;}; 01048 void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;}; 01049 01051 bool m_bWindowFrame; 01053 bool WindowFrame() const {return m_bWindowFrame;}; 01055 void WindowFrame(bool const tf) {m_bWindowFrame = tf;}; 01056 01058 bool m_bUseSubscreen; 01060 bool UseSubscreen() const {return m_bUseSubscreen;}; 01062 void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;}; 01063 01070 int m_Image_Dpi; 01072 int const ImageDpi() const {return m_Image_Dpi;}; 01074 void ImageDpi(int const dpi) {m_Image_Dpi = dpi;}; 01075 01077 int m_Paper_Dpi; 01079 int const PaperDpi() const {return m_Paper_Dpi;}; 01081 void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;}; 01082 01084 void * m_pExtendedData; 01085 void * const ExtendedData() const {return m_pExtendedData;}; 01086 void ExtendedData(void * const vp) {m_pExtendedData = vp;}; 01087 void ExtendedData(HOutputHandlerOptions * const vp) {m_pExtendedData = (void*)vp;}; 01088 01089 bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;}; 01090 void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;}; 01091 float const AnnotLeft(void) const {return m_fAnnotLeft;}; 01092 void AnnotLeft(float f) {m_fAnnotLeft = f;}; 01093 float const AnnotRight(void) const {return m_fAnnotRight;}; 01094 void AnnotRight(float f) {m_fAnnotRight = f;}; 01095 float const AnnotBottom(void) const {return m_fAnnotBottom;}; 01096 void AnnotBottom(float f) {m_fAnnotBottom = f;}; 01097 float const AnnotTop(void) const {return m_fAnnotTop;}; 01098 void AnnotTop(float f) {m_fAnnotTop = f;}; 01099 01100 01102 const char *m_license; 01103 01105 int m_Version; 01106 int const Version() const {return m_Version;}; 01107 void Version(int const v) {m_Version = v;}; 01108 01110 H_OUTPUT_TYPE m_OutputType; 01112 H_OUTPUT_TYPE OutputType() const {return m_OutputType;}; 01114 void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;}; 01115 01117 bool m_b3dOutput; 01119 bool Output3d() const {return m_b3dOutput;}; 01121 void Output3d(bool const tf) {m_b3dOutput = tf;}; 01122 01124 bool m_bAscii; 01126 bool Ascii() const {return m_bAscii;}; 01128 void Ascii(bool const tf) {m_bAscii = tf;}; 01129 01131 bool m_bStlNormals; 01133 bool StlNormals() const {return m_bStlNormals;}; 01135 void StlNormals(bool const tf) {m_bStlNormals = tf;}; 01136 01138 double m_ratio_cm_to_internal_units; 01139 01143 double PrintToScale() const {return m_ratio_cm_to_internal_units;}; 01144 01160 void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;}; 01161 01168 float m_PageMargins[4]; 01169 01171 HBhvBehaviorManager * m_pBehaviorManager; 01172 01174 char const* m_pDWFModelName; 01175 01177 ExportNameMap m_names; 01178 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 }; 01207 01208 01210 01216 class MVO_API HOutputHandler 01217 { 01218 01219 public: 01227 HOutputHandler(); 01228 virtual ~HOutputHandler(); 01229 01230 01233 virtual const char * GetOutputName() = 0; 01234 01239 unsigned long GetOutputOps() {return m_OutputOps;}; 01240 01251 virtual void RegisterOutputHandlerTypes() = 0; 01252 01253 01261 virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options); 01262 virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options); 01263 01271 virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options); 01272 01273 01282 virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01283 virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01284 01295 virtual const char * GetOutputTypesString() = 0; 01296 01305 virtual HOutputHandlerStyle GetOutputStyle() = 0; 01306 01313 virtual const char * GetOutputDefaultHSRA(); 01314 01318 const char * GetOutputProgress(); 01319 01323 float GetOutputPercentProgress(); 01324 01328 const __wchar_t * GetOutputInformation(); 01329 01336 HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback); 01337 01338 01345 HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 01346 01353 HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback); 01354 01356 void ReportOutputProgress(const char * progress); 01357 01359 void ReportOutputPercentProgress(float percent_progress); 01360 01362 void ReportOutputInformation(const char * information); 01363 01364 01365 void SetModuleDirectory(const char *module_directory); 01366 void SetModuleDirectory(const __wchar_t *module_directory); 01367 01368 protected: 01369 01373 void SetStartingOutput(); 01374 01378 void SetFinishedOutput(); 01379 01381 void SetOutputOps(unsigned long ops) {m_OutputOps=ops;}; 01383 unsigned long m_OutputOps; 01384 01385 char *m_module_directory; 01386 private: 01387 01388 char *m_progress; 01389 float m_percent_progress1; 01390 float m_percent_progress2; 01391 __wchar_t *m_information; 01392 struct vlist_s *m_information_list; 01393 HIONoticeCallback *m_progress_callback; 01394 HIOPercentNoticeCallback *m_percent_progress_callback; 01395 HIONoticeCallback *m_information_callback; 01396 }; 01397 01403 class MVO_API HIOManager 01404 { 01405 01406 public: 01407 01408 HIOManager(); 01409 virtual ~HIOManager(); 01410 01420 virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler); 01421 01430 virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler); 01431 01442 virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free); 01443 01448 virtual HInputHandler * GetInputHandler(const char * file_type); 01449 HInputHandler * GetInputHandler(const __wchar_t * file_type); 01450 #ifdef _MSC_VER 01451 HInputHandler * GetInputHandler(const unsigned short * file_type); 01452 #endif 01453 01458 virtual HOutputHandler * GetOutputHandler(const char * file_type); 01459 virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type); 01460 01465 virtual void RegisterHandlers(); 01466 01471 virtual const char * GetInputHandlerTypes(); 01472 01477 virtual const char * GetOutputHandlerTypes(); 01478 01479 01486 virtual HIOConnector * CreateConnector(const char * file_type); 01487 01492 virtual void FreeConnector(HIOConnector * old_connector); 01493 01494 01499 static HIOManager *GetCurrentHIOManager(); 01500 01506 static void GetFileOutputResultString(HFileOutputResult result, char *result_str); 01507 01508 protected: 01509 01511 struct vhash_s * input_handlers; 01512 01514 struct vhash_s * output_handlers; 01515 01517 struct vhash_s * connector_procs; 01518 01520 struct vlist_s * owned_input_handlers; 01521 01523 struct vlist_s * owned_output_handlers; 01524 01526 struct vlist_s * loaded_input_handlers; 01527 01529 struct vlist_s * loaded_output_handlers; 01530 01532 struct vhash_s * created_connectors; 01533 01534 char * m_input_types; 01535 int m_input_types_allocated; 01536 01537 char * m_output_types; 01538 int m_output_types_allocated; 01539 }; 01540 01541 #ifdef H_PACK_8 01542 #pragma pack(pop) 01543 #endif 01544 01545 #endif 01546