Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HIOUtilityStl.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: 0daf108e8fcc3997d24ad42413285c9b21bcd3e5 $
13 //
14 
15 #ifndef _HIOUTILITYSTL_H
16 #define _HIOUTILITYSTL_H
17 
18 
19 #ifdef H_PACK_8
20 #pragma pack(push)
21 #pragma pack(8)
22 #endif
23 
24 #include "HTools.h"
25 #include "HIOManager.h"
26 #include "varray.h"
27 
28 
33 class MVO_API HIOUtilityStl: public HInputHandler, public HOutputHandler
34 {
35 
36 public:
37 
41  SetOutputOps(HOutputOpFileOutputByKey);
42  };
43  virtual ~HIOUtilityStl() {;};
44 
47  const char * GetOutputName() { return "HIOUtilityStl"; }
48  const char * GetInputName() { return "HIOUtilityStl"; }
49 
52  HIORegisterInputType("stl",this);
53  };
54 
57  HIORegisterOutputType("stl",this);
58  };
59 
61  const char * GetInputTypesString() {return "stl";};
62 
64  const char * GetOutputTypesString() {return "stl";};
65 
68 
70  HOutputHandlerStyle GetOutputStyle() {return HOutputHandlerStyleModel;};
71 
82  HFileInputResult FileInputByKey(const __wchar_t * FileName, HC_KEY key, HInputHandlerOptions * options);
83 
84  HFileInputResult FileInputByKey(const char * FileName, HC_KEY key, HInputHandlerOptions * options){
85  return FileInputByKey(H_WCS(FileName).encodedText(), key, options);
86  };
87 
88  HFileInputResult FileInputByKey(const unsigned short * FileName, HC_KEY key, HInputHandlerOptions * options){
89  H_UTF16 utf16;
90  utf16.encodedText((utf16_char const*) FileName);
91  return FileInputByKey(H_WCS(utf16).encodedText(), key, options);
92  };
93 
94 
103  HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
104 
105  HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options){
106  H_UTF16 utf16;
107  utf16.encodedText((utf16_char const*) filename);
108  return FileOutputByKey(H_WCS(utf16).encodedText(), key, options);
109  }
110 
111  HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options){
112  return FileOutputByKey(H_WCS(filename).encodedText(), key, options);
113  }
114 
115 private:
116 
117  static struct stl_info
118  {
119  FILE *f;
120  bool is_ascii;
121  HC_KEY start_segment;
122  HC_KEY copy_segment;
123  int triangle_count;
124  } stl_info_s;
125 
126  static struct include_list
127  {
128  HC_KEY include;
129  include_list *next;
130  } include_list_s;
131 
132  static HFileInputResult ReadStlFile(const __wchar_t *FileName);
133  static HFileInputResult ReadStlFileAscii(const __wchar_t *FileName);
134  static HFileInputResult ReadStlFileBinary(const __wchar_t *FileName);
135  static HFileOutputResult WriteStlFile(const __wchar_t *FileName, const float *vertices, const float *normals, unsigned int triangle_count, bool is_ascii, char *partname);
136  static HFileOutputResult WriteStlFileAscii(const __wchar_t *FileName, const float *vertices, const float *normals, unsigned int triangle_count, char *partname);
137  static HFileOutputResult WriteStlFileBinary(const __wchar_t *FileName, const float *vertices, const float *normals, unsigned int triangle_count);
138  static HFileOutputResult ComputeStlTriangles(HC_KEY the_key, stl_info *info, HOutputHandlerOptions *options, bool no_recurse=false, float *matrix_for_segment_reference=0 );
139 };
140 
141 
142 #ifdef H_PACK_8
143 #pragma pack(pop)
144 #endif
145 
146 #endif
const char * GetInputName()
Definition: HIOUtilityStl.h:48
HInputHandlerStyle GetInputStyle()
Definition: HIOUtilityStl.h:67
Specifies an HInputHandler for model data.
Definition: HIOManager.h:227
#define HOutputOpFileOutputByKey
This HOutputHandler supports output from a segment key.
Definition: HIOManager.h:75
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
#define HC_KEY
const char * GetOutputTypesString()
Definition: HIOUtilityStl.h:64
HOutputHandlerStyle
Definition: HIOManager.h:858
HFileInputResult FileInputByKey(const char *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityStl.h:84
void RegisterInputHandlerTypes()
Definition: HIOUtilityStl.h:51
#define HIORegisterInputType(type, input_object)
Definition: HIOManager.h:87
#define HIORegisterOutputType(type, output_object)
HIORegisterOutputType(type,output_object) Used by a HOutputHandler to set extension types that it han...
Definition: HIOManager.h:92
HFileInputResult FileInputByKey(const unsigned short *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityStl.h:88
HIOUtilityStl()
Definition: HIOUtilityStl.h:39
HInputHandlerStyle
Definition: HIOManager.h:226
const char * GetOutputName()
Definition: HIOUtilityStl.h:47
void RegisterOutputHandlerTypes()
Definition: HIOUtilityStl.h:56
#define HInputOpFileInputByKey
This HInputHandler supports input to a segment key.
Definition: HIOManager.h:60
Definition: HIOUtilityStl.h:33
Definition: HIOManager.h:247
void SetInputOps(unsigned long ops)
This sets the HInputOp.
Definition: HIOManager.h:836
A header file containing the HIO classes for passing to HBaseView::FileInput and HBaseView::FileOutpu...
const char * GetInputTypesString()
Definition: HIOUtilityStl.h:61
HOutputHandlerStyle GetOutputStyle()
Definition: HIOUtilityStl.h:70