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
00051 class SoSimplifier {
00052
00053 public:
00057 SoSimplifier () : shapeType (TRIANGLES), numTriangles (0), isShapeOpen (FALSE),
00058 hasNormal (FALSE), hasColor (FALSE), color (0), hasData (FALSE),
00059 numData (0), data (NULL), verbosity (FALSE) {};
00063 virtual ~SoSimplifier();
00064
00066 enum ShapeType {
00068 TRIANGLES,
00070 TRIANGLE_STRIP,
00072 TRIANGLE_FAN
00073 };
00074
00079 virtual void beginShape(ShapeType);
00083 virtual void endShape();
00084
00088 virtual void setVertex (const SbVec3f&);
00089
00093 void setNormal (const SbVec3f&);
00097 void setData (int numData, const float*);
00101 void setColor (const unsigned long&);
00102
00108 virtual SoNode* simplify (float ) = 0 ;
00109
00113 virtual void clear();
00114
00119 virtual int getNumTriangles() { return numTriangles; };
00120
00124 virtual void setVerbosity(SbBool v) { verbosity = v;}
00128 SbBool getVerbosity() const { return verbosity;}
00129
00130 private:
00131
00132 ShapeType shapeType;
00133 int numTriangles;
00134 SbBool isShapeOpen;
00135
00136
00137 SbBool hasNormal;
00138 SbVec3f normal;
00139 SbBool hasColor;
00140 unsigned long color;
00141 SbBool hasData;
00142 int numData;
00143 float *data;
00144 SbBool verbosity;
00145
00146 };
00147
00148 #endif // _SO_SIMPLIFIER_
00149
00150
00151
00152
00153
00154
00155
00156
00157