Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HIOManager.h
Go to the documentation of this file.
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_bPrcCompressTessellation;
01236 
01238     bool m_bPrcRemoveBRep;
01239 
01241     bool m_bPrcRemoveAttributes;
01243     bool m_bPrcUseNameUserData;
01244 
01246     MVO_POINTER_SIZED_INT m_iPrcNameUserDataIndex;
01247 
01248 
01250     bool m_bAVIShowCompressionDialog;
01251 
01260     char m_bAVICodec[4];
01261 
01263     bool m_bExporting2DDwf;
01264 };
01265 
01266 
01268 
01274 class MVO_API HOutputHandler 
01275 {
01276 
01277 public:
01285     HOutputHandler();
01286     virtual ~HOutputHandler();
01287 
01288 
01291     virtual const char * GetOutputName() = 0;  
01292 
01297     unsigned long GetOutputOps() {return m_OutputOps;};
01298     
01309     virtual void RegisterOutputHandlerTypes() = 0;
01310 
01311 
01319     virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options);
01320     virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
01321 
01329     virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options);
01330 
01331 
01340     virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options);
01341     virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options);
01342 
01353     virtual const char * GetOutputTypesString() = 0;
01354 
01363     virtual HOutputHandlerStyle GetOutputStyle() = 0;
01364     
01371     virtual const char * GetOutputDefaultHSRA();
01372 
01376     const char * GetOutputProgress();
01377 
01381     float GetOutputPercentProgress();
01382 
01386     const __wchar_t * GetOutputInformation();
01387 
01394     HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback);
01395 
01396     
01403     HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback);
01404     
01411     HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback);
01412 
01414     void ReportOutputProgress(const char * progress);
01415 
01417     void ReportOutputPercentProgress(float percent_progress);
01418 
01420     void ReportOutputInformation(const char * information);
01421 
01422 
01423     void SetModuleDirectory(const char *module_directory);
01424     void SetModuleDirectory(const __wchar_t *module_directory);
01425 
01426 protected:
01427 
01431     void SetStartingOutput();
01432 
01436     void SetFinishedOutput();
01437 
01439     void SetOutputOps(unsigned long ops) {m_OutputOps=ops;};
01441     unsigned long m_OutputOps;
01442 
01443     char *m_module_directory;
01444 private:
01445 
01446     char *m_progress;
01447     float m_percent_progress1;
01448     float m_percent_progress2;
01449     __wchar_t *m_information;
01450     struct vlist_s *m_information_list;
01451     HIONoticeCallback *m_progress_callback;
01452     HIOPercentNoticeCallback *m_percent_progress_callback;
01453     HIONoticeCallback *m_information_callback;
01454 };
01455 
01461 class MVO_API HIOManager
01462 {
01463 
01464 public:
01465 
01466     HIOManager();
01467     virtual ~HIOManager();
01468     
01478     virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler);
01479 
01488     virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler);
01489 
01500     virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free);
01501 
01506     virtual HInputHandler * GetInputHandler(const char * file_type);
01507     HInputHandler * GetInputHandler(const __wchar_t * file_type);
01508 #ifdef _MSC_VER
01509     HInputHandler * GetInputHandler(const unsigned short * file_type);
01510 #endif
01511 
01516     virtual HOutputHandler * GetOutputHandler(const char * file_type);
01517     virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type);
01518 
01523     virtual void RegisterHandlers();
01524 
01529     virtual const char * GetInputHandlerTypes();
01530 
01535     virtual const char * GetOutputHandlerTypes();
01536 
01537 
01544     virtual HIOConnector * CreateConnector(const char * file_type);
01545 
01550     virtual void FreeConnector(HIOConnector * old_connector);
01551 
01552 
01557     static HIOManager *GetCurrentHIOManager();
01558 
01564     static void GetFileOutputResultString(HFileOutputResult result, char *result_str);
01565 
01566 protected:
01567 
01569     struct vhash_s * input_handlers;
01570 
01572     struct vhash_s * output_handlers;
01573 
01575     struct vhash_s * connector_procs;
01576 
01578     struct vlist_s * owned_input_handlers;
01579 
01581     struct vlist_s * owned_output_handlers;
01582 
01584     struct vlist_s * loaded_input_handlers;
01585 
01587     struct vlist_s * loaded_output_handlers;
01588 
01590     struct vhash_s * created_connectors;
01591 
01592     char * m_input_types;
01593     int m_input_types_allocated;
01594 
01595     char * m_output_types;
01596     int m_output_types_allocated;
01597 };
01598 
01599 #ifdef H_PACK_8
01600 #pragma pack(pop)
01601 #endif
01602 
01603 #endif
01604