00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOTEXT3_H
00021 #define COIN_SOTEXT3_H
00022
00023 #include <Inventor/nodes/SoSubNode.h>
00024 #include <Inventor/nodes/SoShape.h>
00025 #include <Inventor/fields/SoMFString.h>
00026 #include <Inventor/fields/SoSFFloat.h>
00027 #include <Inventor/fields/SoSFEnum.h>
00028 #include <Inventor/fields/SoSFBitMask.h>
00029 #include <Inventor/lists/SbList.h>
00030
00031 class SoSensor;
00032 class SoFieldSensor;
00033 class SoGlyph;
00034
00035 class COIN_DLL_API SoText3 : public SoShape {
00036 typedef SoShape inherited;
00037
00038 SO_NODE_HEADER(SoText3);
00039
00040 public:
00041 static void initClass(void);
00042 SoText3(void);
00043
00044 enum Part {
00045 FRONT = 1,
00046 SIDES = 2,
00047 BACK = 4,
00048 ALL = FRONT|BACK|SIDES
00049 };
00050
00051 enum Justification {
00052 LEFT = 1,
00053 RIGHT,
00054 CENTER
00055 };
00056
00057 SoMFString string;
00058 SoSFFloat spacing;
00059 SoSFEnum justification;
00060 SoSFBitMask parts;
00061
00062 SbBox3f getCharacterBounds(SoState * state, int stringindex, int charindex);
00063
00064 virtual void GLRender(SoGLRenderAction * action);
00065 virtual void getPrimitiveCount(SoGetPrimitiveCountAction * action);
00066
00067 protected:
00068 virtual ~SoText3();
00069
00070 virtual void generatePrimitives(SoAction *);
00071 virtual void computeBBox(SoAction * action, SbBox3f & box, SbVec3f & center);
00072 virtual SoDetail * createTriangleDetail(SoRayPickAction * action,
00073 const SoPrimitiveVertex * v1,
00074 const SoPrimitiveVertex * v2,
00075 const SoPrimitiveVertex * v3,
00076 SoPickedPoint * pp);
00077
00078 virtual void notify(SoNotList *list);
00079
00080 private:
00081 class SoText3P * pimpl;
00082 friend class SoText3P;
00083 void render(SoState * state, unsigned int part);
00084 void generate(SoAction * action, unsigned int part);
00085 };
00086
00087 #endif // !COIN_SOTEXT3_H