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