Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HIOUtilityPublish.h
1 // Copyright (c) 1998-2014 by Tech Soft 3D, Inc.
2 //
3 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc.,
4 // and considered a trade secret as defined under civil and criminal statutes.
5 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of
6 // unauthorized use or misappropriation of its trade secrets. Use of this information
7 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under
8 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use.
9 
10 #ifndef _HIOUTILITYPUBLISH_H
11 #define _HIOUTILITYPUBLISH_H
12 
13 #ifdef H_PACK_8
14 #pragma pack(push)
15 #pragma pack(8)
16 #endif
17 
18 #include "HTools.h"
19 #include "HIOManager.h"
20 #include "vlist.h"
21 #include "varray.h"
22 
23 #ifdef HIO_PUBLISH
24 #define HIO_API __declspec (dllexport)
25 #else
26 #define HIO_API
27 #endif
28 
29 
30 enum HPDFLayoutImageType
31 {
32  HJPG = 0,
33  HPNG = 1,
34 };
35 
36 enum HPDFLayoutVisibility
37 {
38  HUnchanged = 0,
39  HVisibile = 1,
40  HInvisible = 2,
41 };
42 
43 
44 class HPDFField
45 {
46 public:
47  HPDFField()
48  {
49  m_text = 0;
50  m_name = 0;
51  m_imagename = 0;
52  m_javascript = 0;
53  m_visibility = HUnchanged;
54  }
55  ~HPDFField()
56  {
57  delete [] m_text;
58  delete [] m_name;
59  delete [] m_imagename;
60  delete [] m_javascript;
61  }
62 
63  void Set(const wchar_t *name, const wchar_t *text, const wchar_t *javascript = 0, HPDFLayoutVisibility visibility = HUnchanged)
64  {
65  if (name)
66  {
67  m_name = new wchar_t[wcslen(name)+1];
68  wcscpy(m_name, name);
69  }
70 
71  if (text)
72  {
73  m_text = new wchar_t[wcslen(text)+1];
74  wcscpy(m_text, text);
75  }
76  if (javascript)
77  {
78  m_javascript = new wchar_t[wcslen(javascript)+1];
79  wcscpy(m_javascript, javascript);
80  }
81 
82  m_visibility = visibility;
83  }
84 
85  void SetImage(const wchar_t *name,const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
86  {
87  if (name)
88  {
89  m_name = new wchar_t[wcslen(name)+1];
90  wcscpy(m_name, name);
91  }
92 
93  if (imagename)
94  {
95  m_imagename = new wchar_t[wcslen(imagename)+1];
96  wcscpy(m_imagename,imagename);
97  }
98 
99  m_imagetype = imagetype;
100  m_imagewidth = imagewidth;
101  m_imageheight = imageheight;
102  }
103 
104  wchar_t const *GetText() { return m_text; }
105  wchar_t const *GetImage() { return m_imagename; }
106  wchar_t const *GetName() { return m_name; }
107  wchar_t const *GetJavascript() { return m_javascript; }
108  HPDFLayoutVisibility GetVisibility() { return m_visibility; }
109  HPDFLayoutImageType GetImageType() { return m_imagetype; }
110  int GetImageWidth() { return m_imagewidth; }
111  int GetImageHeight() { return m_imageheight; }
112 
113 
114 
115 private:
116 
117  wchar_t *m_text;
118  wchar_t *m_imagename;
119 
120  wchar_t *m_name;
121  wchar_t *m_javascript;
122  HPDFLayoutVisibility m_visibility;
123  HPDFLayoutImageType m_imagetype;
124  int m_imagewidth, m_imageheight;
125 };
126 
127 
131 class HIO_API HPDFLayoutManager
132 {
133 public:
136  {
137  m_templatefile = 0;
138  m_3DFieldName = 0;
139  m_FieldList = new_vlist(malloc,free);
140 
141  }
142 
145  {
146  START_LIST_ITERATION(HPDFField, m_FieldList);
147  delete temp;
148  END_LIST_ITERATION(m_FieldList);
149  delete_vlist(m_FieldList);
150  delete [] m_templatefile;
151  delete [] m_3DFieldName;
152  }
153 
157  void SetTemplateName(const wchar_t *name)
158  {
159  if (name)
160  {
161  m_templatefile = new wchar_t[wcslen(name)+1];
162  wcscpy(m_templatefile, name);
163  }
164  }
168  void Set3DFieldName(const wchar_t *name)
169  {
170  if (name)
171  {
172  m_3DFieldName = new wchar_t[wcslen(name)+1];
173  wcscpy(m_3DFieldName, name);
174  }
175  }
176 
177 
183  void AddMiscModification(const wchar_t *name, wchar_t *javascript = 0, HPDFLayoutVisibility visibility = HUnchanged)
184  {
185  HPDFField * field = new HPDFField;
186  field->Set(name, 0, javascript, visibility);
187  vlist_add_last(m_FieldList, field);
188  }
189 
195  void AddTextModification(const wchar_t *name, const wchar_t *text)
196  {
197  HPDFField * field = new HPDFField;
198  field->Set(name, text, 0, HUnchanged);
199  vlist_add_last(m_FieldList, field);
200  }
201 
202 
210  void AddImageModification(const wchar_t *name, const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
211  {
212  HPDFField * field = new HPDFField;
213  field->SetImage(name, imagename, imagetype, imagewidth, imageheight);
214  vlist_add_last(m_FieldList, field);
215  }
216 
217 
220  {
221  return m_FieldList;
222  }
224  wchar_t *GetTemplateName()
225  {
226  return m_templatefile;
227  }
229  wchar_t *Get3DFieldName()
230  {
231  return m_3DFieldName;
232  }
233 
234 private:
235  wchar_t * m_templatefile;
236  wchar_t * m_3DFieldName;
237  struct vlist_s * m_FieldList;
238 
239 };
240 
241 
242 class HPublishExchangeView;
243 typedef VArray<HPublishExchangeView *> HPEViewsArray;
244 
248 class HIO_API HIOUtilityPublish: public HInputHandler, public HOutputHandler
249 {
250 
251 public:
252 
255  virtual ~HIOUtilityPublish() { ReleaseJavascript(); };
256 
261  const char * GetOutputName() { return "HIOUtilityPublish"; }
262  const char * GetInputName() { return "HIOUtilityPublish"; }
263 
265  const char * GetInputTypesString() {return ""; }
266 
267 
268 
271 
279  HFileInputResult FileInputByKey(const wchar_t * FileName, HC_KEY key, HInputHandlerOptions * options);
280 
281  HFileInputResult FileInputByKey(const char * FileName, HC_KEY key, HInputHandlerOptions * options){
282  return FileInputByKey(H_WCS(FileName).encodedText(), key, options);
283  };
284 
285  HFileInputResult FileInputByKey(const unsigned short * FileName, HC_KEY key, HInputHandlerOptions * options){
286  H_UTF16 utf16;
287  utf16.encodedText((utf16_char const*) FileName);
288  return FileInputByKey(H_WCS(utf16).encodedText(), key, options);
289  };
290 
291  HFileOutputResult FileOutputByKey(const wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
292 
293  HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options){
294  H_UTF16 utf16;
295  utf16.encodedText((utf16_char const*) filename);
296  return FileOutputByKey(H_WCS(utf16).encodedText(), key, options);
297  }
298 
299  HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options){
300  return FileOutputByKey(H_WCS(filename).encodedText(), key, options);
301  }
302 
304 
311  virtual void *BuildPRCModel(HOutputHandlerOptions * options, HC_KEY key);
312 
313 
314  const char * GetOutputTypesString() {
315  return "prc;iges;step;x_t;stl";
316  }
317 
319  return HOutputHandlerStyleModel;
320  }
329  virtual HFileIOResult WriteSimplePDF(wchar_t const * file_name, void *PRCModel, HOutputHandlerOptions * options, wchar_t const *javascript_file, const HPEViewsArray& hoopsviews);
337  virtual HFileIOResult WritePDFFromTemplate(wchar_t const * file_name, void *PRCModel, HOutputHandlerOptions * options, HPDFLayoutManager * layoutmanager, wchar_t const *javascript_file);
338 
346  char * GenerateJavascript(HBaseView *view);
350  void ReleaseJavascript();
351 
352 private:
353  char *m_pAnimationData;
354 
355 
356 };
357 
358 
359 
360 
361 
365 class HIO_API H3DXOptions
366 {
367 public:
369  H3DXOptions() {Reset();};
371  void Reset(){
372  m_bSaveToPDF = false;
373  m_pAsmModelFile = 0;
374  };
375 
376  bool m_bSaveToPDF;
377  void * m_pAsmModelFile;
378 };
379 
380 
381 
382 
383 #ifdef HIO_PUBLISH
384 extern "C" {
385  HIO_API void * CreateInput(HIOManager *manager);
386  HIO_API void * CreateOutput(HIOManager *manager);
387  HIO_API void * CreateConnector(void * unused);
388  HIO_API void Free(HIOUtilityPublish *);
389  }
390 
391 
392 #endif
393 
394 #ifdef H_PACK_8
395 #pragma pack(pop)
396 #endif
397 
398 #endif
Definition: HIOManager.h:1412
virtual HFileOutputResult FileOutputByKey(const char *filename, HC_KEY key, HOutputHandlerOptions *options)
~HPDFLayoutManager()
Definition: HIOUtilityPublish.h:144
virtual void RegisterInputHandlerTypes()=0
Definition: HIOUtilityPublish.h:248
vlist_s * GetFieldModificationList()
Definition: HIOUtilityPublish.h:219
Specifies an HInputHandler for model data.
Definition: HIOManager.h:225
virtual HFileInputResult FileInputByKey(const char *filename, HC_KEY key, HInputHandlerOptions *options)
HInputHandler an abstract base class for model and image input.
Definition: HIOManager.h:671
HOutputHandlerStyle
Definition: HIOManager.h:862
void AddTextModification(const wchar_t *name, const wchar_t *text)
Definition: HIOUtilityPublish.h:195
void AddMiscModification(const wchar_t *name, wchar_t *javascript=0, HPDFLayoutVisibility visibility=HUnchanged)
Definition: HIOUtilityPublish.h:183
HOutputHandler an abstract base class for model and image output.
Definition: HIOManager.h:1225
HFileInputResult FileInputByKey(const char *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityPublish.h:281
virtual void RegisterOutputHandlerTypes()=0
HFileOutputResult FileOutputByKey(const char *filename, HC_KEY key, HOutputHandlerOptions *options)
Definition: HIOUtilityPublish.h:299
const char * GetInputName()
Definition: HIOUtilityPublish.h:262
HPDFLayoutManager()
Definition: HIOUtilityPublish.h:135
HOutputHandlerStyle GetOutputStyle()
Definition: HIOUtilityPublish.h:318
void AddImageModification(const wchar_t *name, const wchar_t *imagename, HPDFLayoutImageType imagetype, int imagewidth, int imageheight)
Definition: HIOUtilityPublish.h:210
void Reset()
Definition: HIOUtilityPublish.h:371
HInputHandlerStyle
Definition: HIOManager.h:224
Definition: HIOManager.h:908
The HBaseView class defines and manages a view of model information.
Definition: HBaseView.h:332
const char * GetOutputTypesString()
Definition: HIOUtilityPublish.h:314
Definition: HIOUtilityPublish.h:365
Definition: HIOUtilityPublish.h:131
HFileOutputResult FileOutputByKey(const unsigned short *filename, HC_KEY key, HOutputHandlerOptions *options)
Definition: HIOUtilityPublish.h:293
const char * GetInputTypesString()
Definition: HIOUtilityPublish.h:265
void Set3DFieldName(const wchar_t *name)
Definition: HIOUtilityPublish.h:168
const char * GetOutputName()
Definition: HIOUtilityPublish.h:261
Definition: HIOManager.h:245
HFileInputResult FileInputByKey(const unsigned short *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityPublish.h:285
wchar_t * GetTemplateName()
Definition: HIOUtilityPublish.h:224
A header file containing the HIO classes for passing to HBaseView::FileInput and HBaseView::FileOutpu...
HInputHandlerStyle GetInputStyle()
Definition: HIOUtilityPublish.h:270
HFileIOResult
Definition: HGlobals.h:24
void SetTemplateName(const wchar_t *name)
Definition: HIOUtilityPublish.h:157
wchar_t * Get3DFieldName()
Definition: HIOUtilityPublish.h:229
Definition: HIOUtilityPublish.h:44
H3DXOptions()
Definition: HIOUtilityPublish.h:369