00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _PO_DOMAIN_
00025 #define _PO_DOMAIN_
00026
00027 #include <Inventor/fields/SoSFVec3f.h>
00028 #include <Inventor/fields/SoSFEnum.h>
00029
00030 #include <MeshViz/nodes/PoNode.h>
00031
00032 class PbDomain ;
00033 class SoFieldSensor ;
00034 class SoTransform ;
00035 class SoMatrixTransform ;
00036
00106 class PoDomain : public PoNode {
00107
00108 SO_NODE_HEADER(PoDomain) ;
00109
00110
00111 public:
00112
00116 enum TransformType {
00117 TRANSFORM_01,
00118 SCALE_X_FIXED,
00119 SCALE_Y_FIXED,
00120 SCALE_Z_FIXED,
00121 SCALE_MAX_XYZ_FIXED
00122 } ;
00123
00127 enum BoundingBoxType {
00128 AS_IS,
00129 MIN_BOUNDING_CUBE,
00130 MAX_BOUNDED_CUBE
00131 } ;
00132
00133
00134
00135
00136
00140 SoSFVec3f min ;
00141
00145 SoSFVec3f max ;
00146
00150 SoSFEnum transformType ;
00151
00152
00153
00157 void setValues(const SbVec2f &min, const SbVec2f &max, BoundingBoxType type = AS_IS) ;
00158
00162 void setValues(const SbVec3f &min, const SbVec3f &max, BoundingBoxType type = AS_IS) ;
00163
00167 SoTransform* getTransform() ;
00168
00172 SoMatrixTransform* getMatrixTransform() ;
00173
00177 PoDomain() ;
00178
00179
00180
00181
00182 private:
00183 virtual void doAction(SoAction *action) ;
00184
00185 private:
00186 static void initClass() ;
00187 static void exitClass() ;
00188
00189 private:
00190 virtual ~PoDomain() ;
00191
00192 private:
00193 void updateDomain() ;
00194
00195 static void minMaxChangedCB(void *data, SoSensor *) ;
00196 static void transformTypeChangeCB(void *data, SoSensor *) ;
00197
00198 SbBool m_minMaxChanged, m_transformTypeChanged ;
00199 PbDomain *m_domain ;
00200 SoFieldSensor *m_minSensor ;
00201 SoFieldSensor *m_maxSensor ;
00202 SoFieldSensor *m_transformTypeSensor ;
00203 } ;
00204
00205
00206 #endif
00207
00208