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         m_bDwgSkipUnreferencedBlocks = 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_bPRCImportNonBrepFaces = true;
00301         m_bPRCCreatePRCFileOnly = false;
00302         m_bPRCInstanceShells = true;
00303         m_bPRCCalculatePhysicalProperties = false;
00304         m_pPRCMultiModelSelectionCallback = 0;
00305         m_pPRCAsmModelFile = 0;
00306         m_pPRCDeleteModelFile = false;
00307         m_bPRCStoreUserAttributes = true;
00308         m_pPRCDeleteModelCallback = 0;
00309         m_bPRCImportHiddenObjects = false;
00310 
00311         // DWF import options
00312         m_bDisableDWFDrawOrder = false;
00313         m_bDWFRebaselineModel = true;
00314         m_bImportThumbnail = false;
00315 
00316         //SKP optimization option
00317         m_bOptimizeSegmentTree = false;
00318         m_license = 0;
00319 
00320         m_pOOCNodeDeltas = 0;
00321         m_bOOCAutoUpdate = true;
00322         m_bOOCAutoCleanup = true;
00323     }
00324 
00327     HInputHandlerOptions(HInputHandlerOptions const * o) {
00328         m_z_separation = o->m_z_separation;
00329         m_depth_range = o->m_depth_range;
00330         m_pHBaseView = o->m_pHBaseView;
00331         m_pImageName = o->m_pImageName;
00332         m_pImageFormat = o->m_pImageFormat;
00333         m_pConnector = o->m_pConnector;
00334         m_pExtendedData = o->m_pExtendedData;
00335         m_bLocal = o->m_bLocal;
00336         
00337         m_license = o->m_license;
00338         
00339         //DWG/DGN/SKP option
00340         m_bIgnoreOffEntities = o->m_bIgnoreOffEntities;
00341 
00342         //DWG/SKP option
00343         m_bImportMetadata = o->m_bImportMetadata;
00344 
00345 
00346         //DWG Options
00347         m_bInputViaHSF = o->m_bInputViaHSF;
00348         m_Deviation = o->m_Deviation;
00349         m_bImportWireframeForBrep = o->m_bImportWireframeForBrep;
00350         m_numIsolines = o->m_numIsolines;
00351         m_listRegAppNames = o->m_listRegAppNames;
00352         m_listEntityType=o->m_listEntityType;   
00353         m_bForceReimport = o->m_bForceReimport;
00354         m_listDWGLayouts = o->m_listDWGLayouts;
00355         m_bAttachDWGHandles = o->m_bAttachDWGHandles;
00356         m_bImportAllLayouts = o->m_bImportAllLayouts;
00357         m_bDWGInsertMeshesAsShells = o->m_bDWGInsertMeshesAsShells;
00358         m_bDisableDWGDrawOrder = o->m_bDisableDWGDrawOrder;
00359         m_eDwgViewVector = o->m_eDwgViewVector;
00360         m_sDwgContrastColorRgb = o->m_sDwgContrastColorRgb;
00361         m_bLegacyOptimize = o->m_bLegacyOptimize;
00362         m_bDwgDepthRangeDrawOrder = o->m_bDwgDepthRangeDrawOrder;
00363         m_bDwgSkipUnreferencedBlocks = o->m_bDwgSkipUnreferencedBlocks;
00364 
00365         //DGN Options
00366         m_iDGNCellHeaderOption = o->m_iDGNCellHeaderOption;
00367         m_bDGNRebaselineModel = o->m_bDGNRebaselineModel;
00368         m_coneFactor = o->m_coneFactor;
00369         m_factorForSmartSolids = o->m_factorForSmartSolids;
00370         m_bDGNImportAllModels = o->m_bDGNImportAllModels;
00371 
00372         // PRC options
00373         m_pPRCPMIConnector = o->m_pPRCPMIConnector;
00374         m_pPRCTopologyManager = o->m_pPRCTopologyManager;
00375         m_bPRCMergeFaces = o->m_bPRCMergeFaces;
00376         m_bPRCImportNonBrepFaces = o->m_bPRCImportNonBrepFaces;
00377 
00378         m_bPRCCreatePRCFileOnly = o->m_bPRCCreatePRCFileOnly;
00379         m_bPRCInstanceShells = o->m_bPRCInstanceShells;
00380         m_bPRCCalculatePhysicalProperties = o->m_bPRCCalculatePhysicalProperties;
00381         m_pPRCMultiModelSelectionCallback = o->m_pPRCMultiModelSelectionCallback;
00382         m_pPRCAsmModelFile = o->m_pPRCAsmModelFile;
00383         m_pPRCDeleteModelFile = o->m_pPRCDeleteModelFile;
00384         m_pPRCDeleteModelCallback = o->m_pPRCDeleteModelCallback;
00385         m_bPRCImportHiddenObjects = o->m_bPRCImportHiddenObjects;
00386 
00387 
00388         // DWF import options
00389         m_bDisableDWFDrawOrder = o->m_bDisableDWFDrawOrder;
00390         m_bDWFRebaselineModel = o->m_bDWFRebaselineModel;
00391         m_bImportThumbnail = o->m_bImportThumbnail;
00392         
00393 
00394         //SKP import option
00395         m_bOptimizeSegmentTree = o->m_bOptimizeSegmentTree;
00396 
00397         m_pOOCNodeDeltas = o->m_pOOCNodeDeltas;
00398         m_bOOCAutoUpdate = o->m_bOOCAutoUpdate;
00399         m_bOOCAutoCleanup = o->m_bOOCAutoCleanup;
00400     }
00401 
00404     HInputHandlerOptions(const HInputHandlerOptions &o) {
00405         m_z_separation = o.m_z_separation;
00406         m_depth_range = o.m_depth_range;
00407         m_pHBaseView = o.m_pHBaseView;
00408         m_pImageName = o.m_pImageName;
00409         m_pImageFormat = o.m_pImageFormat;
00410         m_pConnector = o.m_pConnector;
00411         m_pExtendedData = o.m_pExtendedData;
00412         m_bLocal = o.m_bLocal;
00413 
00414         //DWG/DGN/SKP option
00415         m_bIgnoreOffEntities = o.m_bIgnoreOffEntities;
00416 
00417         //DWG/SKP option
00418         m_bImportMetadata = o.m_bImportMetadata;
00419 
00420         //DWG options
00421         m_bInputViaHSF = o.m_bInputViaHSF;
00422         m_Deviation = o.m_Deviation;
00423         m_bImportWireframeForBrep = o.m_bImportWireframeForBrep;
00424         m_numIsolines = o.m_numIsolines;
00425         m_listRegAppNames = o.m_listRegAppNames;
00426         m_listEntityType = o.m_listEntityType;
00427         m_bForceReimport = o.m_bForceReimport;
00428         m_listDWGLayouts = o.m_listDWGLayouts;
00429         m_bAttachDWGHandles = o.m_bAttachDWGHandles;
00430         m_bImportAllLayouts = o.m_bImportAllLayouts;
00431         m_bDWGInsertMeshesAsShells = o.m_bDWGInsertMeshesAsShells;
00432         m_bDisableDWGDrawOrder = o.m_bDisableDWGDrawOrder;
00433         m_eDwgViewVector = o.m_eDwgViewVector;
00434         m_sDwgContrastColorRgb = o.m_sDwgContrastColorRgb;
00435         m_bLegacyOptimize = o.m_bLegacyOptimize;
00436         m_bDwgDepthRangeDrawOrder = o.m_bDwgDepthRangeDrawOrder;
00437         m_bDwgSkipUnreferencedBlocks = o.m_bDwgSkipUnreferencedBlocks;
00438 
00439         //DGN options
00440         m_iDGNCellHeaderOption = o.m_iDGNCellHeaderOption;
00441         m_bDGNRebaselineModel = o.m_bDGNRebaselineModel;
00442         m_coneFactor = o.m_coneFactor;
00443         m_factorForSmartSolids = o.m_factorForSmartSolids;
00444         m_bDGNImportAllModels = o.m_bDGNImportAllModels;
00445 
00446         // PRC options
00447         m_pPRCPMIConnector = o.m_pPRCPMIConnector;
00448         m_pPRCTopologyManager = o.m_pPRCTopologyManager;
00449         m_bPRCMergeFaces = o.m_bPRCMergeFaces;
00450         m_bPRCImportNonBrepFaces = o.m_bPRCImportNonBrepFaces;
00451         m_bPRCCreatePRCFileOnly = o.m_bPRCCreatePRCFileOnly;
00452         m_bPRCInstanceShells = o.m_bPRCInstanceShells;
00453         m_bPRCCalculatePhysicalProperties = o.m_bPRCCalculatePhysicalProperties;
00454         m_pPRCMultiModelSelectionCallback = o.m_pPRCMultiModelSelectionCallback;
00455         m_pPRCAsmModelFile = o.m_pPRCAsmModelFile;
00456         m_pPRCDeleteModelFile = o.m_pPRCDeleteModelFile;
00457         m_bPRCImportHiddenObjects = o.m_bPRCImportHiddenObjects;
00458 
00459         // DWF import options
00460         m_bDisableDWFDrawOrder = o.m_bDisableDWFDrawOrder;
00461         m_bDWFRebaselineModel = o.m_bDWFRebaselineModel;
00462         m_bImportThumbnail = o.m_bImportThumbnail;
00463         
00464 
00465         //SKP import option
00466         m_bOptimizeSegmentTree = o.m_bOptimizeSegmentTree;
00467 
00468         m_pOOCNodeDeltas = o.m_pOOCNodeDeltas;
00469         m_bOOCAutoUpdate = o.m_bOOCAutoUpdate;
00470         m_bOOCAutoCleanup = o.m_bOOCAutoCleanup;
00471     }
00472 
00473     virtual ~HInputHandlerOptions();
00474 
00476     HBaseView * m_pHBaseView;
00477 
00479     const char * m_pImageName;
00480 
00482     const char * m_pImageFormat;
00483 
00485     bool m_bLocal;
00486 
00488     HStreamFileToolkit * m_tk;
00489 
00491     bool m_bLogging;
00492 
00494     HIOConnector * m_pConnector;
00495 
00497     void * m_pExtendedData;
00498 
00500     bool m_bInputViaHSF;
00501 
00503     double m_Deviation;
00504 
00506     bool m_bImportMetadata;
00507 
00509     const char *m_license;
00510 
00511 
00512 
00513 
00517     struct vlist_s * m_listRegAppNames;
00518 
00520     struct vlist_s * m_listEntityType;
00521 
00523     bool m_bImportWireframeForBrep;
00524 
00526     double m_numIsolines;
00527 
00529     bool m_bForceReimport;
00530 
00535     bool m_bDisableDWGDrawOrder;
00536 
00538     struct vlist_s * m_listDWGLayouts;
00539 
00541     bool m_bIgnoreOffEntities;
00542 
00546     double m_coneFactor;
00547 
00551     double m_factorForSmartSolids;
00552 
00554     bool m_bAttachDWGHandles;
00555 
00557     int m_iDGNCellHeaderOption;
00558 
00559 
00560     
00564     enum {
00565         SINGLE_ENTITY_CELLHEADER, 
00566         BREAK_CELLHEADER,         
00567         OPT_CELLHEADER            
00568     };
00569 
00571     void *m_pPRCAsmModelFile;
00572 
00574     bool m_pPRCDeleteModelFile;         
00575 
00577     HIOConnector *      m_pPRCPMIConnector;
00579     BREP_Topology *     m_pPRCTopologyManager;
00581     bool                m_bPRCMergeFaces;
00582     bool                m_bPRCImportNonBrepFaces;
00583 
00585     bool                m_bPRCCreatePRCFileOnly;
00586     bool                m_bPRCInstanceShells;
00587 
00588     bool                m_bPRCCalculatePhysicalProperties;
00590     void (*m_pPRCMultiModelSelectionCallback) (char const * in_container, int in_num_configs, char const * in_configs[], 
00591                                                int & out_config_selection);
00593     bool                m_bPRCStoreUserAttributes;
00595     void (*m_pPRCDeleteModelCallback) ( void*& pPRCAsmModelFile);
00597     bool                m_bPRCImportHiddenObjects;
00598     
00599 
00602     bool  m_bImportAllLayouts;
00603 
00605     bool m_bDGNRebaselineModel;
00606     
00608     bool m_bDGNImportAllModels;
00609 
00613     bool m_bDWGInsertMeshesAsShells;
00614 
00615     // DWF import options
00620     bool m_bDisableDWFDrawOrder;
00621 
00623     bool m_bImportThumbnail;
00624 
00626     bool m_bDWFRebaselineModel;
00627 
00629     bool m_bOptimizeSegmentTree;
00630     
00636     HDwgViewVector m_eDwgViewVector;
00637 
00644     HPoint m_sDwgContrastColorRgb;
00645 
00652     bool m_bLegacyOptimize;
00653 
00660     bool m_bDwgDepthRangeDrawOrder;
00661 
00670     bool m_bDwgSkipUnreferencedBlocks;
00671 
00676     double m_z_separation;
00677 
00682     double m_depth_range;
00683 
00685     void * m_pOOCNodeDeltas;
00686 
00688     bool m_bOOCAutoUpdate;
00689 
00691     bool m_bOOCAutoCleanup;
00692 };
00693 
00694 
00695 
00697 
00703 class MVO_API HInputHandler 
00704 {
00705 
00706 public:
00714     HInputHandler();
00715     virtual ~HInputHandler();
00716 
00721     unsigned long GetInputOps() {return m_InputOps;};
00722 
00723 
00726     virtual const char * GetInputName() = 0;  
00727 
00728 
00735     virtual void RegisterInputHandlerTypes() = 0;
00736 
00743     virtual HInputHandlerStyle GetInputStyle() = 0;
00744 
00752     virtual HFileInputResult FileInputByKey(const char * filename, HC_KEY key, HInputHandlerOptions * options);
00753     virtual HFileInputResult FileInputByKey(const __wchar_t * filename, HC_KEY key, HInputHandlerOptions * options);
00754 
00755 
00764     virtual HFileInputResult FileInputByKey(const unsigned short * filename, HC_KEY key, HInputHandlerOptions * options);
00765 
00776     virtual HFileInputResult FileInputToImageKey(const char * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options);
00777     virtual HFileInputResult FileInputToImageKey(const __wchar_t * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options);
00778 
00779 
00789     virtual HFileInputResult FileInputToImageKey(const unsigned short * filename, HC_KEY * image_key, HC_KEY segment_key, HInputHandlerOptions * options);
00790 
00803     virtual const char * GetInputTypesString() = 0;
00804 
00808     const __wchar_t * GetInputProgress();
00809 
00813     float GetInputPercentProgress();
00814 
00818     const __wchar_t * GetInputInformation();
00819 
00826     HIONoticeCallback * SetInputProgressNoticeCallback(HIONoticeCallback *notice_callback);
00827     
00828     
00835     HIOPercentNoticeCallback * SetInputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback);
00836     
00843     HIONoticeCallback * SetInputInformationNoticeCallback(HIONoticeCallback *notice_callback);
00844 
00846     void ReportInputProgress(const char * progress);
00847     void ReportInputProgress(const __wchar_t * progress);
00848 
00850     void ReportInputPercentProgress(float percent_progress);
00851 
00853     void ReportInputInformation(const char * information);
00854     void ReportInputInformation(const __wchar_t * information);
00855 
00856     void SetModuleDirectory(const char *module_directory);
00857     void SetModuleDirectory(const __wchar_t *module_directory);
00858 protected:
00859 
00863     void SetStartingInput(const char *filename);
00864     void SetStartingInput(const __wchar_t *filename = 0);
00865 
00869     void SetFinishedInput();
00870 
00872     void SetInputOps(unsigned long ops) {m_InputOps=ops;};
00873 
00875     unsigned long m_InputOps;
00876 
00877     __wchar_t *m_module_directory;
00878 
00879 private:
00880 
00881     __wchar_t *m_progress;
00882     float m_percent_progress1;
00883     float m_percent_progress2;
00884     __wchar_t *m_information;
00885     struct vlist_s *m_information_list;
00886     HIONoticeCallback *m_progress_callback;
00887     HIONoticeCallback *m_information_callback;
00888     HIOPercentNoticeCallback *m_percent_progress_callback;
00889 };
00890 
00894 enum HOutputHandlerStyle 
00895 {
00896     HOutputHandlerStyleModel, 
00897     HOutputHandlerStyleImage, 
00898     HOutputHandlerStyleHardcopy, 
00899     HOutputHandlerStyleHTML, 
00900     HOutputHandlerStyleDontCare
00901 };
00902 
00909 class MVO_API ExportNameMap
00910 {
00911 private:
00912     void * _imp;
00913 public:
00914     ExportNameMap();
00915     ~ExportNameMap();
00916 
00917     H_FORMAT_TEXT lookup(HC_KEY) const;
00918     void tag(HC_KEY, H_FORMAT_TEXT const &);
00919 };
00920 
00928 enum HPrcBrepCompression {
00929     PrcBrepCompressionNone,     
00930     PrcBrepCompressionLow,      
00931     PrcBrepCompressionMedium,   
00932     PrcBrepCompressionHigh      
00933 };
00934 
00940 class MVO_API HOutputHandlerOptions 
00941 {
00942 public:
00944     HOutputHandlerOptions();
00945 
00946     virtual char const * GetType() const;
00947 
00950     virtual bool PopulateOptions();
00951     
00955     HOutputHandlerOptions(HOutputHandlerOptions const *o) {
00956          Init(o);
00957     };
00958 
00962     HOutputHandlerOptions(const HOutputHandlerOptions &o) {
00963         Init(&o);
00964     };
00965 
00966 
00967     virtual ~HOutputHandlerOptions();
00968 
00972     void Init(HOutputHandlerOptions const *o);
00973 
00975     HBaseView * m_pHBaseView;
00977     HBaseView * const View() const {return m_pHBaseView;};
00979     void View(HBaseView * const v) {m_pHBaseView = v;};
00980 
00982     HBaseModel * m_pHBaseModel;
00984     HBaseModel * const Model() const {return m_pHBaseModel;};
00986     void Model(HBaseModel * const m) {m_pHBaseModel = m;};
00987 
00989     HCamera * m_pCamera;
00991     HCamera * const Camera() const {return m_pCamera;};
00993     void Camera(HCamera * const c) {m_pCamera = c;};
00994 
00996     HC_KEY m_Key;
00998     HC_KEY const Key() const {return m_Key;};
01000     void Key(HC_KEY const k) {m_Key = k;};
01001 
01003     char const * m_pHSRAOptions;
01005     char const * const HSRAOptions() const {return m_pHSRAOptions;};
01007     void HSRAOptions(char const * const tf) {m_pHSRAOptions = tf;};
01008 
01010     HPoint const * m_pWindowColor;
01012     HPoint const * const WindowColor() const {return m_pWindowColor;};
01014     void WindowColor(HPoint const * const tf) {m_pWindowColor = tf;};
01015 
01017     bool m_bUseWindowColor;
01019     bool UseWindowColor() const {return m_bUseWindowColor;};
01021     void UseWindowColor(bool const tf) {m_bUseWindowColor = tf;};
01022 
01024     float m_Window_Width;
01026     float const WindowWidth() const {return m_Window_Width;};
01028     void WindowWidth(float const f) {m_Window_Width = f;};
01029 
01031     float m_Window_Height;
01033     float const WindowHeight() const {return m_Window_Height;};
01035     void WindowHeight(float const f) {m_Window_Height = f;};
01036 
01038     float m_Paper_Width;
01040     float const PaperWidth() const {return m_Paper_Width;};
01042     void PaperWidth(float const f) {m_Paper_Width = f;};
01043 
01045     float m_Paper_Height;
01047     float const PaperHeight() const {return m_Paper_Height;};
01049     void PaperHeight(float const f) {m_Paper_Height = f;};
01050 
01052     bool m_ForceGrayscale;
01054     bool ForceGrayscale() const {return m_ForceGrayscale;};
01056     void ForceGrayscale(bool const tf) {m_ForceGrayscale = tf;};
01057     
01059     size_t m_lineFuseThreshold;
01060     
01064     size_t LineFuseThreshold() const {return m_lineFuseThreshold;};
01065     
01069     void LineFuseThreshold(size_t const tf) {m_lineFuseThreshold = tf;};
01070 
01072     bool m_bFastPrint;
01074     bool FastPrint() const {return m_bFastPrint;};
01076     void FastPrint(bool const tf) {m_bFastPrint = tf;};
01077 
01079     bool m_bConserveMemory;
01081     bool ConserveMemory() const {return m_bConserveMemory;};
01083     void ConserveMemory(bool const tf) {m_bConserveMemory = tf;};
01084 
01085     bool m_bWriteAnimations;
01086     bool WriteAnimations() const {return m_bWriteAnimations;};
01087     void WriteAnimations(bool const tf) {m_bWriteAnimations = tf;};
01088 
01090     bool m_bWindowFrame;
01092     bool WindowFrame() const {return m_bWindowFrame;};
01094     void WindowFrame(bool const tf) {m_bWindowFrame = tf;};
01095 
01097     bool m_bUseSubscreen;
01099     bool UseSubscreen() const {return m_bUseSubscreen;};
01101     void UseSubscreen(bool const tf) {m_bUseSubscreen = tf;};
01102 
01104     int m_Image_Dpi;
01106     int const ImageDpi() const {return m_Image_Dpi;};
01108     void ImageDpi(int const dpi) {m_Image_Dpi = dpi;};
01109 
01111     int m_Paper_Dpi;
01113     int const PaperDpi() const {return m_Paper_Dpi;};
01115     void PaperDpi(int const dpi) {m_Paper_Dpi = dpi;};
01116 
01118     void * m_pExtendedData;
01119     void * const ExtendedData() const {return m_pExtendedData;};
01120     void ExtendedData(void * const vp) {m_pExtendedData = vp;};
01121     void ExtendedData(HPDFOptions * const vp) {m_pExtendedData = (void*)vp;};
01122 
01123     bool ActivateOnPageOpen() const {return m_bActivateOnPageOpen;};
01124     void ActivateOnPageOpen(bool onoff) {m_bActivateOnPageOpen = onoff;};
01125     float const AnnotLeft() const {return m_fAnnotLeft;};
01126     void AnnotLeft(float f) {m_fAnnotLeft = f;};
01127     float const AnnotRight() const {return m_fAnnotRight;};
01128     void AnnotRight(float f) {m_fAnnotRight = f;};
01129     float const AnnotBottom() const {return m_fAnnotBottom;};
01130     void AnnotBottom(float f) {m_fAnnotBottom = f;};
01131     float const AnnotTop() const {return m_fAnnotTop;};
01132     void AnnotTop(float f) {m_fAnnotTop = f;};
01133 
01134 
01136     const char *m_license;
01137 
01138     int m_antialiasLevel;
01139     int m_jpeg_quality;
01140     unsigned char* m_imageOutputBuffer;
01141     size_t m_imageOutputBufferSize;
01142 
01143 
01144 
01145 
01147     int m_Version;
01148     int const Version() const {return m_Version;};
01149     void Version(int const v) {m_Version = v;};
01150 
01152     H_OUTPUT_TYPE m_OutputType;
01154     H_OUTPUT_TYPE OutputType() const {return m_OutputType;};
01156     void OutputType(H_OUTPUT_TYPE ot) {m_OutputType = ot;};
01157 
01159     bool m_b3dOutput;
01161     bool Output3d() const {return m_b3dOutput;};
01163     void Output3d(bool const tf) {m_b3dOutput = tf;};
01164 
01166     bool m_bAscii;
01168     bool Ascii() const {return m_bAscii;};
01170     void Ascii(bool const tf) {m_bAscii = tf;};
01171 
01173     bool m_bStlNormals;
01175     bool StlNormals() const {return m_bStlNormals;};
01177     void StlNormals(bool const tf) {m_bStlNormals = tf;};
01178 
01180     double m_ratio_cm_to_internal_units;
01181 
01185     double PrintToScale() const {return m_ratio_cm_to_internal_units;};
01186 
01202     void PrintToScale(double const r) {m_ratio_cm_to_internal_units = r;};
01203 
01210     float m_PageMargins[4];
01211 
01213     HBhvBehaviorManager * m_pBehaviorManager;
01214 
01216     char const* m_pDWFModelName;
01217 
01221     char const* m_pPDFResourceDirectory;
01222 
01224     ExportNameMap m_names;
01225 
01227     void *m_pPRCAsmModelFile;
01228 
01230     bool m_bActivateOnPageOpen;
01231 
01233     float m_fAnnotLeft;
01234 
01236     float m_fAnnotRight;
01237 
01239     float m_fAnnotBottom;
01240 
01242     float m_fAnnotTop;
01243 
01245     HPrcBrepCompression m_ePrcBrepCompression;
01246 
01248     bool m_bPrcCompressTessellation;
01249 
01251     bool m_bPrcRemoveBRep;
01252 
01254     bool m_bPrcRemoveAttributes;
01256     bool m_bPrcUseNameUserData;
01257 
01259     MVO_POINTER_SIZED_INT m_iPrcNameUserDataIndex;
01260 
01261 
01263     bool m_bAVIShowCompressionDialog;
01264 
01273     char m_bAVICodec[4];
01274 
01276     bool m_bExporting2DDwf;
01277 };
01278 
01279 
01281 
01287 class MVO_API HOutputHandler 
01288 {
01289 
01290 public:
01298     HOutputHandler();
01299     virtual ~HOutputHandler();
01300 
01301 
01304     virtual const char * GetOutputName() = 0;  
01305 
01310     unsigned long GetOutputOps() {return m_OutputOps;};
01311     
01322     virtual void RegisterOutputHandlerTypes() = 0;
01323 
01324 
01332     virtual HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options);
01333     virtual HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
01334 
01342     virtual HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options);
01343 
01344 
01353     virtual HFileOutputResult FileOutputFromImageKey(const char * filename, HC_KEY image_key, HOutputHandlerOptions * options);
01354     virtual HFileOutputResult FileOutputFromImageKey(const __wchar_t * filename, HC_KEY image_key, HOutputHandlerOptions * options);
01355 
01366     virtual const char * GetOutputTypesString() = 0;
01367 
01376     virtual HOutputHandlerStyle GetOutputStyle() = 0;
01377     
01384     virtual const char * GetOutputDefaultHSRA();
01385 
01389     const char * GetOutputProgress();
01390 
01394     float GetOutputPercentProgress();
01395 
01399     const __wchar_t * GetOutputInformation();
01400 
01407     HIONoticeCallback * SetOutputProgressNoticeCallback(HIONoticeCallback *notice_callback);
01408 
01409     
01416     HIOPercentNoticeCallback * SetOutputPercentProgressNoticeCallback(HIOPercentNoticeCallback *percent_notice_callback);
01417     
01424     HIONoticeCallback * SetOutputInformationNoticeCallback(HIONoticeCallback *notice_callback);
01425 
01427     void ReportOutputProgress(const char * progress);
01428 
01430     void ReportOutputPercentProgress(float percent_progress);
01431 
01433     void ReportOutputInformation(const char * information);
01434 
01435 
01436     void SetModuleDirectory(const char *module_directory);
01437     void SetModuleDirectory(const __wchar_t *module_directory);
01438 
01439 protected:
01440 
01444     void SetStartingOutput();
01445 
01449     void SetFinishedOutput();
01450 
01452     void SetOutputOps(unsigned long ops) {m_OutputOps=ops;};
01454     unsigned long m_OutputOps;
01455 
01456     char *m_module_directory;
01457 private:
01458 
01459     char *m_progress;
01460     float m_percent_progress1;
01461     float m_percent_progress2;
01462     __wchar_t *m_information;
01463     struct vlist_s *m_information_list;
01464     HIONoticeCallback *m_progress_callback;
01465     HIOPercentNoticeCallback *m_percent_progress_callback;
01466     HIONoticeCallback *m_information_callback;
01467 };
01468 
01474 class MVO_API HIOManager
01475 {
01476 
01477 public:
01478 
01479     HIOManager();
01480     virtual ~HIOManager();
01481     
01491     virtual HInputHandler * RegisterInputHandler(const char * file_type, HInputHandler * handler);
01492 
01501     virtual HOutputHandler * RegisterOutputHandler(const char * file_type, HOutputHandler * handler);
01502 
01513     virtual HIOConnector * RegisterConnector(const char * file_type, HIO_CREATE_FREE_FUNCTION Create, HIO_FREE_CONNECTOR_FUNCTION Free);
01514 
01519     virtual HInputHandler * GetInputHandler(const char * file_type);
01520     HInputHandler * GetInputHandler(const __wchar_t * file_type);
01521 #ifdef _MSC_VER
01522     HInputHandler * GetInputHandler(const unsigned short * file_type);
01523 #endif
01524 
01529     virtual HOutputHandler * GetOutputHandler(const char * file_type);
01530     virtual HOutputHandler * GetOutputHandler(const __wchar_t * file_type);
01531 
01536     virtual void RegisterHandlers();
01537 
01542     virtual const char * GetInputHandlerTypes();
01543 
01548     virtual const char * GetOutputHandlerTypes();
01549 
01550 
01557     virtual HIOConnector * CreateConnector(const char * file_type);
01558 
01563     virtual void FreeConnector(HIOConnector * old_connector);
01564 
01565 
01570     static HIOManager *GetCurrentHIOManager();
01571 
01577     static void GetFileOutputResultString(HFileOutputResult result, char *result_str);
01578 
01579 protected:
01580 
01582     struct vhash_s * input_handlers;
01583 
01585     struct vhash_s * output_handlers;
01586 
01588     struct vhash_s * connector_procs;
01589 
01591     struct vlist_s * owned_input_handlers;
01592 
01594     struct vlist_s * owned_output_handlers;
01595 
01597     struct vlist_s * loaded_input_handlers;
01598 
01600     struct vlist_s * loaded_output_handlers;
01601 
01603     struct vhash_s * created_connectors;
01604 
01605     char * m_input_types;
01606     int m_input_types_allocated;
01607 
01608     char * m_output_types;
01609     int m_output_types_allocated;
01610 };
01611 
01612 #ifdef H_PACK_8
01613 #pragma pack(pop)
01614 #endif
01615 
01616 #endif
01617