Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HIOUtilityPublish.h
1 //
2 // Copyright (c) 2000 by Tech Soft 3D, LLC.
3 // The information contained herein is confidential and proprietary to
4 // Tech Soft 3D, LLC., and considered a trade secret as defined under
5 // civil and criminal statutes. Tech Soft 3D shall pursue its civil
6 // and criminal remedies in the event of unauthorized use or misappropriation
7 // of its trade secrets. Use of this information by anyone other than
8 // authorized employees of Tech Soft 3D, LLC. is granted only under a
9 // written non-disclosure agreement, expressly prescribing the scope and
10 // manner of such use.
11 //
12 // $Id: 0907fa6162d3cb5c95c726c8ac253de840301a93 $
13 //
14 
15 #ifndef _HIOUTILITYPUBLISH_H
16 #define _HIOUTILITYPUBLISH_H
17 
18 #ifdef H_PACK_8
19 #pragma pack(push)
20 #pragma pack(8)
21 #endif
22 
23 #include "HTools.h"
24 #include "HIOManager.h"
25 #include "vlist.h"
26 #include "varray.h"
27 
28 #ifdef HIO_PUBLISH
29 #define HIO_API __declspec (dllexport)
30 #else
31 #define HIO_API
32 #endif
33 
34 
35 enum HPDFLayoutImageType
36 {
37  HJPG = 0,
38  HPNG = 1,
39 };
40 
41 enum HPDFLayoutVisibility
42 {
43  HUnchanged = 0,
44  HVisibile = 1,
45  HInvisible = 2,
46 };
47 
48 
49 class HPDFField
50 {
51 public:
52  HPDFField()
53  {
54  m_text = 0;
55  m_name = 0;
56  m_imagename = 0;
57  m_javascript = 0;
58  m_visibility = HUnchanged;
59  }
60  ~HPDFField()
61  {
62  delete [] m_text;
63  delete [] m_name;
64  delete [] m_imagename;
65  delete [] m_javascript;
66  }
67 
68  void Set(const wchar_t *name, const wchar_t *text, const wchar_t *javascript = 0, HPDFLayoutVisibility visibility = HUnchanged)
69  {
70  if (name)
71  {
72  m_name = new wchar_t[wcslen(name)+1];
73  wcscpy(m_name, name);
74  }
75 
76  if (text)
77  {
78  m_text = new wchar_t[wcslen(text)+1];
79  wcscpy(m_text, text);
80  }
81  if (javascript)
82  {
83  m_javascript = new wchar_t[wcslen(javascript)+1];
84  wcscpy(m_javascript, javascript);
85  }
86 
87  m_visibility = visibility;
88  }
89 
90  void SetImage(const wchar_t *name,const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
91  {
92  if (name)
93  {
94  m_name = new wchar_t[wcslen(name)+1];
95  wcscpy(m_name, name);
96  }
97 
98  if (imagename)
99  {
100  m_imagename = new wchar_t[wcslen(imagename)+1];
101  wcscpy(m_imagename,imagename);
102  }
103 
104  m_imagetype = imagetype;
105  m_imagewidth = imagewidth;
106  m_imageheight = imageheight;
107  }
108 
109  wchar_t const *GetText() { return m_text; }
110  wchar_t const *GetImage() { return m_imagename; }
111  wchar_t const *GetName() { return m_name; }
112  wchar_t const *GetJavascript() { return m_javascript; }
113  HPDFLayoutVisibility GetVisibility() { return m_visibility; }
114  HPDFLayoutImageType GetImageType() { return m_imagetype; }
115  int GetImageWidth() { return m_imagewidth; }
116  int GetImageHeight() { return m_imageheight; }
117 
118 
119 
120 private:
121 
122  wchar_t *m_text;
123  wchar_t *m_imagename;
124 
125  wchar_t *m_name;
126  wchar_t *m_javascript;
127  HPDFLayoutVisibility m_visibility;
128  HPDFLayoutImageType m_imagetype;
129  int m_imagewidth, m_imageheight;
130 };
131 
132 
136 class HIO_API HPDFLayoutManager
137 {
138 public:
141  {
142  m_templatefile = 0;
143  m_3DFieldName = 0;
144  m_FieldList = new_vlist(malloc,free);
145 
146  }
147 
150  {
151  START_LIST_ITERATION(HPDFField, m_FieldList);
152  delete temp;
153  END_LIST_ITERATION(m_FieldList);
154  delete_vlist(m_FieldList);
155  delete [] m_templatefile;
156  delete [] m_3DFieldName;
157  }
158 
162  void SetTemplateName(const wchar_t *name)
163  {
164  if (name)
165  {
166  m_templatefile = new wchar_t[wcslen(name)+1];
167  wcscpy(m_templatefile, name);
168  }
169  }
173  void Set3DFieldName(const wchar_t *name)
174  {
175  if (name)
176  {
177  m_3DFieldName = new wchar_t[wcslen(name)+1];
178  wcscpy(m_3DFieldName, name);
179  }
180  }
181 
182 
188  void AddMiscModification(const wchar_t *name, wchar_t *javascript = 0, HPDFLayoutVisibility visibility = HUnchanged)
189  {
190  HPDFField * field = new HPDFField;
191  field->Set(name, 0, javascript, visibility);
192  vlist_add_last(m_FieldList, field);
193  }
194 
200  void AddTextModification(const wchar_t *name, const wchar_t *text)
201  {
202  HPDFField * field = new HPDFField;
203  field->Set(name, text, 0, HUnchanged);
204  vlist_add_last(m_FieldList, field);
205  }
206 
207 
215  void AddImageModification(const wchar_t *name, const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
216  {
217  HPDFField * field = new HPDFField;
218  field->SetImage(name, imagename, imagetype, imagewidth, imageheight);
219  vlist_add_last(m_FieldList, field);
220  }
221 
222 
225  {
226  return m_FieldList;
227  }
229  wchar_t *GetTemplateName()
230  {
231  return m_templatefile;
232  }
234  wchar_t *Get3DFieldName()
235  {
236  return m_3DFieldName;
237  }
238 
239 private:
240  wchar_t * m_templatefile;
241  wchar_t * m_3DFieldName;
242  struct vlist_s * m_FieldList;
243 
244 };
245 
246 
247 class HPublishExchangeView;
248 typedef VArray<HPublishExchangeView *> HPEViewsArray;
249 
253 class HIO_API HIOUtilityPublish: public HInputHandler, public HOutputHandler
254 {
255 
256 public:
257 
260  virtual ~HIOUtilityPublish() { ReleaseJavascript(); };
261 
266  const char * GetOutputName() { return "HIOUtilityPublish"; }
267  const char * GetInputName() { return "HIOUtilityPublish"; }
268 
270  const char * GetInputTypesString() {return ""; }
271 
272 
273 
276 
284  HFileInputResult FileInputByKey(const wchar_t * FileName, HC_KEY key, HInputHandlerOptions * options);
285 
286  HFileInputResult FileInputByKey(const char * FileName, HC_KEY key, HInputHandlerOptions * options){
287  return FileInputByKey(H_WCS(FileName).encodedText(), key, options);
288  };
289 
290  HFileInputResult FileInputByKey(const unsigned short * FileName, HC_KEY key, HInputHandlerOptions * options){
291  H_UTF16 utf16;
292  utf16.encodedText((utf16_char const*) FileName);
293  return FileInputByKey(H_WCS(utf16).encodedText(), key, options);
294  };
295 
296  HFileOutputResult FileOutputByKey(const wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
297 
298  HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options){
299  H_UTF16 utf16;
300  utf16.encodedText((utf16_char const*) filename);
301  return FileOutputByKey(H_WCS(utf16).encodedText(), key, options);
302  }
303 
304  HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options){
305  return FileOutputByKey(H_WCS(filename).encodedText(), key, options);
306  }
307 
308  void RegisterOutputHandlerTypes();
309 
316  virtual void *BuildPRCModel(HOutputHandlerOptions * options, HC_KEY key);
317 
318 
319  const char * GetOutputTypesString() {
320  return "prc;iges;step;x_t;stl";
321  }
322 
323  HOutputHandlerStyle GetOutputStyle() {
324  return HOutputHandlerStyleModel;
325  }
334  virtual void WriteSimplePDF(wchar_t const * file_name, void *PRCModel, HOutputHandlerOptions * options, wchar_t const *javascript_file, const HPEViewsArray& hoopsviews);
342  virtual void WritePDFFromTemplate(wchar_t const * file_name, void *PRCModel, HOutputHandlerOptions * options, HPDFLayoutManager * layoutmanager, wchar_t const *javascript_file);
343 
351  char * GenerateJavascript(HBaseView *view);
355  void ReleaseJavascript();
356 
357 private:
358  char *m_pAnimationData;
359 
360 
361 };
362 
363 
364 
365 
366 
370 class HIO_API H3DXOptions
371 {
372 public:
374  H3DXOptions() {Reset();};
376  void Reset(){
377  m_bSaveToPDF = false;
378  m_pAsmModelFile = 0;
379  };
380 
381  bool m_bSaveToPDF;
382  void * m_pAsmModelFile;
383 };
384 
385 
386 
387 
388 #ifdef HIO_PUBLISH
389 extern "C" {
390  HIO_API void * CreateInput(HIOManager *manager);
391  HIO_API void * CreateOutput(HIOManager *manager);
392  HIO_API void * CreateConnector(void * unused);
393  HIO_API void Free(HIOUtilityPublish *);
394  }
395 
396 
397 #endif
398 
399 #ifdef H_PACK_8
400 #pragma pack(pop)
401 #endif
402 
403 #endif
~HPDFLayoutManager()
Definition: HIOUtilityPublish.h:149
virtual void RegisterInputHandlerTypes()=0
Definition: HIOUtilityPublish.h:253
vlist_s * GetFieldModificationList()
Definition: HIOUtilityPublish.h:224
Specifies an HInputHandler for model data.
Definition: HIOManager.h:227
virtual HFileInputResult FileInputByKey(const char *filename, HC_KEY key, HInputHandlerOptions *options)
HInputHandler an abstract base class for model and image input.
Definition: HIOManager.h:667
HOutputHandlerStyle
Definition: HIOManager.h:858
void AddTextModification(const wchar_t *name, const wchar_t *text)
Definition: HIOUtilityPublish.h:200
void AddMiscModification(const wchar_t *name, wchar_t *javascript=0, HPDFLayoutVisibility visibility=HUnchanged)
Definition: HIOUtilityPublish.h:188
HFileInputResult FileInputByKey(const char *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityPublish.h:286
const char * GetInputName()
Definition: HIOUtilityPublish.h:267
HPDFLayoutManager()
Definition: HIOUtilityPublish.h:140
void AddImageModification(const wchar_t *name, const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
Definition: HIOUtilityPublish.h:215
void Reset()
Definition: HIOUtilityPublish.h:376
HInputHandlerStyle
Definition: HIOManager.h:226
The HBaseView class defines and manages a view of model information.
Definition: HBaseView.h:337
Definition: HIOUtilityPublish.h:370
Definition: HIOUtilityPublish.h:136
const char * GetInputTypesString()
Definition: HIOUtilityPublish.h:270
void Set3DFieldName(const wchar_t *name)
Definition: HIOUtilityPublish.h:173
const char * GetOutputName()
Definition: HIOUtilityPublish.h:266
Definition: HIOManager.h:247
HFileInputResult FileInputByKey(const unsigned short *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityPublish.h:290
wchar_t * GetTemplateName()
Definition: HIOUtilityPublish.h:229
A header file containing the HIO classes for passing to HBaseView::FileInput and HBaseView::FileOutpu...
HInputHandlerStyle GetInputStyle()
Definition: HIOUtilityPublish.h:275
void SetTemplateName(const wchar_t *name)
Definition: HIOUtilityPublish.h:162
wchar_t * Get3DFieldName()
Definition: HIOUtilityPublish.h:234
Definition: HIOUtilityPublish.h:49
H3DXOptions()
Definition: HIOUtilityPublish.h:374