Introduction

Getting Started

Programming Guides

API Reference

Additional Resources

HIOUtilityStl.h
1 // Copyright (c) Tech Soft 3D
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 _HIOUTILITYSTL_H
11 #define _HIOUTILITYSTL_H
12 
13 
14 #ifdef H_PACK_8
15 #pragma pack(push)
16 #pragma pack(8)
17 #endif
18 
19 #include "HTools.h"
20 #include "HIOManager.h"
21 #include "varray.h"
22 
23 
28 class MVO_API HIOUtilityStl: public HInputHandler, public HOutputHandler
29 {
30 
31 public:
32 
37  };
38  virtual ~HIOUtilityStl() {;};
39 
42  const char * GetOutputName() { return "HIOUtilityStl"; }
43  const char * GetInputName() { return "HIOUtilityStl"; }
44 
47  HIORegisterInputType("stl",this);
48  };
49 
52  HIORegisterOutputType("stl",this);
53  };
54 
56  const char * GetInputTypesString() {return "stl";};
57 
59  const char * GetOutputTypesString() {return "stl";};
60 
63 
65  HOutputHandlerStyle GetOutputStyle() {return HOutputHandlerStyleModel;};
66 
77  HFileInputResult FileInputByKey(const __wchar_t * FileName, HC_KEY key, HInputHandlerOptions * options);
78 
79  HFileInputResult FileInputByKey(const char * FileName, HC_KEY key, HInputHandlerOptions * options){
80  return FileInputByKey(H_WCS(FileName).encodedText(), key, options);
81  };
82 
83  HFileInputResult FileInputByKey(const unsigned short * FileName, HC_KEY key, HInputHandlerOptions * options){
84  H_UTF16 utf16;
85  utf16.encodedText((utf16_char const*) FileName);
86  return FileInputByKey(H_WCS(utf16).encodedText(), key, options);
87  };
88 
89 
98  HFileOutputResult FileOutputByKey(const __wchar_t * filename, HC_KEY key, HOutputHandlerOptions * options);
99 
100  HFileOutputResult FileOutputByKey(const unsigned short * filename, HC_KEY key, HOutputHandlerOptions * options){
101  H_UTF16 utf16;
102  utf16.encodedText((utf16_char const*) filename);
103  return FileOutputByKey(H_WCS(utf16).encodedText(), key, options);
104  }
105 
106  HFileOutputResult FileOutputByKey(const char * filename, HC_KEY key, HOutputHandlerOptions * options){
107  return FileOutputByKey(H_WCS(filename).encodedText(), key, options);
108  }
109 
110 private:
111 
112  static struct stl_info
113  {
114  FILE *f;
115  bool is_ascii;
116  HC_KEY start_segment;
117  HC_KEY copy_segment;
118  int triangle_count;
119  } stl_info_s;
120 
121  static struct include_list
122  {
123  HC_KEY include;
124  include_list *next;
125  } include_list_s;
126 
127  static HFileInputResult ReadStlFile(const __wchar_t *FileName);
128  static HFileInputResult ReadStlFileAscii(const __wchar_t *FileName);
129  static HFileInputResult ReadStlFileBinary(const __wchar_t *FileName);
130  static HFileOutputResult WriteStlFile(const __wchar_t *FileName, const float *vertices, const float *normals, unsigned int triangle_count, bool is_ascii, char *partname);
131  static HFileOutputResult WriteStlFileAscii(const __wchar_t *FileName, const float *vertices, const float *normals, unsigned int triangle_count, char *partname);
132  static HFileOutputResult WriteStlFileBinary(const __wchar_t *FileName, const float *vertices, const float *normals, unsigned int triangle_count);
133  static HFileOutputResult ComputeStlTriangles(HC_KEY the_key, stl_info *info, HOutputHandlerOptions *options, bool no_recurse=false, float matrix_for_segment_reference[]=0 );
134 };
135 
136 
137 #ifdef H_PACK_8
138 #pragma pack(pop)
139 #endif
140 
141 #endif
virtual HFileOutputResult FileOutputByKey(const char *filename, HC_KEY key, HOutputHandlerOptions *options)
const char * GetInputName()
Definition: HIOUtilityStl.h:43
HInputHandlerStyle GetInputStyle()
Definition: HIOUtilityStl.h:62
Specifies an HInputHandler for model data.
Definition: HIOManager.h:226
#define HOutputOpFileOutputByKey
This HOutputHandler supports output from a segment key.
Definition: HIOManager.h:73
virtual HFileInputResult FileInputByKey(const char *filename, HC_KEY key, HInputHandlerOptions *options)
HInputHandler an abstract base class for model and image input.
Definition: HIOManager.h:587
const char * GetOutputTypesString()
Definition: HIOUtilityStl.h:59
HOutputHandlerStyle
Definition: HIOManager.h:778
#define HC_KEY
HOutputHandler an abstract base class for model and image output.
Definition: HIOManager.h:1172
HFileInputResult FileInputByKey(const char *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityStl.h:79
void RegisterInputHandlerTypes()
Definition: HIOUtilityStl.h:46
#define HIORegisterInputType(type, input_object)
Definition: HIOManager.h:85
#define HIORegisterOutputType(type, output_object)
HIORegisterOutputType(type,output_object) Used by a HOutputHandler to set extension types that it han...
Definition: HIOManager.h:90
HFileOutputResult FileOutputByKey(const char *filename, HC_KEY key, HOutputHandlerOptions *options)
Definition: HIOUtilityStl.h:106
HFileInputResult FileInputByKey(const unsigned short *FileName, HC_KEY key, HInputHandlerOptions *options)
Definition: HIOUtilityStl.h:83
HIOUtilityStl()
Definition: HIOUtilityStl.h:34
HInputHandlerStyle
Definition: HIOManager.h:225
Definition: HIOManager.h:824
const char * GetOutputName()
Definition: HIOUtilityStl.h:42
void RegisterOutputHandlerTypes()
Definition: HIOUtilityStl.h:51
HFileOutputResult FileOutputByKey(const unsigned short *filename, HC_KEY key, HOutputHandlerOptions *options)
Definition: HIOUtilityStl.h:100
#define HInputOpFileInputByKey
This HInputHandler supports input to a segment key.
Definition: HIOManager.h:58
Definition: HIOUtilityStl.h:28
Definition: HIOManager.h:246
void SetInputOps(unsigned long ops)
This sets the HInputOp.
Definition: HIOManager.h:756
void SetOutputOps(unsigned long ops)
This sets the HOutputOp.
Definition: HIOManager.h:1337
A header file containing the HIO classes for passing to HBaseView::FileInput and HBaseView::FileOutpu...
const char * GetInputTypesString()
Definition: HIOUtilityStl.h:56
HOutputHandlerStyle GetOutputStyle()
Definition: HIOUtilityStl.h:65