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 HPDFOptions;
00034 class HBaseView;
00035 class HCamera;
00036 class HBaseModel;
00037 struct vlist_s;
00038 class HStreamFileToolkit;
00039 class HBhvBehaviorManager;
00040 class BREP_Topology;
00041 
00042 enum H_OUTPUT_TYPE
00043 {
00044     H_OUTPUT_TYPE_DEFAULT = 0,
00045     H_PDF_OUTPUT_PORTFOLIO,
00046     H_PDF_OUTPUT_3D,
00047     H_PDF_OUTPUT_2D,
00048     H_SINGLE_PASS_ZSORT,
00049     H_SINGLE_PASS_NO_HIDDEN_SURFACES
00050 };
00051 
00052 
00056 #define HInputOpNone                    (1UL<<0)
00057 
00061 #define HInputOpFileInputByKey          (1UL<<1)
00062 
00066 #define HInputOpFileInputToImageKey     (1UL<<2)
00067 
00071 #define HOutputOpNone                   (1UL<<0)
00072 
00076 #define HOutputOpFileOutputByKey        (1UL<<1)
00077 
00081 #define HOutputOpFileOutputFromImageKey (1UL<<2)
00082 
00083 
00088 #define HIORegisterInputType(type,input_object) do {HIOManager::GetCurrentHIOManager()->RegisterInputHandler(type, input_object); }while(0);
00089 
00090 
00091 
00093 #define HIORegisterOutputType(type,output_object) do { HIOManager::GetCurrentHIOManager()->RegisterOutputHandler(type, output_object); }while(0); 
00094 
00095 
00096 
00097 
00102 class MVO_API HIONoticeCallback
00103 {
00104 public:
00105 
00106     virtual ~HIONoticeCallback() {}
00111     virtual void Notice(const char * notice) = 0;
00112     virtual void Notice(const __wchar_t * notice) {
00113         UNREFERENCED(notice);
00114     }
00115 #ifdef H_USHORT_OVERLOAD
00116     virtual void Notice(const unsigned short * notice) {
00117         Notice((__wchar_t const *) notice);
00118     }
00119 #endif
00120 };
00121 
00125 class MVO_API HIOPercentNoticeCallback
00126 {
00127 public:
00128     virtual ~HIOPercentNoticeCallback();
00133     virtual void Notice(float notice) =0;
00134 };
00135 
00136 
00137 
00140 typedef void * (*HIO_CREATE_FREE_FUNCTION)(void *);
00141 
00144 typedef void (*HIO_FREE_CONNECTOR_FUNCTION)(void *);
00145 
00151 class MVO_API HIOConnector
00152 {
00153 public:
00154 
00155     /*Constructs an HIOConnector object.*/
00156     HIOConnector();
00157     virtual ~HIOConnector();
00158 
00166     virtual HC_KEY GetHoopsEntity(void * pKernelEntity);
00167     virtual HC_KEY GetHoopsEntity(void * pKernelEntity, HC_KEY modelKey);
00168 
00176     virtual void * GetKernelEntity(HC_KEY key);
00177     virtual void * GetKernelEntity(HC_KEY key, HC_KEY modelKey);
00178 
00185     virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList);
00186     virtual bool GetHoopsEntities(void * pKernelEntity, vlist_s *ret_HoopsKeysList, HC_KEY modelKey);
00187 
00194     virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList);
00195     virtual bool GetKernelEntities(HC_KEY key, vlist_s *ret_KernelEntitiesList, HC_KEY modelKey);
00196 
00202     virtual void AddConnection(HC_KEY key, void* pKernelEntity);
00203     virtual void AddConnection(HC_KEY key, void* pKernelEntity, HC_KEY modelKey);
00204 
00205 
00212     virtual void OptimizeTree(const char * segname, const char * option_string);
00213 
00214 protected:
00215 
00217     struct vhash_s *mhash_Hoops2Kernel;
00218 
00220     struct vhash_s *mhash_Kernel2Hoops;
00221 
00222 };
00223 
00228 enum HInputHandlerStyle {
00229     HInputHandlerStyleModel, 
00230     HInputHandlerStyleImage  
00231 };
00232 
00237 enum HDwgViewVector {
00238     DwgTopView,             
00239     DwgIsoView,             
00240     DwgViewportInherit,     
00241     DwgSceneInherit         
00242 };
00243 
00249 class MVO_API HInputHandlerOptions 
00250 {
00251 public:
00252 
00254     HInputHandlerOptions() {
00255         m_z_separation = 1;
00256         m_depth_range = 0;
00257         m_pHBaseView = 0;
00258         m_pImageName = 0;
00259         m_pImageFormat = 0;
00260         m_pConnector = 0;
00261         m_pExtendedData = 0;
00262         m_bLocal = false;
00263         m_tk = 0;
00264         m_bLogging = false;
00265 
00266     
00267         // Generic options used in DGN, SKP and DWG importer
00268         m_bIgnoreOffEntities = false;
00269 
00270         //DWG/SKP option
00271         m_bImportMetadata = false;
00272 
00273         // DWG import options (try and move them somewhere else)
00274         m_bInputViaHSF = false;
00275         m_Deviation = 10.0;
00276         m_bImportWireframeForBrep = false;
00277         m_numIsolines = 0;
00278         m_listRegAppNames = 0;
00279         m_listEntityType = 0;
00280         m_bForceReimport = false;
00281         m_listDWGLayouts = 0;
00282         m_bAttachDWGHandles = false;
00283         m_bImportAllLayouts = false;
00284         m_bDWGInsertMeshesAsShells = false;
00285         m_bDisableDWGDrawOrder = false;
00286         m_eDwgViewVector = DwgViewportInherit;
00287         m_sDwgContrastColorRgb = HPoint(0, 0, 0);
00288         m_bLegacyOptimize = false;
00289         m_bDwgDepthRangeDrawOrder = false;
00290 
00291         // DGN import Options
00292         m_iDGNCellHeaderOption = SINGLE_ENTITY_CELLHEADER;
00293         m_coneFactor = 10.0;
00294         m_factorForSmartSolids = 45.0;
00295         m_bDGNRebaselineModel = false;
00296         m_bDGNImportAllModels = false;
00297 
00298         // PRC options
00299         m_pPRCPMIConnector = 0;
00300         m_pPRCTopologyManager = 0;
00301         m_bPRCMergeFaces = false;
00302         m_bPRCImportNonBrepFaces = true;
00303         m_bPRCCreatePRCFileOnly = false;
00304         m_bPRCInstanceShells = true;
00305         m_bPRCCalculatePhysicalProperties = false;
00306         m_pPRCMultiModelSelectionCallback = 0;
00307         m_pPRCAsmModelFile = 0;
00308         m_pPRCDeleteModelFile = false;
00309         m_bPRCStoreUserAttributes = true;
00310         m_pPRCDeleteModelCallback = 0;
00311         m_bPRCImportHiddenObjects = false;
00312 
00313         // DWF import options
00314         m_bDisableDWFDrawOrder = false;
00315         m_bDWFRebaselineModel = true;
00316         m_bImportThumbnail = false;
00317 
00318         //SKP optimization option
00319         m_bOptimizeSegmentTree = false;
00320         m_license = 0;
00321 
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     };
00396 
00399     HInputHandlerOptions(const HInputHandlerOptions &o) {
00400         m_z_separation = o.m_z_separation;
00401         m_depth_range = o.m_depth_range;
00402         m_pHBaseView = o.m_pHBaseView;
00403         m_pImageName = o.m_pImageName;
00404         m_pImageFormat = o.m_pImageFormat;
00405         m_pConnector = o.m_pConnector;
00406         m_pExtendedData = o.m_pExtendedData;
00407         m_bLocal = o.m_bLocal;
00408 
00409         //DWG/DGN/SKP option
00410         m_bIgnoreOffEntities = o.m_bIgnoreOffEntities;
00411 
00412         //DWG/SKP option
00413         m_bImportMetadata = o.m_bImportMetadata;
00414 
00415         //DWG options
00416         m_bInputViaHSF = o.m_bInputViaHSF;
00417         m_Deviation = o.m_Deviation;
00418         m_bImportWireframeForBrep = o.m_bImportWireframeForBrep;
00419         m_numIsolines = o.m_numIsolines;
00420         m_listRegAppNames = o.m_listRegAppNames;
00421         m_listEntityType = o.m_listEntityType;
00422         m_bForceReimport = o.m_bForceReimport;
00423         m_listDWGLayouts = o.m_listDWGLayouts;
00424         m_bAttachDWGHandles = o.m_bAttachDWGHandles;
00425         m_bImportAllLayouts = o.m_bImportAllLayouts;
00426         m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells;
00427         m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder;
00428         m_eDwgViewVector = o.m_eDwgViewVector;
00429         m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb;
00430         m_bLegacyOptimize = o.m_bLegacyOptimize;
00431         m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder;
00432 
00433         //DGN options
00434         m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption;
00435         m_bDGNRebaselineModel = o.m_bDGNRebaselineModel;
00436         m_coneFactor = o.m_coneFactor;
00437         m_factorForSmartSolids = o.m_factorForSmartSolids;
00438         m_bDGNImportAllModels = o.m_bDGNImportAllModels;
00439 
00440         // PRC options
00441         m_pPRCPMIConnector = o.m_pPRCPMIConnector;
00442         m_pPRCTopologyManager = o.m_pPRCTopologyManager;
00443         m_bPRCMergeFaces = o.m_bPRCMergeFaces;
00444         m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces;
00445         m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly;
00446         m_bPRCInstanceShells = o.m_bPRCInstanceShells;
00447         m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties;
00448         m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback;
00449         m_pPRCAsmModelFile = o.m_pPRCAsmModelFile;
00450         m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile;
00451         m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects;
00452 
00453         // DWF import options
00454         m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder;
00455         m_bDWFRebaselineModel = o.m_bDWFRebaselineModel;
00456         m_bImportThumbnail = o.m_bImportThumbnail;
00457         
00458 
00459         //SKP import option
00460         m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree;
00461 
00462     };
00463 
00464     virtual ~HInputHandlerOptions();
00465 
00467     HBaseView * m_pHBaseView;
00468 
00470     const char * m_pImageName;
00471 
00473     const char * m_pImageFormat;
00474 
00476     bool m_bLocal;
00477 
00479     HStreamFileToolkit * m_tk;
00480 
00482     bool m_bLogging;
00483 
00485     HIOConnector * m_pConnector;
00486 
00488     void * m_pExtendedData;
00489 
00491     bool m_bInputViaHSF;
00492 
00494     double m_Deviation;
00495 
00497     bool m_bImportMetadata;
00498 
00500     const char *m_license;
00501 
00502 
00503 
00504 
00508     struct vlist_s * m_listRegAppNames;
00509 
00511     struct vlist_s * m_listEntityType;
00512 
00514     bool m_bImportWireframeForBrep;
00515 
00517     double m_numIsolines;
00518 
00520     bool m_bForceReimport;
00521 
00526     bool m_bDisableDWGDrawOrder;
00527 
00529     struct vlist_s * m_listDWGLayouts;
00530 
00532     bool m_bIgnoreOffEntities;
00533 
00537     double m_coneFactor;
00538 
00542     double m_factorForSmartSolids;
00543 
00545     bool m_bAttachDWGHandles;
00546 
00548     int m_iDGNCellHeaderOption;
00549 
00550 
00551     
00555     enum {
00556         SINGLE_ENTITY_CELLHEADER, 
00557         BREAK_CELLHEADER,         
00558         OPT_CELLHEADER            
00559     };
00560 
00562     void *m_pPRCAsmModelFile;
00563 
00565     bool m_pPRCDeleteModelFile;         
00566 
00568     HIOConnector *      m_pPRCPMIConnector;
00570     BREP_Topology *     m_pPRCTopologyManager;
00572     bool                m_bPRCMergeFaces;
00573     bool                m_bPRCImportNonBrepFaces;
00574 
00576     bool                m_bPRCCreatePRCFileOnly;
00577     bool                m_bPRCInstanceShells;
00578 
00579     bool                m_bPRCCalculatePhysicalProperties;
00581     void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const ** in_configs, 
00582                                                int & out_config_selection);
00584     bool                m_bPRCStoreUserAttributes;
00586     void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile);
00588     bool                m_bPRCImportHiddenObjects;
00589     
00590 
00593     bool  m_bImportAllLayouts;
00594 
00596     bool m_bDGNRebaselineModel;
00597     
00599     bool m_bDGNImportAllModels;
00600 
00604     bool m_bDWGInsertMeshesAsShells;
00605 
00606     // DWF import options
00611     bool m_bDisableDWFDrawOrder;
00612 
00614     bool m_bImportThumbnail;
00615 
00617     bool m_bDWFRebaselineModel;
00618 
00620     bool m_bOptimizeSegmentTree;
00621     
00627     HDwgViewVector m_eDwgViewVector;
00628 
00635     HPoint m_sDwgContrastColorRgb;
00636 
00643     bool m_bLegacyOptimize;
00644 
00651     bool m_bDwgDepthRangeDrawOrder;
00652 
00657     double m_z_separation;
00658 
00663     double m_depth_range;
00664 };
00665 
00666 
00667 
00669 
00675 class MVO_API HInputHandler 
00676 {
00677 
00678 public:
00686     HInputHandler();
00687     virtual ~HInputHandler();
00688 
00693     unsigned long GetInputOps() {return m_InputOps;};
00694 
00695 
00698     virtual const char * GetInputName() = 0;  
00699 
00700 
00707     virtual void RegisterInputHandlerTypes() = 0;
00708 
00715     virtual HInputHandlerStyle GetInputStyle() = 0;
00716 
00724     virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options);
00725     virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options);
00726 
00727 
00736     virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options);
00737 
00748     virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options);
00749     virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options);
00750 
00751 
00761     virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options);
00762 
00775     virtual const char * GetInputTypesString() = 0;
00776 
00780     const __wchar_t * GetInputProgress();
00781 
00785     float GetInputPercentProgress();
00786 
00790     const __wchar_t * GetInputInformation();
00791 
00798     HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback);
00799     
00800     
00807     HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback);
00808     
00815     HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback);
00816 
00818     void ReportInputProgress(const char * progress);
00819     void ReportInputProgress(const __wchar_t * progress);
00820 
00822     void ReportInputPercentProgress(float percent_progress);
00823 
00825     void ReportInputInformation(const char * information);
00826     void ReportInputInformation(const __wchar_t * information);
00827 
00828     void SetModuleDirectory(const char *module_directory);
00829     void SetModuleDirectory(const __wchar_t *module_directory);
00830 protected:
00831 
00835     void SetStartingInput(const char *filename);
00836     void SetStartingInput(const __wchar_t *filename = 0);
00837 
00841     void SetFinishedInput();
00842 
00844     void SetInputOps(unsigned long ops) {m_InputOps=ops;};
00845 
00847     unsigned long m_InputOps;
00848 
00849     __wchar_t *m_module_directory;
00850 
00851 private:
00852 
00853     __wchar_t *m_progress;
00854     float m_percent_progress1;
00855     float m_percent_progress2;
00856     __wchar_t *m_information;
00857     struct vlist_s *m_information_list;
00858     HIONoticeCallback *m_progress_callback;
00859     HIONoticeCallback *m_information_callback;
00860     HIOPercentNoticeCallback *m_percent_progress_callback;
00861 };
00862 
00866 enum HOutputHandlerStyle 
00867 {
00868     HOutputHandlerStyleModel, 
00869     HOutputHandlerStyleImage, 
00870     HOutputHandlerStyleHardcopy, 
00871     HOutputHandlerStyleHTML, 
00872     HOutputHandlerStyleDontCare
00873 };
00874 
00881 class MVO_API ExportNameMap
00882 {
00883 private:
00884     void * _imp;
00885 public:
00886     ExportNameMap();
00887     ~ExportNameMap();
00888 
00889     H_FORMAT_TEXT lookup(HC_KEY) const;
00890     void tag(HC_KEY, H_FORMAT_TEXT const &);
00891 };
00892 
00900 enum HPrcBrepCompression {
00901     PrcBrepCompressionNone,     
00902     PrcBrepCompressionLow,      
00903     PrcBrepCompressionMedium,   
00904     PrcBrepCompressionHigh      
00905 };
00906 
00912 class MVO_API HOutputHandlerOptions 
00913 {
00914 public:
00916     HOutputHandlerOptions();
00917 
00918     virtual char const * GetType() const;
00919 
00922     virtual bool PopulateOptions();
00923     
00927     HOutputHandlerOptions(HOutputHandlerOptions const *o) {
00928          Init(o);
00929     };
00930 
00934     HOutputHandlerOptions(const HOutputHandlerOptions &o) {
00935         Init(&o);
00936     };
00937 
00938 
00939     virtual ~HOutputHandlerOptions();
00940 
00944     void Init(HOutputHandlerOptions const *o);
00945 
00947     HBaseView * m_pHBaseView;
00949     HBaseView * const View() const {return m_pHBaseView;};
00951     void View(HBaseView * const v) {m_pHBaseView = v;};
00952 
00954     HBaseModel * m_pHBaseModel;
00956     HBaseModel * const Model() const {return m_pHBaseModel;};
00958     void Model(HBaseModel * const m) {m_pHBaseModel = m;};
00959 
00961     HCamera * m_pCamera;
00963     HCamera * const Camera() const {return m_pCamera;};
00965     void Camera(HCamera * const c) {m_pCamera = c;};
00966 
00968     HC_KEY m_Key;
00970     HC_KEY const Key() const {return m_Key;};
00972     void Key(HC_KEY const k) {m_Key = k;};
00973 
00975     char const * m_pHSRAOptions;
00977     char const * const HSRAOptions() const {return m_pHSRAOptions;};
00979     void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;};
00980 
00982     HPoint const * m_pWindowColor;
00984     HPoint const * const WindowColor() const {return m_pWindowColor;};
00986     void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;};
00987 
00989     bool m_bUseWindowColor;
00991     bool UseWindowColor() const {return m_bUseWindowColor;};
00993     void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;};
00994 
00996     float m_Window_Width;
00998     float const WindowWidth() const {return m_Window_Width;};
01000     void WindowWidth(float const f) {m_Window_Width = f;};
01001 
01003     float m_Window_Height;
01005     float const WindowHeight() const {return m_Window_Height;};
01007     void WindowHeight(float const f) {m_Window_Height = f;};
01008 
01010     float m_Paper_Width;
01012     float const PaperWidth() const {return m_Paper_Width;};
01014     void PaperWidth(float const f) {m_Paper_Width = f;};
01015 
01017     float m_Paper_Height;
01019     float const PaperHeight() const {return m_Paper_Height;};
01021     void PaperHeight(float const f) {m_Paper_Height = f;};
01022 
01024     bool m_ForceGrayscale;
01026     bool ForceGrayscale() const {return m_ForceGrayscale;};
01028     void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;};
01029 
01031     bool m_bFastPrint;
01033     bool FastPrint() const {return m_bFastPrint;};
01035     void FastPrint(bool const tf) {m_bFastPrint = tf;};
01036 
01038     bool m_bConserveMemory;
01040     bool ConserveMemory() const {return m_bConserveMemory;};
01042     void ConserveMemory(bool const tf) {m_bConserveMemory = tf;};
01043 
01044     bool m_bWriteAnimations;
01045     bool WriteAnimations() const {return m_bWriteAnimations;};
01046     void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;};
01047 
01049     bool m_bWindowFrame;
01051     bool WindowFrame() const {return m_bWindowFrame;};
01053     void WindowFrame(bool const tf) {m_bWindowFrame = tf;};
01054 
01056     bool m_bUseSubscreen;
01058     bool UseSubscreen() const {return m_bUseSubscreen;};
01060     void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;};
01061 
01063     int m_Image_Dpi;
01065     int const ImageDpi() const {return m_Image_Dpi;};
01067     void ImageDpi(int const dpi) {m_Image_Dpi = dpi;};
01068 
01070     int m_Paper_Dpi;
01072     int const PaperDpi() const {return m_Paper_Dpi;};
01074     void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;};
01075 
01077     void * m_pExtendedData;
01078     void * const ExtendedData() const {return m_pExtendedData;};
01079     void ExtendedData(void * const vp) {m_pExtendedData = vp;};
01080     void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;};
01081 
01082     bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;};
01083     void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;};
01084     float const AnnotLeft() const {return m_fAnnotLeft;};
01085     void AnnotLeft(float f) {m_fAnnotLeft = f;};
01086     float const AnnotRight() const {return m_fAnnotRight;};
01087     void AnnotRight(float f) {m_fAnnotRight = f;};
01088     float const AnnotBottom() const {return m_fAnnotBottom;};
01089     void AnnotBottom(float f) {m_fAnnotBottom = f;};
01090     float const AnnotTop() const {return m_fAnnotTop;};
01091     void AnnotTop(float f) {m_fAnnotTop = f;};
01092 
01093 
01095     const char *m_license;
01096 
01097     int m_antialiasLevel;
01098     int m_jpeg_quality;
01099     unsigned char* m_imageOutputBuffer;
01100     size_t m_imageOutputBufferSize;
01101 
01102 
01103 
01104 
01106     int m_Version;
01107     int const Version() const {return m_Version;};
01108     void Version(int const v) {m_Version = v;};
01109 
01111     H_OUTPUT_TYPE m_OutputType;
01113     H_OUTPUT_TYPE OutputType() const {return m_OutputType;};
01115     void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;};
01116 
01118     bool m_b3dOutput;
01120     bool Output3d() const {return m_b3dOutput;};
01122     void Output3d(bool const tf) {m_b3dOutput = tf;};
01123 
01125     bool m_bAscii;
01127     bool Ascii() const {return m_bAscii;};
01129     void Ascii(bool const tf) {m_bAscii = tf;};
01130 
01132     bool m_bStlNormals;
01134     bool StlNormals() const {return m_bStlNormals;};
01136     void StlNormals(bool const tf) {m_bStlNormals = tf;};
01137 
01139     double m_ratio_cm_to_internal_units;
01140 
01144     double PrintToScale() const {return m_ratio_cm_to_internal_units;};
01145 
01161     void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;};
01162 
01169     float m_PageMargins[4];
01170 
01172     HBhvBehaviorManager * m_pBehaviorManager;
01173 
01175     char const* m_pDWFModelName;
01176 
01178     ExportNameMap m_names;
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 
01215     char m_bAVICodec[4];
01216 
01218     bool m_bExporting2DDwf;
01219 };
01220 
01221 
01223 
01229 class MVO_API HOutputHandler 
01230 {
01231 
01232 public:
01240     HOutputHandler();
01241     virtual ~HOutputHandler();
01242 
01243 
01246     virtual const char * GetOutputName() = 0;  
01247 
01252     unsigned long GetOutputOps() {return m_OutputOps;};
01253     
01264     virtual void RegisterOutputHandlerTypes() = 0;
01265 
01266 
01274     virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options);
01275     virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
01276 
01284     virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options);
01285 
01286 
01295     virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options);
01296     virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options);
01297 
01308     virtual const char * GetOutputTypesString() = 0;
01309 
01318     virtual HOutputHandlerStyle GetOutputStyle() = 0;
01319     
01326     virtual const char * GetOutputDefaultHSRA();
01327 
01331     const char * GetOutputProgress();
01332 
01336     float GetOutputPercentProgress();
01337 
01341     const __wchar_t * GetOutputInformation();
01342 
01349     HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback);
01350 
01351     
01358     HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback);
01359     
01366     HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback);
01367 
01369     void ReportOutputProgress(const char * progress);
01370 
01372     void ReportOutputPercentProgress(float percent_progress);
01373 
01375     void ReportOutputInformation(const char * information);
01376 
01377 
01378     void SetModuleDirectory(const char *module_directory);
01379     void SetModuleDirectory(const __wchar_t *module_directory);
01380 
01381 protected:
01382 
01386     void SetStartingOutput();
01387 
01391     void SetFinishedOutput();
01392 
01394     void SetOutputOps(unsigned long ops) {m_OutputOps=ops;};
01396     unsigned long m_OutputOps;
01397 
01398     char *m_module_directory;
01399 private:
01400 
01401     char *m_progress;
01402     float m_percent_progress1;
01403     float m_percent_progress2;
01404     __wchar_t *m_information;
01405     struct vlist_s *m_information_list;
01406     HIONoticeCallback *m_progress_callback;
01407     HIOPercentNoticeCallback *m_percent_progress_callback;
01408     HIONoticeCallback *m_information_callback;
01409 };
01410 
01416 class MVO_API HIOManager
01417 {
01418 
01419 public:
01420 
01421     HIOManager();
01422     virtual ~HIOManager();
01423     
01433     virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler);
01434 
01443     virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler);
01444 
01455     virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free);
01456 
01461     virtual HInputHandler * GetInputHandler(const char * file_type);
01462     HInputHandler * GetInputHandler(const __wchar_t * file_type);
01463 #ifdef _MSC_VER
01464     HInputHandler * GetInputHandler(const unsigned short * file_type);
01465 #endif
01466 
01471     virtual HOutputHandler * GetOutputHandler(const char * file_type);
01472     virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type);
01473 
01478     virtual void RegisterHandlers();
01479 
01484     virtual const char * GetInputHandlerTypes();
01485 
01490     virtual const char * GetOutputHandlerTypes();
01491 
01492 
01499     virtual HIOConnector * CreateConnector(const char * file_type);
01500 
01505     virtual void FreeConnector(HIOConnector * old_connector);
01506 
01507 
01512     static HIOManager *GetCurrentHIOManager();
01513 
01519     static void GetFileOutputResultString(HFileOutputResult result, char *result_str);
01520 
01521 protected:
01522 
01524     struct vhash_s * input_handlers;
01525 
01527     struct vhash_s * output_handlers;
01528 
01530     struct vhash_s * connector_procs;
01531 
01533     struct vlist_s * owned_input_handlers;
01534 
01536     struct vlist_s * owned_output_handlers;
01537 
01539     struct vlist_s * loaded_input_handlers;
01540 
01542     struct vlist_s * loaded_output_handlers;
01543 
01545     struct vhash_s * created_connectors;
01546 
01547     char * m_input_types;
01548     int m_input_types_allocated;
01549 
01550     char * m_output_types;
01551     int m_output_types_allocated;
01552 };
01553 
01554 #ifdef H_PACK_8
01555 #pragma pack(pop)
01556 #endif
01557 
01558 #endif
01559