Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HIOManager.h

Go to the documentation of this file.
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