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