00001 #ifndef COIN_SOSURROUNDSCALE_H
00002 #define COIN_SOSURROUNDSCALE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/nodes/SoSubNode.h>
00028 #include <Inventor/nodes/SoTransformation.h>
00029 #include <Inventor/fields/SoSFInt32.h>
00030 #include <Inventor/SbVec3f.h>
00031
00032 class SbMatrix;
00033
00034 class COIN_DLL_API SoSurroundScale : public SoTransformation {
00035 typedef SoTransformation inherited;
00036
00037 SO_NODE_HEADER(SoSurroundScale);
00038
00039 public:
00040 static void initClass(void);
00041 SoSurroundScale(void);
00042
00043 SoSFInt32 numNodesUpToContainer;
00044 SoSFInt32 numNodesUpToReset;
00045
00046 void invalidate(void);
00047 virtual void doAction(SoAction * action);
00048 void setDoingTranslations(const SbBool val);
00049 SbBool isDoingTranslations(void);
00050
00051 protected:
00052 virtual ~SoSurroundScale();
00053
00054 virtual void callback(SoCallbackAction * action);
00055 virtual void GLRender(SoGLRenderAction * action);
00056 virtual void getBoundingBox(SoGetBoundingBoxAction * action);
00057 virtual void getMatrix(SoGetMatrixAction * action);
00058 virtual void pick(SoPickAction * action);
00059 void updateMySurroundParams(SoAction * action, const SbMatrix & inv);
00060 void setIgnoreInBbox(const SbBool val);
00061 SbBool isIgnoreInBbox(void);
00062
00063 protected:
00064 SbVec3f cachedScale;
00065 SbVec3f cachedInvScale;
00066 SbVec3f cachedTranslation;
00067 SbBool cacheOK;
00068 SbBool doTranslations;
00069
00070 private:
00071 SbBool ignoreinbbox;
00072 };
00073
00074 #endif // !COIN_SOSURROUNDSCALE_H