00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _SO_SIMPLIFIER_
00026 #define _SO_SIMPLIFIER_
00027
00028
00029 #include <Inventor/SbLinear.h>
00030 #include <Inventor/nodes/SoNode.h>
00031
00032
00052 class SoSimplifier {
00053
00054 public:
00058 SoSimplifier () : shapeType (TRIANGLES), numTriangles (0), isShapeOpen (FALSE),
00059 hasNormal (FALSE), hasColor (FALSE), color (0), hasData (FALSE),
00060 numData (0), data (NULL), verbosity (FALSE) {};
00064 virtual ~SoSimplifier();
00065
00067 enum ShapeType {
00069 TRIANGLES,
00071 TRIANGLE_STRIP,
00073 TRIANGLE_FAN
00074 };
00075
00080 virtual void beginShape(ShapeType);
00084 virtual void endShape();
00085
00089 virtual void setVertex (const SbVec3f&);
00090
00094 void setNormal (const SbVec3f&);
00098 void setData (int numData, const float*);
00102 void setColor (const unsigned long&);
00103
00109 virtual SoNode* simplify (float ) = 0 ;
00110
00114 virtual void clear();
00115
00120 virtual int getNumTriangles() { return numTriangles; };
00121
00125 virtual void setVerbosity(SbBool v) { verbosity = v;}
00129 SbBool getVerbosity() const { return verbosity;}
00130
00131 private:
00132
00133 ShapeType shapeType;
00134 int numTriangles;
00135 SbBool isShapeOpen;
00136
00137
00138 SbBool hasNormal;
00139 SbVec3f normal;
00140 SbBool hasColor;
00141 unsigned long color;
00142 SbBool hasData;
00143 int numData;
00144 float *data;
00145 SbBool verbosity;
00146
00147 };
00148
00149 #endif // _SO_SIMPLIFIER_
00150
00151
00152
00153
00154
00155
00156
00157
00158