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 00288 // DGN import Options 00289 m_iDGNCellHeaderOption = SINGLE_ENTITY_CELLHEADER; 00290 m_coneFactor = 10.0; 00291 m_factorForSmartSolids = 45.0; 00292 m_bDGNRebaselineModel = false; 00293 m_bDGNImportAllModels = false; 00294 00295 // PRC options 00296 m_pPRCPMIConnector = 0; 00297 m_pPRCTopologyManager = 0; 00298 m_bPRCMergeFaces = false; 00299 m_bPRCImportNonBrepFaces = true; 00300 m_bPRCCreatePRCFileOnly = false; 00301 m_bPRCInstanceShells = true; 00302 m_bPRCCalculatePhysicalProperties = false; 00303 m_pPRCMultiModelSelectionCallback = 0; 00304 m_pPRCAsmModelFile = 0; 00305 m_pPRCDeleteModelFile = false; 00306 m_bPRCStoreUserAttributes = true; 00307 m_pPRCDeleteModelCallback = 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 m_pOOCNodeDeltas = 0; 00320 m_bOOCAutoUpdate = true; 00321 m_bOOCAutoCleanup = true; 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 m_pOOCNodeDeltas = o->m_pOOCNodeDeltas; 00396 m_bOOCAutoUpdate = o->m_bOOCAutoUpdate; 00397 m_bOOCAutoCleanup = o->m_bOOCAutoCleanup; 00398 } 00399 00402 HInputHandlerOptions(const HInputHandlerOptions &o) { 00403 m_z_separation = o.m_z_separation; 00404 m_depth_range = o.m_depth_range; 00405 m_pHBaseView = o.m_pHBaseView; 00406 m_pImageName = o.m_pImageName; 00407 m_pImageFormat = o.m_pImageFormat; 00408 m_pConnector = o.m_pConnector; 00409 m_pExtendedData = o.m_pExtendedData; 00410 m_bLocal = o.m_bLocal; 00411 00412 //DWG/DGN/SKP option 00413 m_bIgnoreOffEntities = o.m_bIgnoreOffEntities; 00414 00415 //DWG/SKP option 00416 m_bImportMetadata = o.m_bImportMetadata; 00417 00418 //DWG options 00419 m_bInputViaHSF = o.m_bInputViaHSF; 00420 m_Deviation = o.m_Deviation; 00421 m_bImportWireframeForBrep = o.m_bImportWireframeForBrep; 00422 m_numIsolines = o.m_numIsolines; 00423 m_listRegAppNames = o.m_listRegAppNames; 00424 m_listEntityType = o.m_listEntityType; 00425 m_bForceReimport = o.m_bForceReimport; 00426 m_listDWGLayouts = o.m_listDWGLayouts; 00427 m_bAttachDWGHandles = o.m_bAttachDWGHandles; 00428 m_bImportAllLayouts = o.m_bImportAllLayouts; 00429 m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells; 00430 m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder; 00431 m_eDwgViewVector = o.m_eDwgViewVector; 00432 m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb; 00433 m_bLegacyOptimize = o.m_bLegacyOptimize; 00434 m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder; 00435 00436 //DGN options 00437 m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption; 00438 m_bDGNRebaselineModel = o.m_bDGNRebaselineModel; 00439 m_coneFactor = o.m_coneFactor; 00440 m_factorForSmartSolids = o.m_factorForSmartSolids; 00441 m_bDGNImportAllModels = o.m_bDGNImportAllModels; 00442 00443 // PRC options 00444 m_pPRCPMIConnector = o.m_pPRCPMIConnector; 00445 m_pPRCTopologyManager = o.m_pPRCTopologyManager; 00446 m_bPRCMergeFaces = o.m_bPRCMergeFaces; 00447 m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces; 00448 m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly; 00449 m_bPRCInstanceShells = o.m_bPRCInstanceShells; 00450 m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties; 00451 m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback; 00452 m_pPRCAsmModelFile = o.m_pPRCAsmModelFile; 00453 m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile; 00454 m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects; 00455 00456 // DWF import options 00457 m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder; 00458 m_bDWFRebaselineModel = o.m_bDWFRebaselineModel; 00459 m_bImportThumbnail = o.m_bImportThumbnail; 00460 00461 00462 //SKP import option 00463 m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree; 00464 00465 m_pOOCNodeDeltas = o.m_pOOCNodeDeltas; 00466 m_bOOCAutoUpdate = o.m_bOOCAutoUpdate; 00467 m_bOOCAutoCleanup = o.m_bOOCAutoCleanup; 00468 } 00469 00470 virtual ~HInputHandlerOptions(); 00471 00473 HBaseView * m_pHBaseView; 00474 00476 const char * m_pImageName; 00477 00479 const char * m_pImageFormat; 00480 00482 bool m_bLocal; 00483 00485 HStreamFileToolkit * m_tk; 00486 00488 bool m_bLogging; 00489 00491 HIOConnector * m_pConnector; 00492 00494 void * m_pExtendedData; 00495 00497 bool m_bInputViaHSF; 00498 00500 double m_Deviation; 00501 00503 bool m_bImportMetadata; 00504 00506 const char *m_license; 00507 00508 00509 00510 00514 struct vlist_s * m_listRegAppNames; 00515 00517 struct vlist_s * m_listEntityType; 00518 00520 bool m_bImportWireframeForBrep; 00521 00523 double m_numIsolines; 00524 00526 bool m_bForceReimport; 00527 00532 bool m_bDisableDWGDrawOrder; 00533 00535 struct vlist_s * m_listDWGLayouts; 00536 00538 bool m_bIgnoreOffEntities; 00539 00543 double m_coneFactor; 00544 00548 double m_factorForSmartSolids; 00549 00551 bool m_bAttachDWGHandles; 00552 00554 int m_iDGNCellHeaderOption; 00555 00556 00557 00561 enum { 00562 SINGLE_ENTITY_CELLHEADER, 00563 BREAK_CELLHEADER, 00564 OPT_CELLHEADER 00565 }; 00566 00568 void *m_pPRCAsmModelFile; 00569 00571 bool m_pPRCDeleteModelFile; 00572 00574 HIOConnector * m_pPRCPMIConnector; 00576 BREP_Topology * m_pPRCTopologyManager; 00578 bool m_bPRCMergeFaces; 00579 bool m_bPRCImportNonBrepFaces; 00580 00582 bool m_bPRCCreatePRCFileOnly; 00583 bool m_bPRCInstanceShells; 00584 00585 bool m_bPRCCalculatePhysicalProperties; 00587 void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const * in_configs[], 00588 int & out_config_selection); 00590 bool m_bPRCStoreUserAttributes; 00592 void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile); 00594 bool m_bPRCImportHiddenObjects; 00595 00596 00599 bool m_bImportAllLayouts; 00600 00602 bool m_bDGNRebaselineModel; 00603 00605 bool m_bDGNImportAllModels; 00606 00610 bool m_bDWGInsertMeshesAsShells; 00611 00612 // DWF import options 00617 bool m_bDisableDWFDrawOrder; 00618 00620 bool m_bImportThumbnail; 00621 00623 bool m_bDWFRebaselineModel; 00624 00626 bool m_bOptimizeSegmentTree; 00627 00633 HDwgViewVector m_eDwgViewVector; 00634 00641 HPoint m_sDwgContrastColorRgb; 00642 00649 bool m_bLegacyOptimize; 00650 00657 bool m_bDwgDepthRangeDrawOrder; 00658 00663 double m_z_separation; 00664 00669 double m_depth_range; 00670 00672 void * m_pOOCNodeDeltas; 00673 00675 bool m_bOOCAutoUpdate; 00676 00678 bool m_bOOCAutoCleanup; 00679 }; 00680 00681 00682 00684 00690 class MVO_API HInputHandler 00691 { 00692 00693 public: 00701 HInputHandler(); 00702 virtual ~HInputHandler(); 00703 00708 unsigned long GetInputOps() {return m_InputOps;}; 00709 00710 00713 virtual const char * GetInputName() = 0; 00714 00715 00722 virtual void RegisterInputHandlerTypes() = 0; 00723 00730 virtual HInputHandlerStyle GetInputStyle() = 0; 00731 00739 virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options); 00740 virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options); 00741 00742 00751 virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options); 00752 00763 virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00764 virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00765 00766 00776 virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00777 00790 virtual const char * GetInputTypesString() = 0; 00791 00795 const __wchar_t * GetInputProgress(); 00796 00800 float GetInputPercentProgress(); 00801 00805 const __wchar_t * GetInputInformation(); 00806 00813 HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback); 00814 00815 00822 HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 00823 00830 HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback); 00831 00833 void ReportInputProgress(const char * progress); 00834 void ReportInputProgress(const __wchar_t * progress); 00835 00837 void ReportInputPercentProgress(float percent_progress); 00838 00840 void ReportInputInformation(const char * information); 00841 void ReportInputInformation(const __wchar_t * information); 00842 00843 void SetModuleDirectory(const char *module_directory); 00844 void SetModuleDirectory(const __wchar_t *module_directory); 00845 protected: 00846 00850 void SetStartingInput(const char *filename); 00851 void SetStartingInput(const __wchar_t *filename = 0); 00852 00856 void SetFinishedInput(); 00857 00859 void SetInputOps(unsigned long ops) {m_InputOps=ops;}; 00860 00862 unsigned long m_InputOps; 00863 00864 __wchar_t *m_module_directory; 00865 00866 private: 00867 00868 __wchar_t *m_progress; 00869 float m_percent_progress1; 00870 float m_percent_progress2; 00871 __wchar_t *m_information; 00872 struct vlist_s *m_information_list; 00873 HIONoticeCallback *m_progress_callback; 00874 HIONoticeCallback *m_information_callback; 00875 HIOPercentNoticeCallback *m_percent_progress_callback; 00876 }; 00877 00881 enum HOutputHandlerStyle 00882 { 00883 HOutputHandlerStyleModel, 00884 HOutputHandlerStyleImage, 00885 HOutputHandlerStyleHardcopy, 00886 HOutputHandlerStyleHTML, 00887 HOutputHandlerStyleDontCare 00888 }; 00889 00896 class MVO_API ExportNameMap 00897 { 00898 private: 00899 void * _imp; 00900 public: 00901 ExportNameMap(); 00902 ~ExportNameMap(); 00903 00904 H_FORMAT_TEXT lookup(HC_KEY) const; 00905 void tag(HC_KEY, H_FORMAT_TEXT const &); 00906 }; 00907 00915 enum HPrcBrepCompression { 00916 PrcBrepCompressionNone, 00917 PrcBrepCompressionLow, 00918 PrcBrepCompressionMedium, 00919 PrcBrepCompressionHigh 00920 }; 00921 00927 class MVO_API HOutputHandlerOptions 00928 { 00929 public: 00931 HOutputHandlerOptions(); 00932 00933 virtual char const * GetType() const; 00934 00937 virtual bool PopulateOptions(); 00938 00942 HOutputHandlerOptions(HOutputHandlerOptions const *o) { 00943 Init(o); 00944 }; 00945 00949 HOutputHandlerOptions(const HOutputHandlerOptions &o) { 00950 Init(&o); 00951 }; 00952 00953 00954 virtual ~HOutputHandlerOptions(); 00955 00959 void Init(HOutputHandlerOptions const *o); 00960 00962 HBaseView * m_pHBaseView; 00964 HBaseView * const View() const {return m_pHBaseView;}; 00966 void View(HBaseView * const v) {m_pHBaseView = v;}; 00967 00969 HBaseModel * m_pHBaseModel; 00971 HBaseModel * const Model() const {return m_pHBaseModel;}; 00973 void Model(HBaseModel * const m) {m_pHBaseModel = m;}; 00974 00976 HCamera * m_pCamera; 00978 HCamera * const Camera() const {return m_pCamera;}; 00980 void Camera(HCamera * const c) {m_pCamera = c;}; 00981 00983 HC_KEY m_Key; 00985 HC_KEY const Key() const {return m_Key;}; 00987 void Key(HC_KEY const k) {m_Key = k;}; 00988 00990 char const * m_pHSRAOptions; 00992 char const * const HSRAOptions() const {return m_pHSRAOptions;}; 00994 void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;}; 00995 00997 HPoint const * m_pWindowColor; 00999 HPoint const * const WindowColor() const {return m_pWindowColor;}; 01001 void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;}; 01002 01004 bool m_bUseWindowColor; 01006 bool UseWindowColor() const {return m_bUseWindowColor;}; 01008 void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;}; 01009 01011 float m_Window_Width; 01013 float const WindowWidth() const {return m_Window_Width;}; 01015 void WindowWidth(float const f) {m_Window_Width = f;}; 01016 01018 float m_Window_Height; 01020 float const WindowHeight() const {return m_Window_Height;}; 01022 void WindowHeight(float const f) {m_Window_Height = f;}; 01023 01025 float m_Paper_Width; 01027 float const PaperWidth() const {return m_Paper_Width;}; 01029 void PaperWidth(float const f) {m_Paper_Width = f;}; 01030 01032 float m_Paper_Height; 01034 float const PaperHeight() const {return m_Paper_Height;}; 01036 void PaperHeight(float const f) {m_Paper_Height = f;}; 01037 01039 bool m_ForceGrayscale; 01041 bool ForceGrayscale() const {return m_ForceGrayscale;}; 01043 void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;}; 01044 01046 size_t m_lineFuseThreshold; 01047 01051 size_t LineFuseThreshold() const {return m_lineFuseThreshold;}; 01052 01056 void LineFuseThreshold(size_t const tf) {m_lineFuseThreshold = tf;}; 01057 01059 bool m_bFastPrint; 01061 bool FastPrint() const {return m_bFastPrint;}; 01063 void FastPrint(bool const tf) {m_bFastPrint = tf;}; 01064 01066 bool m_bConserveMemory; 01068 bool ConserveMemory() const {return m_bConserveMemory;}; 01070 void ConserveMemory(bool const tf) {m_bConserveMemory = tf;}; 01071 01072 bool m_bWriteAnimations; 01073 bool WriteAnimations() const {return m_bWriteAnimations;}; 01074 void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;}; 01075 01077 bool m_bWindowFrame; 01079 bool WindowFrame() const {return m_bWindowFrame;}; 01081 void WindowFrame(bool const tf) {m_bWindowFrame = tf;}; 01082 01084 bool m_bUseSubscreen; 01086 bool UseSubscreen() const {return m_bUseSubscreen;}; 01088 void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;}; 01089 01091 int m_Image_Dpi; 01093 int const ImageDpi() const {return m_Image_Dpi;}; 01095 void ImageDpi(int const dpi) {m_Image_Dpi = dpi;}; 01096 01098 int m_Paper_Dpi; 01100 int const PaperDpi() const {return m_Paper_Dpi;}; 01102 void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;}; 01103 01105 void * m_pExtendedData; 01106 void * const ExtendedData() const {return m_pExtendedData;}; 01107 void ExtendedData(void * const vp) {m_pExtendedData = vp;}; 01108 void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;}; 01109 01110 bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;}; 01111 void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;}; 01112 float const AnnotLeft() const {return m_fAnnotLeft;}; 01113 void AnnotLeft(float f) {m_fAnnotLeft = f;}; 01114 float const AnnotRight() const {return m_fAnnotRight;}; 01115 void AnnotRight(float f) {m_fAnnotRight = f;}; 01116 float const AnnotBottom() const {return m_fAnnotBottom;}; 01117 void AnnotBottom(float f) {m_fAnnotBottom = f;}; 01118 float const AnnotTop() const {return m_fAnnotTop;}; 01119 void AnnotTop(float f) {m_fAnnotTop = f;}; 01120 01121 01123 const char *m_license; 01124 01125 int m_antialiasLevel; 01126 int m_jpeg_quality; 01127 unsigned char* m_imageOutputBuffer; 01128 size_t m_imageOutputBufferSize; 01129 01130 01131 01132 01134 int m_Version; 01135 int const Version() const {return m_Version;}; 01136 void Version(int const v) {m_Version = v;}; 01137 01139 H_OUTPUT_TYPE m_OutputType; 01141 H_OUTPUT_TYPE OutputType() const {return m_OutputType;}; 01143 void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;}; 01144 01146 bool m_b3dOutput; 01148 bool Output3d() const {return m_b3dOutput;}; 01150 void Output3d(bool const tf) {m_b3dOutput = tf;}; 01151 01153 bool m_bAscii; 01155 bool Ascii() const {return m_bAscii;}; 01157 void Ascii(bool const tf) {m_bAscii = tf;}; 01158 01160 bool m_bStlNormals; 01162 bool StlNormals() const {return m_bStlNormals;}; 01164 void StlNormals(bool const tf) {m_bStlNormals = tf;}; 01165 01167 double m_ratio_cm_to_internal_units; 01168 01172 double PrintToScale() const {return m_ratio_cm_to_internal_units;}; 01173 01189 void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;}; 01190 01197 float m_PageMargins[4]; 01198 01200 HBhvBehaviorManager * m_pBehaviorManager; 01201 01203 char const* m_pDWFModelName; 01204 01208 char const* m_pPDFResourceDirectory; 01209 01211 ExportNameMap m_names; 01212 01214 void *m_pPRCAsmModelFile; 01215 01217 bool m_bActivateOnPageOpen; 01218 01220 float m_fAnnotLeft; 01221 01223 float m_fAnnotRight; 01224 01226 float m_fAnnotBottom; 01227 01229 float m_fAnnotTop; 01230 01232 HPrcBrepCompression m_ePrcBrepCompression; 01233 01235 bool m_bPrcRemoveBRep; 01236 01238 bool m_bPrcRemoveAttributes; 01239 01241 bool m_bPrcUseNameUserData; 01242 01244 MVO_POINTER_SIZED_INT m_iPrcNameUserDataIndex; 01245 01246 01248 bool m_bPrcCompressTessellation; 01249 01251 bool m_bAVIShowCompressionDialog; 01252 01261 char m_bAVICodec[4]; 01262 01264 bool m_bExporting2DDwf; 01265 }; 01266 01267 01269 01275 class MVO_API HOutputHandler 01276 { 01277 01278 public: 01286 HOutputHandler(); 01287 virtual ~HOutputHandler(); 01288 01289 01292 virtual const char * GetOutputName() = 0; 01293 01298 unsigned long GetOutputOps() {return m_OutputOps;}; 01299 01310 virtual void RegisterOutputHandlerTypes() = 0; 01311 01312 01320 virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options); 01321 virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options); 01322 01330 virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options); 01331 01332 01341 virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01342 virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01343 01354 virtual const char * GetOutputTypesString() = 0; 01355 01364 virtual HOutputHandlerStyle GetOutputStyle() = 0; 01365 01372 virtual const char * GetOutputDefaultHSRA(); 01373 01377 const char * GetOutputProgress(); 01378 01382 float GetOutputPercentProgress(); 01383 01387 const __wchar_t * GetOutputInformation(); 01388 01395 HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback); 01396 01397 01404 HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 01405 01412 HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback); 01413 01415 void ReportOutputProgress(const char * progress); 01416 01418 void ReportOutputPercentProgress(float percent_progress); 01419 01421 void ReportOutputInformation(const char * information); 01422 01423 01424 void SetModuleDirectory(const char *module_directory); 01425 void SetModuleDirectory(const __wchar_t *module_directory); 01426 01427 protected: 01428 01432 void SetStartingOutput(); 01433 01437 void SetFinishedOutput(); 01438 01440 void SetOutputOps(unsigned long ops) {m_OutputOps=ops;}; 01442 unsigned long m_OutputOps; 01443 01444 char *m_module_directory; 01445 private: 01446 01447 char *m_progress; 01448 float m_percent_progress1; 01449 float m_percent_progress2; 01450 __wchar_t *m_information; 01451 struct vlist_s *m_information_list; 01452 HIONoticeCallback *m_progress_callback; 01453 HIOPercentNoticeCallback *m_percent_progress_callback; 01454 HIONoticeCallback *m_information_callback; 01455 }; 01456 01462 class MVO_API HIOManager 01463 { 01464 01465 public: 01466 01467 HIOManager(); 01468 virtual ~HIOManager(); 01469 01479 virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler); 01480 01489 virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler); 01490 01501 virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free); 01502 01507 virtual HInputHandler * GetInputHandler(const char * file_type); 01508 HInputHandler * GetInputHandler(const __wchar_t * file_type); 01509 #ifdef _MSC_VER 01510 HInputHandler * GetInputHandler(const unsigned short * file_type); 01511 #endif 01512 01517 virtual HOutputHandler * GetOutputHandler(const char * file_type); 01518 virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type); 01519 01524 virtual void RegisterHandlers(); 01525 01530 virtual const char * GetInputHandlerTypes(); 01531 01536 virtual const char * GetOutputHandlerTypes(); 01537 01538 01545 virtual HIOConnector * CreateConnector(const char * file_type); 01546 01551 virtual void FreeConnector(HIOConnector * old_connector); 01552 01553 01558 static HIOManager *GetCurrentHIOManager(); 01559 01565 static void GetFileOutputResultString(HFileOutputResult result, char *result_str); 01566 01567 private: 01568 void RecordOutputHandler (HOutputHandler * handler); 01569 void RecordInputHandler (HInputHandler * handler); 01570 01571 protected: 01572 01574 struct vhash_s * input_handlers; 01575 01577 struct vhash_s * output_handlers; 01578 01580 struct vhash_s * connector_procs; 01581 01583 struct vlist_s * owned_input_handlers; 01584 01586 struct vlist_s * owned_output_handlers; 01587 01589 struct vlist_s * loaded_input_handlers; 01590 01592 struct vlist_s * loaded_output_handlers; 01593 01595 struct vhash_s * created_connectors; 01596 01597 char * m_input_types; 01598 int m_input_types_allocated; 01599 01600 char * m_output_types; 01601 int m_output_types_allocated; 01602 }; 01603 01604 #ifdef H_PACK_8 01605 #pragma pack(pop) 01606 #endif 01607 01608 #endif 01609