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 <stdint.h> 00025 #include "HTools.h" 00026 00027 00028 // forwards 00029 enum HFileOutputResult; 00030 class HPDFOptions; 00031 class HBaseView; 00032 class HCamera; 00033 class HBaseModel; 00034 struct vlist_s; 00035 class HStreamFileToolkit; 00036 class HBhvBehaviorManager; 00037 class BREP_Topology; 00038 00039 enum H_OUTPUT_TYPE 00040 { 00041 H_OUTPUT_TYPE_DEFAULT = 0, 00042 H_PDF_OUTPUT_PORTFOLIO, 00043 H_PDF_OUTPUT_3D, 00044 H_PDF_OUTPUT_2D, 00045 H_SINGLE_PASS_ZSORT, 00046 H_SINGLE_PASS_NO_HIDDEN_SURFACES 00047 }; 00048 00049 00053 #define HInputOpNone (1UL<<0) 00054 00058 #define HInputOpFileInputByKey (1UL<<1) 00059 00063 #define HInputOpFileInputToImageKey (1UL<<2) 00064 00068 #define HOutputOpNone (1UL<<0) 00069 00073 #define HOutputOpFileOutputByKey (1UL<<1) 00074 00078 #define HOutputOpFileOutputFromImageKey (1UL<<2) 00079 00080 00085 #define HIORegisterInputType(type,input_object) HIOManager::GetCurrentHIOManager()->RegisterInputHandler(type, input_object); 00086 00087 00088 00090 #define HIORegisterOutputType(type,output_object) HIOManager::GetCurrentHIOManager()->RegisterOutputHandler(type, output_object); 00091 00092 00093 00094 00099 class MVO_API HIONoticeCallback 00100 { 00101 public: 00102 00103 virtual ~HIONoticeCallback() {} 00108 virtual void Notice(const char * notice) = 0; 00109 virtual void Notice(const __wchar_t * notice) { 00110 UNREFERENCED(notice); 00111 } 00112 #ifdef H_USHORT_OVERLOAD 00113 virtual void Notice(const unsigned short * notice) { 00114 Notice((__wchar_t const *) notice); 00115 } 00116 #endif 00117 }; 00118 00122 class MVO_API HIOPercentNoticeCallback 00123 { 00124 public: 00125 virtual ~HIOPercentNoticeCallback(); 00130 virtual void Notice(float notice) =0; 00131 }; 00132 00133 00134 00137 typedef void * (*HIO_CREATE_FREE_FUNCTION)(void *); 00138 00141 typedef void (*HIO_FREE_CONNECTOR_FUNCTION)(void *); 00142 00148 class MVO_API HIOConnector 00149 { 00150 public: 00151 00152 /*Constructs an HIOConnector object.*/ 00153 HIOConnector(); 00154 virtual ~HIOConnector(); 00155 00163 virtual HC_KEY GetHoopsEntity(void * pKernelEntity); 00164 virtual HC_KEY GetHoopsEntity(void * pKernelEntity, HC_KEY modelKey); 00165 00173 virtual void * GetKernelEntity(HC_KEY key); 00174 virtual void * GetKernelEntity(HC_KEY key, HC_KEY modelKey); 00175 00182 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList); 00183 virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList, HC_KEY modelKey); 00184 00191 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList); 00192 virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList, HC_KEY modelKey); 00193 00199 virtual void AddConnection(HC_KEY key, void* pKernelEntity); 00200 virtual void AddConnection(HC_KEY key, void* pKernelEntity, HC_KEY modelKey); 00201 00202 00209 virtual void OptimizeTree(const char * segname, const char * option_string); 00210 00211 protected: 00212 00214 struct vhash_s *mhash_Hoops2Kernel; 00215 00217 struct vhash_s *mhash_Kernel2Hoops; 00218 00219 }; 00220 00225 enum HInputHandlerStyle { 00226 HInputHandlerStyleModel, 00227 HInputHandlerStyleImage 00228 }; 00229 00234 enum HDwgViewVector { 00235 DwgTopView, 00236 DwgIsoView, 00237 DwgViewportInherit, 00238 DwgSceneInherit 00239 }; 00240 00246 class MVO_API HInputHandlerOptions 00247 { 00248 public: 00249 00251 HInputHandlerOptions() { 00252 m_z_separation = 1; 00253 m_depth_range = 0; 00254 m_pHBaseView = 0; 00255 m_pImageName = 0; 00256 m_pImageFormat = 0; 00257 m_pConnector = 0; 00258 m_pExtendedData = 0; 00259 m_bLocal = false; 00260 m_tk = 0; 00261 m_bLogging = false; 00262 00263 00264 // Generic options used in DGN, SKP and DWG importer 00265 m_bIgnoreOffEntities = false; 00266 00267 //DWG/SKP option 00268 m_bImportMetadata = false; 00269 00270 // DWG import options (try and move them somewhere else) 00271 m_bInputViaHSF = false; 00272 m_Deviation = 10.0; 00273 m_bImportWireframeForBrep = false; 00274 m_numIsolines = 0; 00275 m_listRegAppNames = 0; 00276 m_listEntityType = 0; 00277 m_bForceReimport = false; 00278 m_listDWGLayouts = 0; 00279 m_bAttachDWGHandles = false; 00280 m_bImportAllLayouts = false; 00281 m_bDWGInsertMeshesAsShells = false; 00282 m_bDisableDWGDrawOrder = false; 00283 m_eDwgViewVector = DwgViewportInherit; 00284 m_sDwgContrastColorRgb = HPoint(0, 0, 0); 00285 m_bLegacyOptimize = false; 00286 m_bDwgDepthRangeDrawOrder = false; 00287 m_bDwgSkipUnreferencedBlocks = 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_bPRCImportNonBrepFaces = true; 00301 m_bPRCCreatePRCFileOnly = false; 00302 m_bPRCInstanceShells = true; 00303 m_bPRCCalculatePhysicalProperties = false; 00304 m_pPRCMultiModelSelectionCallback = 0; 00305 m_pPRCAsmModelFile = 0; 00306 m_pPRCDeleteModelFile = false; 00307 m_bPRCStoreUserAttributes = true; 00308 m_pPRCDeleteModelCallback = 0; 00309 m_bPRCImportHiddenObjects = false; 00310 00311 // DWF import options 00312 m_bDisableDWFDrawOrder = false; 00313 m_bDWFRebaselineModel = true; 00314 m_bImportThumbnail = false; 00315 00316 //SKP optimization option 00317 m_bOptimizeSegmentTree = false; 00318 m_license = 0; 00319 00320 m_pOOCNodeDeltas = 0; 00321 m_bOOCAutoUpdate = true; 00322 m_bOOCAutoCleanup = true; 00323 } 00324 00327 HInputHandlerOptions(HInputHandlerOptions const * o) { 00328 m_z_separation = o->m_z_separation; 00329 m_depth_range = o->m_depth_range; 00330 m_pHBaseView = o->m_pHBaseView; 00331 m_pImageName = o->m_pImageName; 00332 m_pImageFormat = o->m_pImageFormat; 00333 m_pConnector = o->m_pConnector; 00334 m_pExtendedData = o->m_pExtendedData; 00335 m_bLocal = o->m_bLocal; 00336 00337 m_license = o->m_license; 00338 00339 //DWG/DGN/SKP option 00340 m_bIgnoreOffEntities = o->m_bIgnoreOffEntities; 00341 00342 //DWG/SKP option 00343 m_bImportMetadata = o->m_bImportMetadata; 00344 00345 00346 //DWG Options 00347 m_bInputViaHSF = o->m_bInputViaHSF; 00348 m_Deviation = o->m_Deviation; 00349 m_bImportWireframeForBrep = o->m_bImportWireframeForBrep; 00350 m_numIsolines = o->m_numIsolines; 00351 m_listRegAppNames = o->m_listRegAppNames; 00352 m_listEntityType=o->m_listEntityType; 00353 m_bForceReimport = o->m_bForceReimport; 00354 m_listDWGLayouts = o->m_listDWGLayouts; 00355 m_bAttachDWGHandles = o->m_bAttachDWGHandles; 00356 m_bImportAllLayouts = o->m_bImportAllLayouts; 00357 m_bDWGInsertMeshesAsShells = o->m_bDWGInsertMeshesAsShells; 00358 m_bDisableDWGDrawOrder = o->m_bDisableDWGDrawOrder; 00359 m_eDwgViewVector = o->m_eDwgViewVector; 00360 m_sDwgContrastColorRgb = o->m_sDwgContrastColorRgb; 00361 m_bLegacyOptimize = o->m_bLegacyOptimize; 00362 m_bDwgDepthRangeDrawOrder = o->m_bDwgDepthRangeDrawOrder; 00363 m_bDwgSkipUnreferencedBlocks = o->m_bDwgSkipUnreferencedBlocks; 00364 00365 //DGN Options 00366 m_iDGNCellHeaderOption = o->m_iDGNCellHeaderOption; 00367 m_bDGNRebaselineModel = o->m_bDGNRebaselineModel; 00368 m_coneFactor = o->m_coneFactor; 00369 m_factorForSmartSolids = o->m_factorForSmartSolids; 00370 m_bDGNImportAllModels = o->m_bDGNImportAllModels; 00371 00372 // PRC options 00373 m_pPRCPMIConnector = o->m_pPRCPMIConnector; 00374 m_pPRCTopologyManager = o->m_pPRCTopologyManager; 00375 m_bPRCMergeFaces = o->m_bPRCMergeFaces; 00376 m_bPRCImportNonBrepFaces = o->m_bPRCImportNonBrepFaces; 00377 00378 m_bPRCCreatePRCFileOnly = o->m_bPRCCreatePRCFileOnly; 00379 m_bPRCInstanceShells = o->m_bPRCInstanceShells; 00380 m_bPRCCalculatePhysicalProperties = o->m_bPRCCalculatePhysicalProperties; 00381 m_pPRCMultiModelSelectionCallback = o->m_pPRCMultiModelSelectionCallback; 00382 m_pPRCAsmModelFile = o->m_pPRCAsmModelFile; 00383 m_pPRCDeleteModelFile = o->m_pPRCDeleteModelFile; 00384 m_pPRCDeleteModelCallback = o->m_pPRCDeleteModelCallback; 00385 m_bPRCImportHiddenObjects = o->m_bPRCImportHiddenObjects; 00386 00387 00388 // DWF import options 00389 m_bDisableDWFDrawOrder = o->m_bDisableDWFDrawOrder; 00390 m_bDWFRebaselineModel = o->m_bDWFRebaselineModel; 00391 m_bImportThumbnail = o->m_bImportThumbnail; 00392 00393 00394 //SKP import option 00395 m_bOptimizeSegmentTree = o->m_bOptimizeSegmentTree; 00396 00397 m_pOOCNodeDeltas = o->m_pOOCNodeDeltas; 00398 m_bOOCAutoUpdate = o->m_bOOCAutoUpdate; 00399 m_bOOCAutoCleanup = o->m_bOOCAutoCleanup; 00400 } 00401 00404 HInputHandlerOptions(const HInputHandlerOptions &o) { 00405 m_z_separation = o.m_z_separation; 00406 m_depth_range = o.m_depth_range; 00407 m_pHBaseView = o.m_pHBaseView; 00408 m_pImageName = o.m_pImageName; 00409 m_pImageFormat = o.m_pImageFormat; 00410 m_pConnector = o.m_pConnector; 00411 m_pExtendedData = o.m_pExtendedData; 00412 m_bLocal = o.m_bLocal; 00413 00414 //DWG/DGN/SKP option 00415 m_bIgnoreOffEntities = o.m_bIgnoreOffEntities; 00416 00417 //DWG/SKP option 00418 m_bImportMetadata = o.m_bImportMetadata; 00419 00420 //DWG options 00421 m_bInputViaHSF = o.m_bInputViaHSF; 00422 m_Deviation = o.m_Deviation; 00423 m_bImportWireframeForBrep = o.m_bImportWireframeForBrep; 00424 m_numIsolines = o.m_numIsolines; 00425 m_listRegAppNames = o.m_listRegAppNames; 00426 m_listEntityType = o.m_listEntityType; 00427 m_bForceReimport = o.m_bForceReimport; 00428 m_listDWGLayouts = o.m_listDWGLayouts; 00429 m_bAttachDWGHandles = o.m_bAttachDWGHandles; 00430 m_bImportAllLayouts = o.m_bImportAllLayouts; 00431 m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells; 00432 m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder; 00433 m_eDwgViewVector = o.m_eDwgViewVector; 00434 m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb; 00435 m_bLegacyOptimize = o.m_bLegacyOptimize; 00436 m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder; 00437 m_bDwgSkipUnreferencedBlocks = o.m_bDwgSkipUnreferencedBlocks; 00438 00439 //DGN options 00440 m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption; 00441 m_bDGNRebaselineModel = o.m_bDGNRebaselineModel; 00442 m_coneFactor = o.m_coneFactor; 00443 m_factorForSmartSolids = o.m_factorForSmartSolids; 00444 m_bDGNImportAllModels = o.m_bDGNImportAllModels; 00445 00446 // PRC options 00447 m_pPRCPMIConnector = o.m_pPRCPMIConnector; 00448 m_pPRCTopologyManager = o.m_pPRCTopologyManager; 00449 m_bPRCMergeFaces = o.m_bPRCMergeFaces; 00450 m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces; 00451 m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly; 00452 m_bPRCInstanceShells = o.m_bPRCInstanceShells; 00453 m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties; 00454 m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback; 00455 m_pPRCAsmModelFile = o.m_pPRCAsmModelFile; 00456 m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile; 00457 m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects; 00458 00459 // DWF import options 00460 m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder; 00461 m_bDWFRebaselineModel = o.m_bDWFRebaselineModel; 00462 m_bImportThumbnail = o.m_bImportThumbnail; 00463 00464 00465 //SKP import option 00466 m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree; 00467 00468 m_pOOCNodeDeltas = o.m_pOOCNodeDeltas; 00469 m_bOOCAutoUpdate = o.m_bOOCAutoUpdate; 00470 m_bOOCAutoCleanup = o.m_bOOCAutoCleanup; 00471 } 00472 00473 virtual ~HInputHandlerOptions(); 00474 00476 HBaseView * m_pHBaseView; 00477 00479 const char * m_pImageName; 00480 00482 const char * m_pImageFormat; 00483 00485 bool m_bLocal; 00486 00488 HStreamFileToolkit * m_tk; 00489 00491 bool m_bLogging; 00492 00494 HIOConnector * m_pConnector; 00495 00497 void * m_pExtendedData; 00498 00500 bool m_bInputViaHSF; 00501 00503 double m_Deviation; 00504 00506 bool m_bImportMetadata; 00507 00509 const char *m_license; 00510 00511 00512 00513 00517 struct vlist_s * m_listRegAppNames; 00518 00520 struct vlist_s * m_listEntityType; 00521 00523 bool m_bImportWireframeForBrep; 00524 00526 double m_numIsolines; 00527 00529 bool m_bForceReimport; 00530 00535 bool m_bDisableDWGDrawOrder; 00536 00538 struct vlist_s * m_listDWGLayouts; 00539 00541 bool m_bIgnoreOffEntities; 00542 00546 double m_coneFactor; 00547 00551 double m_factorForSmartSolids; 00552 00554 bool m_bAttachDWGHandles; 00555 00557 int m_iDGNCellHeaderOption; 00558 00559 00560 00564 enum { 00565 SINGLE_ENTITY_CELLHEADER, 00566 BREAK_CELLHEADER, 00567 OPT_CELLHEADER 00568 }; 00569 00571 void *m_pPRCAsmModelFile; 00572 00574 bool m_pPRCDeleteModelFile; 00575 00577 HIOConnector * m_pPRCPMIConnector; 00579 BREP_Topology * m_pPRCTopologyManager; 00581 bool m_bPRCMergeFaces; 00582 bool m_bPRCImportNonBrepFaces; 00583 00585 bool m_bPRCCreatePRCFileOnly; 00586 bool m_bPRCInstanceShells; 00587 00588 bool m_bPRCCalculatePhysicalProperties; 00590 void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const * in_configs[], 00591 int & out_config_selection); 00593 bool m_bPRCStoreUserAttributes; 00595 void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile); 00597 bool m_bPRCImportHiddenObjects; 00598 00599 00602 bool m_bImportAllLayouts; 00603 00605 bool m_bDGNRebaselineModel; 00606 00608 bool m_bDGNImportAllModels; 00609 00613 bool m_bDWGInsertMeshesAsShells; 00614 00615 // DWF import options 00620 bool m_bDisableDWFDrawOrder; 00621 00623 bool m_bImportThumbnail; 00624 00626 bool m_bDWFRebaselineModel; 00627 00629 bool m_bOptimizeSegmentTree; 00630 00636 HDwgViewVector m_eDwgViewVector; 00637 00644 HPoint m_sDwgContrastColorRgb; 00645 00652 bool m_bLegacyOptimize; 00653 00660 bool m_bDwgDepthRangeDrawOrder; 00661 00670 bool m_bDwgSkipUnreferencedBlocks; 00671 00676 double m_z_separation; 00677 00682 double m_depth_range; 00683 00685 void * m_pOOCNodeDeltas; 00686 00688 bool m_bOOCAutoUpdate; 00689 00691 bool m_bOOCAutoCleanup; 00692 }; 00693 00694 00695 00697 00703 class MVO_API HInputHandler 00704 { 00705 00706 public: 00714 HInputHandler(); 00715 virtual ~HInputHandler(); 00716 00721 unsigned long GetInputOps() {return m_InputOps;}; 00722 00723 00726 virtual const char * GetInputName() = 0; 00727 00728 00735 virtual void RegisterInputHandlerTypes() = 0; 00736 00743 virtual HInputHandlerStyle GetInputStyle() = 0; 00744 00752 virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options); 00753 virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options); 00754 00755 00764 virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options); 00765 00776 virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00777 virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00778 00779 00789 virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00790 00803 virtual const char * GetInputTypesString() = 0; 00804 00808 const __wchar_t * GetInputProgress(); 00809 00813 float GetInputPercentProgress(); 00814 00818 const __wchar_t * GetInputInformation(); 00819 00826 HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback); 00827 00828 00835 HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 00836 00843 HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback); 00844 00846 void ReportInputProgress(const char * progress); 00847 void ReportInputProgress(const __wchar_t * progress); 00848 00850 void ReportInputPercentProgress(float percent_progress); 00851 00853 void ReportInputInformation(const char * information); 00854 void ReportInputInformation(const __wchar_t * information); 00855 00856 void SetModuleDirectory(const char *module_directory); 00857 void SetModuleDirectory(const __wchar_t *module_directory); 00858 protected: 00859 00863 void SetStartingInput(const char *filename); 00864 void SetStartingInput(const __wchar_t *filename = 0); 00865 00869 void SetFinishedInput(); 00870 00872 void SetInputOps(unsigned long ops) {m_InputOps=ops;}; 00873 00875 unsigned long m_InputOps; 00876 00877 __wchar_t *m_module_directory; 00878 00879 private: 00880 00881 __wchar_t *m_progress; 00882 float m_percent_progress1; 00883 float m_percent_progress2; 00884 __wchar_t *m_information; 00885 struct vlist_s *m_information_list; 00886 HIONoticeCallback *m_progress_callback; 00887 HIONoticeCallback *m_information_callback; 00888 HIOPercentNoticeCallback *m_percent_progress_callback; 00889 }; 00890 00894 enum HOutputHandlerStyle 00895 { 00896 HOutputHandlerStyleModel, 00897 HOutputHandlerStyleImage, 00898 HOutputHandlerStyleHardcopy, 00899 HOutputHandlerStyleHTML, 00900 HOutputHandlerStyleDontCare 00901 }; 00902 00909 class MVO_API ExportNameMap 00910 { 00911 private: 00912 void * _imp; 00913 public: 00914 ExportNameMap(); 00915 ~ExportNameMap(); 00916 00917 H_FORMAT_TEXT lookup(HC_KEY) const; 00918 void tag(HC_KEY, H_FORMAT_TEXT const &); 00919 }; 00920 00928 enum HPrcBrepCompression { 00929 PrcBrepCompressionNone, 00930 PrcBrepCompressionLow, 00931 PrcBrepCompressionMedium, 00932 PrcBrepCompressionHigh 00933 }; 00934 00940 class MVO_API HOutputHandlerOptions 00941 { 00942 public: 00944 HOutputHandlerOptions(); 00945 00946 virtual char const * GetType() const; 00947 00950 virtual bool PopulateOptions(); 00951 00955 HOutputHandlerOptions(HOutputHandlerOptions const *o) { 00956 Init(o); 00957 }; 00958 00962 HOutputHandlerOptions(const HOutputHandlerOptions &o) { 00963 Init(&o); 00964 }; 00965 00966 00967 virtual ~HOutputHandlerOptions(); 00968 00972 void Init(HOutputHandlerOptions const *o); 00973 00975 HBaseView * m_pHBaseView; 00977 HBaseView * const View() const {return m_pHBaseView;}; 00979 void View(HBaseView * const v) {m_pHBaseView = v;}; 00980 00982 HBaseModel * m_pHBaseModel; 00984 HBaseModel * const Model() const {return m_pHBaseModel;}; 00986 void Model(HBaseModel * const m) {m_pHBaseModel = m;}; 00987 00989 HCamera * m_pCamera; 00991 HCamera * const Camera() const {return m_pCamera;}; 00993 void Camera(HCamera * const c) {m_pCamera = c;}; 00994 00996 HC_KEY m_Key; 00998 HC_KEY const Key() const {return m_Key;}; 01000 void Key(HC_KEY const k) {m_Key = k;}; 01001 01003 char const * m_pHSRAOptions; 01005 char const * const HSRAOptions() const {return m_pHSRAOptions;}; 01007 void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;}; 01008 01010 HPoint const * m_pWindowColor; 01012 HPoint const * const WindowColor() const {return m_pWindowColor;}; 01014 void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;}; 01015 01017 bool m_bUseWindowColor; 01019 bool UseWindowColor() const {return m_bUseWindowColor;}; 01021 void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;}; 01022 01024 float m_Window_Width; 01026 float const WindowWidth() const {return m_Window_Width;}; 01028 void WindowWidth(float const f) {m_Window_Width = f;}; 01029 01031 float m_Window_Height; 01033 float const WindowHeight() const {return m_Window_Height;}; 01035 void WindowHeight(float const f) {m_Window_Height = f;}; 01036 01038 float m_Paper_Width; 01040 float const PaperWidth() const {return m_Paper_Width;}; 01042 void PaperWidth(float const f) {m_Paper_Width = f;}; 01043 01045 float m_Paper_Height; 01047 float const PaperHeight() const {return m_Paper_Height;}; 01049 void PaperHeight(float const f) {m_Paper_Height = f;}; 01050 01052 bool m_ForceGrayscale; 01054 bool ForceGrayscale() const {return m_ForceGrayscale;}; 01056 void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;}; 01057 01059 size_t m_lineFuseThreshold; 01060 01064 size_t LineFuseThreshold() const {return m_lineFuseThreshold;}; 01065 01069 void LineFuseThreshold(size_t const tf) {m_lineFuseThreshold = tf;}; 01070 01072 bool m_bFastPrint; 01074 bool FastPrint() const {return m_bFastPrint;}; 01076 void FastPrint(bool const tf) {m_bFastPrint = tf;}; 01077 01079 bool m_bConserveMemory; 01081 bool ConserveMemory() const {return m_bConserveMemory;}; 01083 void ConserveMemory(bool const tf) {m_bConserveMemory = tf;}; 01084 01085 bool m_bWriteAnimations; 01086 bool WriteAnimations() const {return m_bWriteAnimations;}; 01087 void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;}; 01088 01090 bool m_bWindowFrame; 01092 bool WindowFrame() const {return m_bWindowFrame;}; 01094 void WindowFrame(bool const tf) {m_bWindowFrame = tf;}; 01095 01097 bool m_bUseSubscreen; 01099 bool UseSubscreen() const {return m_bUseSubscreen;}; 01101 void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;}; 01102 01104 int m_Image_Dpi; 01106 int const ImageDpi() const {return m_Image_Dpi;}; 01108 void ImageDpi(int const dpi) {m_Image_Dpi = dpi;}; 01109 01111 int m_Paper_Dpi; 01113 int const PaperDpi() const {return m_Paper_Dpi;}; 01115 void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;}; 01116 01118 void * m_pExtendedData; 01119 void * const ExtendedData() const {return m_pExtendedData;}; 01120 void ExtendedData(void * const vp) {m_pExtendedData = vp;}; 01121 void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;}; 01122 01123 bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;}; 01124 void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;}; 01125 float const AnnotLeft() const {return m_fAnnotLeft;}; 01126 void AnnotLeft(float f) {m_fAnnotLeft = f;}; 01127 float const AnnotRight() const {return m_fAnnotRight;}; 01128 void AnnotRight(float f) {m_fAnnotRight = f;}; 01129 float const AnnotBottom() const {return m_fAnnotBottom;}; 01130 void AnnotBottom(float f) {m_fAnnotBottom = f;}; 01131 float const AnnotTop() const {return m_fAnnotTop;}; 01132 void AnnotTop(float f) {m_fAnnotTop = f;}; 01133 01134 01136 const char *m_license; 01137 01138 int m_antialiasLevel; 01139 int m_jpeg_quality; 01140 unsigned char* m_imageOutputBuffer; 01141 size_t m_imageOutputBufferSize; 01142 01143 01144 01145 01147 int m_Version; 01148 int const Version() const {return m_Version;}; 01149 void Version(int const v) {m_Version = v;}; 01150 01152 H_OUTPUT_TYPE m_OutputType; 01154 H_OUTPUT_TYPE OutputType() const {return m_OutputType;}; 01156 void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;}; 01157 01159 bool m_b3dOutput; 01161 bool Output3d() const {return m_b3dOutput;}; 01163 void Output3d(bool const tf) {m_b3dOutput = tf;}; 01164 01166 bool m_bAscii; 01168 bool Ascii() const {return m_bAscii;}; 01170 void Ascii(bool const tf) {m_bAscii = tf;}; 01171 01173 bool m_bStlNormals; 01175 bool StlNormals() const {return m_bStlNormals;}; 01177 void StlNormals(bool const tf) {m_bStlNormals = tf;}; 01178 01180 double m_ratio_cm_to_internal_units; 01181 01185 double PrintToScale() const {return m_ratio_cm_to_internal_units;}; 01186 01202 void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;}; 01203 01210 float m_PageMargins[4]; 01211 01213 HBhvBehaviorManager * m_pBehaviorManager; 01214 01216 char const* m_pDWFModelName; 01217 01221 char const* m_pPDFResourceDirectory; 01222 01224 ExportNameMap m_names; 01225 01227 void *m_pPRCAsmModelFile; 01228 01230 bool m_bActivateOnPageOpen; 01231 01233 float m_fAnnotLeft; 01234 01236 float m_fAnnotRight; 01237 01239 float m_fAnnotBottom; 01240 01242 float m_fAnnotTop; 01243 01245 HPrcBrepCompression m_ePrcBrepCompression; 01246 01248 bool m_bPrcCompressTessellation; 01249 01251 bool m_bPrcRemoveBRep; 01252 01254 bool m_bPrcRemoveAttributes; 01256 bool m_bPrcUseNameUserData; 01257 01259 MVO_POINTER_SIZED_INT m_iPrcNameUserDataIndex; 01260 01261 01263 bool m_bAVIShowCompressionDialog; 01264 01273 char m_bAVICodec[4]; 01274 01276 bool m_bExporting2DDwf; 01277 }; 01278 01279 01281 01287 class MVO_API HOutputHandler 01288 { 01289 01290 public: 01298 HOutputHandler(); 01299 virtual ~HOutputHandler(); 01300 01301 01304 virtual const char * GetOutputName() = 0; 01305 01310 unsigned long GetOutputOps() {return m_OutputOps;}; 01311 01322 virtual void RegisterOutputHandlerTypes() = 0; 01323 01324 01332 virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options); 01333 virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options); 01334 01342 virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options); 01343 01344 01353 virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01354 virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01355 01366 virtual const char * GetOutputTypesString() = 0; 01367 01376 virtual HOutputHandlerStyle GetOutputStyle() = 0; 01377 01384 virtual const char * GetOutputDefaultHSRA(); 01385 01389 const char * GetOutputProgress(); 01390 01394 float GetOutputPercentProgress(); 01395 01399 const __wchar_t * GetOutputInformation(); 01400 01407 HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback); 01408 01409 01416 HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 01417 01424 HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback); 01425 01427 void ReportOutputProgress(const char * progress); 01428 01430 void ReportOutputPercentProgress(float percent_progress); 01431 01433 void ReportOutputInformation(const char * information); 01434 01435 01436 void SetModuleDirectory(const char *module_directory); 01437 void SetModuleDirectory(const __wchar_t *module_directory); 01438 01439 protected: 01440 01444 void SetStartingOutput(); 01445 01449 void SetFinishedOutput(); 01450 01452 void SetOutputOps(unsigned long ops) {m_OutputOps=ops;}; 01454 unsigned long m_OutputOps; 01455 01456 char *m_module_directory; 01457 private: 01458 01459 char *m_progress; 01460 float m_percent_progress1; 01461 float m_percent_progress2; 01462 __wchar_t *m_information; 01463 struct vlist_s *m_information_list; 01464 HIONoticeCallback *m_progress_callback; 01465 HIOPercentNoticeCallback *m_percent_progress_callback; 01466 HIONoticeCallback *m_information_callback; 01467 }; 01468 01474 class MVO_API HIOManager 01475 { 01476 01477 public: 01478 01479 HIOManager(); 01480 virtual ~HIOManager(); 01481 01491 virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler); 01492 01501 virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler); 01502 01513 virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free); 01514 01519 virtual HInputHandler * GetInputHandler(const char * file_type); 01520 HInputHandler * GetInputHandler(const __wchar_t * file_type); 01521 #ifdef _MSC_VER 01522 HInputHandler * GetInputHandler(const unsigned short * file_type); 01523 #endif 01524 01529 virtual HOutputHandler * GetOutputHandler(const char * file_type); 01530 virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type); 01531 01536 virtual void RegisterHandlers(); 01537 01542 virtual const char * GetInputHandlerTypes(); 01543 01548 virtual const char * GetOutputHandlerTypes(); 01549 01550 01557 virtual HIOConnector * CreateConnector(const char * file_type); 01558 01563 virtual void FreeConnector(HIOConnector * old_connector); 01564 01565 01570 static HIOManager *GetCurrentHIOManager(); 01571 01577 static void GetFileOutputResultString(HFileOutputResult result, char *result_str); 01578 01579 protected: 01580 01582 struct vhash_s * input_handlers; 01583 01585 struct vhash_s * output_handlers; 01586 01588 struct vhash_s * connector_procs; 01589 01591 struct vlist_s * owned_input_handlers; 01592 01594 struct vlist_s * owned_output_handlers; 01595 01597 struct vlist_s * loaded_input_handlers; 01598 01600 struct vlist_s * loaded_output_handlers; 01601 01603 struct vhash_s * created_connectors; 01604 01605 char * m_input_types; 01606 int m_input_types_allocated; 01607 01608 char * m_output_types; 01609 int m_output_types_allocated; 01610 }; 01611 01612 #ifdef H_PACK_8 01613 #pragma pack(pop) 01614 #endif 01615 01616 #endif 01617