00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOGETPRIMITIVECOUNTACTION_H
00021 #define COIN_SOGETPRIMITIVECOUNTACTION_H
00022
00023 #include <Inventor/actions/SoAction.h>
00024 #include <Inventor/actions/SoSubAction.h>
00025 #include <Inventor/elements/SoDecimationTypeElement.h>
00026
00027
00028 class COIN_DLL_API SoGetPrimitiveCountAction : public SoAction {
00029 typedef SoAction inherited;
00030
00031 SO_ACTION_HEADER(SoGetPrimitiveCountAction);
00032
00033 public:
00034 SoGetPrimitiveCountAction(void);
00035 virtual ~SoGetPrimitiveCountAction();
00036
00037 static void initClass(void);
00038
00039 int getTriangleCount(void) const;
00040 int getLineCount(void) const;
00041 int getPointCount(void) const;
00042 int getTextCount(void) const;
00043 int getImageCount(void) const;
00044 SbBool containsNoPrimitives(void);
00045 SbBool containsNonTriangleShapes(void);
00046
00047 SbBool is3DTextCountedAsTriangles(void);
00048 void setCount3DTextAsTriangles(const SbBool flag);
00049
00050 SbBool canApproximateCount(void);
00051 void setCanApproximate(const SbBool flag);
00052
00053 void setDecimationValue(SoDecimationTypeElement::Type type,
00054 float percentage = 1.0);
00055 SoDecimationTypeElement::Type getDecimationType(void);
00056 float getDecimationPercentage(void);
00057
00058 void addNumTriangles(const int num);
00059 void addNumLines(const int num);
00060 void addNumPoints(const int num);
00061 void addNumText(const int num);
00062 void addNumImage(const int num);
00063 void incNumTriangles(void);
00064 void incNumLines(void);
00065 void incNumPoints(void);
00066 void incNumText(void);
00067 void incNumImage(void);
00068
00069 protected:
00070 virtual void beginTraversal(SoNode * node);
00071
00072 private:
00073 int numtris;
00074 int numlines;
00075 int numpoints;
00076 int numtexts;
00077 int numimages;
00078
00079 SbBool textastris;
00080 SbBool approx;
00081 SbBool nonvertexastris;
00082 SoDecimationTypeElement::Type decimationtype;
00083 float decimationpercentage;
00084 };
00085
00086 #endif // !COIN_SOGETPRIMITIVECOUNTACTION_H