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_bLegacyOptimize = false; 00272 m_bDwgSkipUnreferencedBlocks = false; 00273 00274 // DGN import Options 00275 m_iDGNCellHeaderOption = SINGLE_ENTITY_CELLHEADER; 00276 m_coneFactor = 10.0; 00277 m_factorForSmartSolids = 45.0; 00278 m_bDGNRebaselineModel = false; 00279 m_bDGNImportAllModels = false; 00280 00281 // PRC options 00282 m_pPRCPMIConnector = 0; 00283 m_pPRCTopologyManager = 0; 00284 m_bPRCMergeFaces = false; 00285 m_bPRCImportNonBrepFaces = true; 00286 m_bPRCCreatePRCFileOnly = false; 00287 m_bPRCInstanceShells = true; 00288 m_bPRCCalculatePhysicalProperties = false; 00289 m_pPRCMultiModelSelectionCallback = 0; 00290 m_pPRCAsmModelFile = 0; 00291 m_pPRCDeleteModelFile = false; 00292 m_bPRCStoreUserAttributes = true; 00293 m_pPRCDeleteModelCallback = 0; 00294 m_bPRCImportHiddenObjects = false; 00295 00296 // DWF import options 00297 m_bDisableDWFDrawOrder = false; 00298 m_bDWFRebaselineModel = true; 00299 m_bImportThumbnail = false; 00300 00301 //SKP optimization option 00302 m_bOptimizeSegmentTree = false; 00303 m_license = 0; 00304 00305 m_pOOCNodeDeltas = 0; 00306 m_bOOCAutoUpdate = true; 00307 m_bOOCAutoCleanup = true; 00308 } 00309 00312 HInputHandlerOptions(HInputHandlerOptions const * o) { 00313 m_z_separation = o->m_z_separation; 00314 m_depth_range = o->m_depth_range; 00315 m_pHBaseView = o->m_pHBaseView; 00316 m_pImageName = o->m_pImageName; 00317 m_pImageFormat = o->m_pImageFormat; 00318 m_pConnector = o->m_pConnector; 00319 m_pExtendedData = o->m_pExtendedData; 00320 m_bLocal = o->m_bLocal; 00321 00322 m_license = o->m_license; 00323 00324 //DWG/DGN/SKP option 00325 m_bIgnoreOffEntities = o->m_bIgnoreOffEntities; 00326 00327 //DWG/SKP option 00328 m_bImportMetadata = o->m_bImportMetadata; 00329 00330 00331 //DWG Options 00332 m_bLegacyOptimize = o->m_bLegacyOptimize; 00333 m_bDwgSkipUnreferencedBlocks = o->m_bDwgSkipUnreferencedBlocks; 00334 00335 //DGN Options 00336 m_iDGNCellHeaderOption = o->m_iDGNCellHeaderOption; 00337 m_bDGNRebaselineModel = o->m_bDGNRebaselineModel; 00338 m_coneFactor = o->m_coneFactor; 00339 m_factorForSmartSolids = o->m_factorForSmartSolids; 00340 m_bDGNImportAllModels = o->m_bDGNImportAllModels; 00341 00342 // PRC options 00343 m_pPRCPMIConnector = o->m_pPRCPMIConnector; 00344 m_pPRCTopologyManager = o->m_pPRCTopologyManager; 00345 m_bPRCMergeFaces = o->m_bPRCMergeFaces; 00346 m_bPRCImportNonBrepFaces = o->m_bPRCImportNonBrepFaces; 00347 00348 m_bPRCCreatePRCFileOnly = o->m_bPRCCreatePRCFileOnly; 00349 m_bPRCInstanceShells = o->m_bPRCInstanceShells; 00350 m_bPRCCalculatePhysicalProperties = o->m_bPRCCalculatePhysicalProperties; 00351 m_pPRCMultiModelSelectionCallback = o->m_pPRCMultiModelSelectionCallback; 00352 m_pPRCAsmModelFile = o->m_pPRCAsmModelFile; 00353 m_pPRCDeleteModelFile = o->m_pPRCDeleteModelFile; 00354 m_pPRCDeleteModelCallback = o->m_pPRCDeleteModelCallback; 00355 m_bPRCImportHiddenObjects = o->m_bPRCImportHiddenObjects; 00356 00357 00358 // DWF import options 00359 m_bDisableDWFDrawOrder = o->m_bDisableDWFDrawOrder; 00360 m_bDWFRebaselineModel = o->m_bDWFRebaselineModel; 00361 m_bImportThumbnail = o->m_bImportThumbnail; 00362 00363 00364 //SKP import option 00365 m_bOptimizeSegmentTree = o->m_bOptimizeSegmentTree; 00366 00367 m_pOOCNodeDeltas = o->m_pOOCNodeDeltas; 00368 m_bOOCAutoUpdate = o->m_bOOCAutoUpdate; 00369 m_bOOCAutoCleanup = o->m_bOOCAutoCleanup; 00370 } 00371 00374 HInputHandlerOptions(const HInputHandlerOptions &o) { 00375 m_z_separation = o.m_z_separation; 00376 m_depth_range = o.m_depth_range; 00377 m_pHBaseView = o.m_pHBaseView; 00378 m_pImageName = o.m_pImageName; 00379 m_pImageFormat = o.m_pImageFormat; 00380 m_pConnector = o.m_pConnector; 00381 m_pExtendedData = o.m_pExtendedData; 00382 m_bLocal = o.m_bLocal; 00383 00384 //DWG/DGN/SKP option 00385 m_bIgnoreOffEntities = o.m_bIgnoreOffEntities; 00386 00387 //DWG/SKP option 00388 m_bImportMetadata = o.m_bImportMetadata; 00389 00390 //DWG options 00391 m_bLegacyOptimize = o.m_bLegacyOptimize; 00392 m_bDwgSkipUnreferencedBlocks = o.m_bDwgSkipUnreferencedBlocks; 00393 00394 //DGN options 00395 m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption; 00396 m_bDGNRebaselineModel = o.m_bDGNRebaselineModel; 00397 m_coneFactor = o.m_coneFactor; 00398 m_factorForSmartSolids = o.m_factorForSmartSolids; 00399 m_bDGNImportAllModels = o.m_bDGNImportAllModels; 00400 00401 // PRC options 00402 m_pPRCPMIConnector = o.m_pPRCPMIConnector; 00403 m_pPRCTopologyManager = o.m_pPRCTopologyManager; 00404 m_bPRCMergeFaces = o.m_bPRCMergeFaces; 00405 m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces; 00406 m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly; 00407 m_bPRCInstanceShells = o.m_bPRCInstanceShells; 00408 m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties; 00409 m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback; 00410 m_pPRCAsmModelFile = o.m_pPRCAsmModelFile; 00411 m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile; 00412 m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects; 00413 00414 // DWF import options 00415 m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder; 00416 m_bDWFRebaselineModel = o.m_bDWFRebaselineModel; 00417 m_bImportThumbnail = o.m_bImportThumbnail; 00418 00419 00420 //SKP import option 00421 m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree; 00422 00423 m_pOOCNodeDeltas = o.m_pOOCNodeDeltas; 00424 m_bOOCAutoUpdate = o.m_bOOCAutoUpdate; 00425 m_bOOCAutoCleanup = o.m_bOOCAutoCleanup; 00426 } 00427 00428 virtual ~HInputHandlerOptions(); 00429 00431 HBaseView * m_pHBaseView; 00432 00434 const char * m_pImageName; 00435 00437 const char * m_pImageFormat; 00438 00440 bool m_bLocal; 00441 00443 HStreamFileToolkit * m_tk; 00444 00446 bool m_bLogging; 00447 00449 HIOConnector * m_pConnector; 00450 00452 void * m_pExtendedData; 00453 00455 bool m_bImportMetadata; 00456 00458 const char *m_license; 00459 00461 bool m_bIgnoreOffEntities; 00462 00466 double m_coneFactor; 00467 00471 double m_factorForSmartSolids; 00472 00474 int m_iDGNCellHeaderOption; 00475 00476 00477 00481 enum { 00482 SINGLE_ENTITY_CELLHEADER, 00483 BREAK_CELLHEADER, 00484 OPT_CELLHEADER 00485 }; 00486 00488 void *m_pPRCAsmModelFile; 00489 00491 bool m_pPRCDeleteModelFile; 00492 00494 HIOConnector * m_pPRCPMIConnector; 00496 BREP_Topology * m_pPRCTopologyManager; 00498 bool m_bPRCMergeFaces; 00499 bool m_bPRCImportNonBrepFaces; 00500 00502 bool m_bPRCCreatePRCFileOnly; 00503 bool m_bPRCInstanceShells; 00504 00505 bool m_bPRCCalculatePhysicalProperties; 00507 void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const * in_configs[], 00508 int & out_config_selection); 00510 bool m_bPRCStoreUserAttributes; 00512 void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile); 00514 bool m_bPRCImportHiddenObjects; 00515 00517 bool m_bDGNRebaselineModel; 00518 00520 bool m_bDGNImportAllModels; 00521 00522 // DWF import options 00527 bool m_bDisableDWFDrawOrder; 00528 00530 bool m_bImportThumbnail; 00531 00533 bool m_bDWFRebaselineModel; 00534 00536 bool m_bOptimizeSegmentTree; 00537 00544 bool m_bLegacyOptimize; 00545 00554 bool m_bDwgSkipUnreferencedBlocks; 00555 00556 /* 00557 For 2D files (DWF only as of this time), the drawing can be layered either by using depth range or by offsetting 00558 the z values. To separate the layers by z value, make sure z > 0. To use depth range, make sure depth range > 0. 00559 */ 00560 double m_z_separation; 00561 00566 double m_depth_range; 00567 00569 void * m_pOOCNodeDeltas; 00570 00572 bool m_bOOCAutoUpdate; 00573 00575 bool m_bOOCAutoCleanup; 00576 }; 00577 00578 00579 00581 00587 class MVO_API HInputHandler 00588 { 00589 00590 public: 00598 HInputHandler(); 00599 virtual ~HInputHandler(); 00600 00605 unsigned long GetInputOps() {return m_InputOps;}; 00606 00607 00610 virtual const char * GetInputName() = 0; 00611 00612 00619 virtual void RegisterInputHandlerTypes() = 0; 00620 00627 virtual HInputHandlerStyle GetInputStyle() = 0; 00628 00636 virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options); 00637 virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options); 00638 00639 00648 virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options); 00649 00660 virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00661 virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00662 00663 00673 virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options); 00674 00687 virtual const char * GetInputTypesString() = 0; 00688 00692 const __wchar_t * GetInputProgress(); 00693 00697 float GetInputPercentProgress(); 00698 00702 const __wchar_t * GetInputInformation(); 00703 00710 HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback); 00711 00712 00719 HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 00720 00727 HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback); 00728 00730 void ReportInputProgress(const char * progress); 00731 void ReportInputProgress(const __wchar_t * progress); 00732 00734 void ReportInputPercentProgress(float percent_progress); 00735 00737 void ReportInputInformation(const char * information); 00738 void ReportInputInformation(const __wchar_t * information); 00739 00740 void SetModuleDirectory(const char *module_directory); 00741 void SetModuleDirectory(const __wchar_t *module_directory); 00742 protected: 00743 00747 void SetStartingInput(const char *filename); 00748 void SetStartingInput(const __wchar_t *filename = 0); 00749 00753 void SetFinishedInput(); 00754 00756 void SetInputOps(unsigned long ops) {m_InputOps=ops;}; 00757 00759 unsigned long m_InputOps; 00760 00761 __wchar_t *m_module_directory; 00762 00763 private: 00764 00765 __wchar_t *m_progress; 00766 float m_percent_progress1; 00767 float m_percent_progress2; 00768 __wchar_t *m_information; 00769 struct vlist_s *m_information_list; 00770 HIONoticeCallback *m_progress_callback; 00771 HIONoticeCallback *m_information_callback; 00772 HIOPercentNoticeCallback *m_percent_progress_callback; 00773 }; 00774 00778 enum HOutputHandlerStyle 00779 { 00780 HOutputHandlerStyleModel, 00781 HOutputHandlerStyleImage, 00782 HOutputHandlerStyleHardcopy, 00783 HOutputHandlerStyleHTML, 00784 HOutputHandlerStyleDontCare 00785 }; 00786 00793 class MVO_API ExportNameMap 00794 { 00795 private: 00796 void * _imp; 00797 public: 00798 ExportNameMap(); 00799 ~ExportNameMap(); 00800 00801 H_FORMAT_TEXT lookup(HC_KEY) const; 00802 void tag(HC_KEY, H_FORMAT_TEXT const &); 00803 }; 00804 00812 enum HPrcBrepCompression { 00813 PrcBrepCompressionNone, 00814 PrcBrepCompressionLow, 00815 PrcBrepCompressionMedium, 00816 PrcBrepCompressionHigh 00817 }; 00818 00824 class MVO_API HOutputHandlerOptions 00825 { 00826 public: 00828 HOutputHandlerOptions(); 00829 00830 virtual char const * GetType() const; 00831 00834 virtual bool PopulateOptions(); 00835 00839 HOutputHandlerOptions(HOutputHandlerOptions const *o) { 00840 Init(o); 00841 }; 00842 00846 HOutputHandlerOptions(const HOutputHandlerOptions &o) { 00847 Init(&o); 00848 }; 00849 00850 00851 virtual ~HOutputHandlerOptions(); 00852 00856 void Init(HOutputHandlerOptions const *o); 00857 00859 HBaseView * m_pHBaseView; 00861 HBaseView * const View() const {return m_pHBaseView;}; 00863 void View(HBaseView * const v) {m_pHBaseView = v;}; 00864 00866 HBaseModel * m_pHBaseModel; 00868 HBaseModel * const Model() const {return m_pHBaseModel;}; 00870 void Model(HBaseModel * const m) {m_pHBaseModel = m;}; 00871 00873 HCamera * m_pCamera; 00875 HCamera * const Camera() const {return m_pCamera;}; 00877 void Camera(HCamera * const c) {m_pCamera = c;}; 00878 00880 HC_KEY m_Key; 00882 HC_KEY const Key() const {return m_Key;}; 00884 void Key(HC_KEY const k) {m_Key = k;}; 00885 00887 char const * m_pHSRAOptions; 00889 char const * const HSRAOptions() const {return m_pHSRAOptions;}; 00891 void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;}; 00892 00894 HPoint const * m_pWindowColor; 00896 HPoint const * const WindowColor() const {return m_pWindowColor;}; 00898 void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;}; 00899 00901 bool m_bUseWindowColor; 00903 bool UseWindowColor() const {return m_bUseWindowColor;}; 00905 void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;}; 00906 00908 float m_Window_Width; 00910 float const WindowWidth() const {return m_Window_Width;}; 00912 void WindowWidth(float const f) {m_Window_Width = f;}; 00913 00915 float m_Window_Height; 00917 float const WindowHeight() const {return m_Window_Height;}; 00919 void WindowHeight(float const f) {m_Window_Height = f;}; 00920 00922 float m_Paper_Width; 00924 float const PaperWidth() const {return m_Paper_Width;}; 00926 void PaperWidth(float const f) {m_Paper_Width = f;}; 00927 00929 float m_Paper_Height; 00931 float const PaperHeight() const {return m_Paper_Height;}; 00933 void PaperHeight(float const f) {m_Paper_Height = f;}; 00934 00936 bool m_ForceGrayscale; 00938 bool ForceGrayscale() const {return m_ForceGrayscale;}; 00940 void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;}; 00941 00943 size_t m_lineFuseThreshold; 00944 00948 size_t LineFuseThreshold() const {return m_lineFuseThreshold;}; 00949 00953 void LineFuseThreshold(size_t const tf) {m_lineFuseThreshold = tf;}; 00954 00956 bool m_bFastPrint; 00958 bool FastPrint() const {return m_bFastPrint;}; 00960 void FastPrint(bool const tf) {m_bFastPrint = tf;}; 00961 00963 bool m_bConserveMemory; 00965 bool ConserveMemory() const {return m_bConserveMemory;}; 00967 void ConserveMemory(bool const tf) {m_bConserveMemory = tf;}; 00968 00969 bool m_bWriteAnimations; 00970 bool WriteAnimations() const {return m_bWriteAnimations;}; 00971 void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;}; 00972 00974 bool m_bWindowFrame; 00976 bool WindowFrame() const {return m_bWindowFrame;}; 00978 void WindowFrame(bool const tf) {m_bWindowFrame = tf;}; 00979 00981 bool m_bUseSubscreen; 00983 bool UseSubscreen() const {return m_bUseSubscreen;}; 00985 void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;}; 00986 00988 int m_Image_Dpi; 00990 int const ImageDpi() const {return m_Image_Dpi;}; 00992 void ImageDpi(int const dpi) {m_Image_Dpi = dpi;}; 00993 00995 int m_Paper_Dpi; 00997 int const PaperDpi() const {return m_Paper_Dpi;}; 00999 void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;}; 01000 01002 void * m_pExtendedData; 01003 void * const ExtendedData() const {return m_pExtendedData;}; 01004 void ExtendedData(void * const vp) {m_pExtendedData = vp;}; 01005 void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;}; 01006 01007 bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;}; 01008 void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;}; 01009 float const AnnotLeft() const {return m_fAnnotLeft;}; 01010 void AnnotLeft(float f) {m_fAnnotLeft = f;}; 01011 float const AnnotRight() const {return m_fAnnotRight;}; 01012 void AnnotRight(float f) {m_fAnnotRight = f;}; 01013 float const AnnotBottom() const {return m_fAnnotBottom;}; 01014 void AnnotBottom(float f) {m_fAnnotBottom = f;}; 01015 float const AnnotTop() const {return m_fAnnotTop;}; 01016 void AnnotTop(float f) {m_fAnnotTop = f;}; 01017 01018 01020 const char *m_license; 01021 01022 int m_antialiasLevel; 01023 int m_jpeg_quality; 01024 unsigned char* m_imageOutputBuffer; 01025 size_t m_imageOutputBufferSize; 01026 01027 01028 01029 01031 int m_Version; 01032 int const Version() const {return m_Version;}; 01033 void Version(int const v) {m_Version = v;}; 01034 01036 H_OUTPUT_TYPE m_OutputType; 01038 H_OUTPUT_TYPE OutputType() const {return m_OutputType;}; 01040 void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;}; 01041 01043 bool m_b3dOutput; 01045 bool Output3d() const {return m_b3dOutput;}; 01047 void Output3d(bool const tf) {m_b3dOutput = tf;}; 01048 01050 bool m_bAscii; 01052 bool Ascii() const {return m_bAscii;}; 01054 void Ascii(bool const tf) {m_bAscii = tf;}; 01055 01057 bool m_bStlNormals; 01059 bool StlNormals() const {return m_bStlNormals;}; 01061 void StlNormals(bool const tf) {m_bStlNormals = tf;}; 01062 01064 double m_ratio_cm_to_internal_units; 01065 01069 double PrintToScale() const {return m_ratio_cm_to_internal_units;}; 01070 01086 void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;}; 01087 01094 float m_PageMargins[4]; 01095 01097 HBhvBehaviorManager * m_pBehaviorManager; 01098 01100 char const* m_pDWFModelName; 01101 01105 char const* m_pPDFResourceDirectory; 01106 01108 ExportNameMap m_names; 01109 01111 void *m_pPRCAsmModelFile; 01112 01114 bool m_bActivateOnPageOpen; 01115 01117 float m_fAnnotLeft; 01118 01120 float m_fAnnotRight; 01121 01123 float m_fAnnotBottom; 01124 01126 float m_fAnnotTop; 01127 01129 HPrcBrepCompression m_ePrcBrepCompression; 01130 01132 bool m_bPrcRemoveBRep; 01133 01135 bool m_bPrcRemoveAttributes; 01136 01138 bool m_bPrcUseNameUserData; 01139 01141 MVO_POINTER_SIZED_INT m_iPrcNameUserDataIndex; 01142 01143 01145 bool m_bPrcCompressTessellation; 01146 01148 bool m_bAVIShowCompressionDialog; 01149 01158 char m_bAVICodec[4]; 01159 01161 bool m_bExporting2DDwf; 01162 }; 01163 01164 01166 01172 class MVO_API HOutputHandler 01173 { 01174 01175 public: 01183 HOutputHandler(); 01184 virtual ~HOutputHandler(); 01185 01186 01189 virtual const char * GetOutputName() = 0; 01190 01195 unsigned long GetOutputOps() {return m_OutputOps;}; 01196 01207 virtual void RegisterOutputHandlerTypes() = 0; 01208 01209 01217 virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options); 01218 virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options); 01219 01227 virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options); 01228 01229 01238 virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01239 virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options); 01240 01251 virtual const char * GetOutputTypesString() = 0; 01252 01261 virtual HOutputHandlerStyle GetOutputStyle() = 0; 01262 01269 virtual const char * GetOutputDefaultHSRA(); 01270 01274 const char * GetOutputProgress(); 01275 01279 float GetOutputPercentProgress(); 01280 01284 const __wchar_t * GetOutputInformation(); 01285 01292 HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback); 01293 01294 01301 HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback); 01302 01309 HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback); 01310 01312 void ReportOutputProgress(const char * progress); 01313 01315 void ReportOutputPercentProgress(float percent_progress); 01316 01318 void ReportOutputInformation(const char * information); 01319 01320 01321 void SetModuleDirectory(const char *module_directory); 01322 void SetModuleDirectory(const __wchar_t *module_directory); 01323 01324 protected: 01325 01329 void SetStartingOutput(); 01330 01334 void SetFinishedOutput(); 01335 01337 void SetOutputOps(unsigned long ops) {m_OutputOps=ops;}; 01339 unsigned long m_OutputOps; 01340 01341 char *m_module_directory; 01342 private: 01343 01344 char *m_progress; 01345 float m_percent_progress1; 01346 float m_percent_progress2; 01347 __wchar_t *m_information; 01348 struct vlist_s *m_information_list; 01349 HIONoticeCallback *m_progress_callback; 01350 HIOPercentNoticeCallback *m_percent_progress_callback; 01351 HIONoticeCallback *m_information_callback; 01352 }; 01353 01359 class MVO_API HIOManager 01360 { 01361 01362 public: 01363 01364 HIOManager(); 01365 virtual ~HIOManager(); 01366 01376 virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler); 01377 01386 virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler); 01387 01398 virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free); 01399 01404 virtual HInputHandler * GetInputHandler(const char * file_type); 01405 HInputHandler * GetInputHandler(const __wchar_t * file_type); 01406 #ifdef _MSC_VER 01407 HInputHandler * GetInputHandler(const unsigned short * file_type); 01408 #endif 01409 01414 virtual HOutputHandler * GetOutputHandler(const char * file_type); 01415 virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type); 01416 01421 virtual void RegisterHandlers(); 01422 01427 virtual const char * GetInputHandlerTypes(); 01428 01433 virtual const char * GetOutputHandlerTypes(); 01434 01435 01442 virtual HIOConnector * CreateConnector(const char * file_type); 01443 01448 virtual void FreeConnector(HIOConnector * old_connector); 01449 01450 01455 static HIOManager *GetCurrentHIOManager(); 01456 01462 static void GetFileOutputResultString(HFileOutputResult result, char *result_str); 01463 01464 private: 01465 void RecordOutputHandler (HOutputHandler * handler); 01466 void RecordInputHandler (HInputHandler * handler); 01467 01468 protected: 01469 01471 struct vhash_s * input_handlers; 01472 01474 struct vhash_s * output_handlers; 01475 01477 struct vhash_s * connector_procs; 01478 01480 struct vlist_s * owned_input_handlers; 01481 01483 struct vlist_s * owned_output_handlers; 01484 01486 struct vlist_s * loaded_input_handlers; 01487 01489 struct vlist_s * loaded_output_handlers; 01490 01492 struct vhash_s * created_connectors; 01493 01494 char * m_input_types; 01495 int m_input_types_allocated; 01496 01497 char * m_output_types; 01498 int m_output_types_allocated; 01499 }; 01500 01501 #ifdef H_PACK_8 01502 #pragma pack(pop) 01503 #endif 01504 01505 #endif 01506