00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __STLPARSER__H__
00013 #define __STLPARSER__H__
00014
00015 #include "../../scenemanager.h"
00016 #include "../../geometrynode.h"
00017 #include "../../geometrytriangles.h"
00018
00020 typedef struct _STLBinary{
00021 float norm[3];
00022 float vert1[3],vert2[3],vert3[3];
00023 char attr[2];
00024 } STLBinary;
00025
00026
00027 namespace VRUT
00028 {
00029 class Module;
00030
00032 class STLParser
00033 {
00034 private:
00036 wxInputStream * inputStream;
00038 SCENE_ID sceneID;
00040 wxString fileName;
00042 Module * module;
00043
00045 bool parseASCII(GeometryNode *node, std::vector<VECTOR3> * verts, std::vector<VECTOR3> * normals,
00046 std::vector<GeometryTriangles::Indice> * indices, bool recomputeNormals);
00048 bool parseBinary(GeometryNode *node, std::vector<VECTOR3> * verts, std::vector<VECTOR3> * normals,
00049 std::vector<GeometryTriangles::Indice> * indices, bool recomputeNormals);
00050
00051 public:
00057 STLParser(wxInputStream * _inputStream, SCENE_ID _sceneID, const wxString _scenePath, Module * _module);
00059 ~STLParser();
00060
00065 bool Parse(const wxString & rootUid, bool recomputeNormals);
00066 };
00067 };
00068
00069
00070 #endif