Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HIOUtilityPublish.h
00001 //
00002 // Copyright (c) 2000 by Tech Soft 3D, LLC.
00003 // The information contained herein is confidential and proprietary to
00004 // Tech Soft 3D, LLC., and considered a trade secret as defined under
00005 // civil and criminal statutes.  Tech Soft 3D shall pursue its civil
00006 // and criminal remedies in the event of unauthorized use or misappropriation
00007 // of its trade secrets.  Use of this information by anyone other than
00008 // authorized employees of Tech Soft 3D, LLC. is granted only under a
00009 // written non-disclosure agreement, expressly prescribing the scope and
00010 // manner of such use.
00011 //
00012 // $Id: 0907fa6162d3cb5c95c726c8ac253de840301a93 $
00013 //
00014 
00015 #ifndef _HIOUTILITYPUBLISH_H
00016 #define _HIOUTILITYPUBLISH_H
00017 
00018 #ifdef H_PACK_8
00019 #pragma pack(push)
00020 #pragma pack(8)
00021 #endif
00022 
00023 #include "HTools.h"
00024 #include "HIOManager.h"
00025 #include "vlist.h"
00026 #include "varray.h"
00027 
00028 #ifdef HIO_PUBLISH
00029 #define HIO_API __declspec (dllexport)
00030 #else
00031 #define HIO_API
00032 #endif
00033 
00034 
00035 enum HPDFLayoutImageType
00036 {
00037     HJPG = 0,        
00038     HPNG = 1,    
00039 };
00040 
00041 enum HPDFLayoutVisibility 
00042 {
00043     HUnchanged = 0,        
00044     HVisibile = 1,    
00045     HInvisible = 2,      
00046 };
00047 
00048 
00049 class HPDFField
00050 {
00051 public:
00052     HPDFField()
00053     {
00054         m_text = 0;
00055         m_name = 0;
00056         m_imagename = 0;
00057         m_javascript = 0;
00058         m_visibility = HUnchanged;
00059     }
00060     ~HPDFField()
00061     {
00062         delete [] m_text;
00063         delete [] m_name;
00064         delete [] m_imagename;
00065         delete [] m_javascript;
00066     }
00067 
00068     void Set(const wchar_t *name, const wchar_t *text, const wchar_t *javascript = 0, HPDFLayoutVisibility visibility = HUnchanged)
00069     {
00070         if (name)
00071         {
00072             m_name = new wchar_t[wcslen(name)+1];
00073             wcscpy(m_name, name);
00074         }
00075     
00076         if (text)
00077         {
00078             m_text = new wchar_t[wcslen(text)+1];
00079             wcscpy(m_text, text);
00080         }
00081         if (javascript)
00082         {
00083             m_javascript = new wchar_t[wcslen(javascript)+1];
00084             wcscpy(m_javascript, javascript);
00085         }
00086         
00087         m_visibility = visibility;
00088     }
00089 
00090     void SetImage(const wchar_t *name,const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
00091     {
00092         if (name)
00093         {
00094             m_name = new wchar_t[wcslen(name)+1];
00095             wcscpy(m_name, name);
00096         }
00097 
00098         if (imagename)
00099         {
00100             m_imagename = new wchar_t[wcslen(imagename)+1];
00101             wcscpy(m_imagename,imagename);
00102         }
00103 
00104         m_imagetype = imagetype;
00105         m_imagewidth = imagewidth;
00106         m_imageheight = imageheight;
00107     }
00108 
00109     wchar_t const *GetText() { return m_text; }
00110     wchar_t const *GetImage() { return m_imagename; }
00111     wchar_t const *GetName() { return m_name; }
00112     wchar_t const *GetJavascript() { return m_javascript; }
00113     HPDFLayoutVisibility GetVisibility() { return m_visibility; }
00114     HPDFLayoutImageType GetImageType() { return m_imagetype; }
00115     int GetImageWidth() { return m_imagewidth; }
00116     int GetImageHeight() { return m_imageheight; }
00117 
00118 
00119 
00120 private:
00121 
00122     wchar_t *m_text;
00123     wchar_t *m_imagename;
00124     
00125     wchar_t *m_name;
00126     wchar_t *m_javascript;
00127     HPDFLayoutVisibility m_visibility;
00128     HPDFLayoutImageType m_imagetype;
00129     int m_imagewidth, m_imageheight;
00130 };
00131 
00132 
00136 class HIO_API HPDFLayoutManager
00137 {
00138 public:
00140     HPDFLayoutManager()
00141     {
00142         m_templatefile = 0;
00143         m_3DFieldName = 0;
00144         m_FieldList = new_vlist(malloc,free);
00145 
00146     }
00147 
00149     ~HPDFLayoutManager()
00150     {
00151         START_LIST_ITERATION(HPDFField, m_FieldList);
00152             delete temp;            
00153         END_LIST_ITERATION(m_FieldList);
00154         delete_vlist(m_FieldList);
00155         delete [] m_templatefile;
00156         delete [] m_3DFieldName;
00157     }
00158 
00162     void SetTemplateName(const wchar_t *name)
00163     {
00164         if (name)
00165         {
00166             m_templatefile = new wchar_t[wcslen(name)+1];
00167             wcscpy(m_templatefile, name);
00168         }
00169     }
00173     void Set3DFieldName(const wchar_t *name)
00174     {
00175         if (name)
00176         {
00177             m_3DFieldName = new wchar_t[wcslen(name)+1];
00178             wcscpy(m_3DFieldName, name);
00179         }
00180     }
00181 
00182 
00188     void AddMiscModification(const wchar_t *name, wchar_t *javascript = 0, HPDFLayoutVisibility visibility = HUnchanged)
00189     {
00190         HPDFField * field = new HPDFField;
00191         field->Set(name, 0, javascript, visibility);
00192         vlist_add_last(m_FieldList, field);
00193     }
00194 
00200     void AddTextModification(const wchar_t *name, const wchar_t *text)
00201     {
00202         HPDFField * field = new HPDFField;
00203         field->Set(name, text, 0, HUnchanged);
00204         vlist_add_last(m_FieldList, field);
00205     }
00206 
00207 
00215     void AddImageModification(const wchar_t *name, const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
00216     {
00217         HPDFField * field = new HPDFField;
00218         field->SetImage(name, imagename, imagetype, imagewidth, imageheight);
00219         vlist_add_last(m_FieldList, field);
00220     }
00221 
00222 
00224     vlist_s *GetFieldModificationList()
00225     {
00226         return m_FieldList;
00227     }
00229     wchar_t  *GetTemplateName()
00230     {
00231         return m_templatefile;
00232     }
00234     wchar_t  *Get3DFieldName()
00235     {
00236         return m_3DFieldName;
00237     }
00238 
00239 private:
00240     wchar_t  * m_templatefile;
00241     wchar_t  * m_3DFieldName;
00242     struct vlist_s *        m_FieldList;
00243 
00244 };
00245 
00246 
00247 class HPublishExchangeView;
00248 typedef VArray<HPublishExchangeView *> HPEViewsArray;
00249 
00253 class HIO_API HIOUtilityPublish: public HInputHandler, public HOutputHandler
00254 {
00255 
00256 public:
00257 
00259     HIOUtilityPublish();
00260     virtual ~HIOUtilityPublish() { ReleaseJavascript(); };
00261 
00263     void RegisterInputHandlerTypes();
00266     const char * GetOutputName() { return "HIOUtilityPublish"; }
00267     const char * GetInputName() { return "HIOUtilityPublish"; }
00268 
00270     const char * GetInputTypesString() {return ""; }
00271  
00272         
00273 
00275     HInputHandlerStyle GetInputStyle() {return HInputHandlerStyleModel;};
00276 
00284     HFileInputResult FileInputByKey(const wchar_t * FileName, HC_KEY key, HInputHandlerOptions * options);
00285 
00286     HFileInputResult FileInputByKey(const char * FileName, HC_KEY key, HInputHandlerOptions * options){
00287         return FileInputByKey(H_WCS(FileName).encodedText(), key, options);
00288     };
00289 
00290     HFileInputResult FileInputByKey(const unsigned short * FileName, HC_KEY key, HInputHandlerOptions * options){
00291         H_UTF16 utf16;
00292         utf16.encodedText((utf16_char const*) FileName);
00293         return FileInputByKey(H_WCS(utf16).encodedText(), key, options);
00294     };
00295 
00296     HFileOutputResult FileOutputByKey(const wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
00297 
00298     HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options){
00299         H_UTF16 utf16;
00300         utf16.encodedText((utf16_char const*) filename);
00301         return FileOutputByKey(H_WCS(utf16).encodedText(), key, options);
00302     }
00303 
00304     HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options){
00305         return FileOutputByKey(H_WCS(filename).encodedText(), key, options);
00306     }
00307 
00308     void RegisterOutputHandlerTypes();
00309     
00316     virtual void *BuildPRCModel(HOutputHandlerOptions * options, HC_KEY key);
00317  
00318 
00319     const char *  GetOutputTypesString() {
00320         return "prc;iges;step;x_t;stl";
00321     }
00322 
00323     HOutputHandlerStyle GetOutputStyle() {
00324         return HOutputHandlerStyleModel;
00325     }
00334     virtual void WriteSimplePDF(wchar_t const * file_name, void *PRCModel, HOutputHandlerOptions * options, wchar_t const *javascript_file, const HPEViewsArray& hoopsviews);
00342     virtual void WritePDFFromTemplate(wchar_t const * file_name, void *PRCModel, HOutputHandlerOptions * options, HPDFLayoutManager * layoutmanager, wchar_t const *javascript_file);    
00343 
00351     char * GenerateJavascript(HBaseView *view);
00355     void ReleaseJavascript();
00356 
00357 private:
00358     char *m_pAnimationData;
00359 
00360 
00361 };
00362 
00363 
00364 
00365 
00366 
00370 class HIO_API H3DXOptions
00371 {
00372 public:
00374     H3DXOptions() {Reset();};
00376     void Reset(){
00377         m_bSaveToPDF = false;
00378         m_pAsmModelFile = 0;
00379     };
00380 
00381     bool    m_bSaveToPDF;
00382     void *  m_pAsmModelFile;
00383 };
00384 
00385 
00386 
00387 
00388 #ifdef HIO_PUBLISH
00389 extern "C" {
00390     HIO_API void * CreateInput(HIOManager *manager);
00391     HIO_API void * CreateOutput(HIOManager *manager);
00392     HIO_API void * CreateConnector(void * unused);
00393     HIO_API void Free(HIOUtilityPublish *);
00394  }
00395 
00396 
00397 #endif
00398 
00399 #ifdef H_PACK_8
00400 #pragma pack(pop)
00401 #endif
00402 
00403 #endif