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
00105 class PoDomain : public PoNode {
00106
00107 SO_NODE_HEADER(PoDomain) ;
00108
00109
00110 public:
00111
00115 enum TransformType {
00116 TRANSFORM_01,
00117 SCALE_X_FIXED,
00118 SCALE_Y_FIXED,
00119 SCALE_Z_FIXED,
00120 SCALE_MAX_XYZ_FIXED
00121 } ;
00122
00126 enum BoundingBoxType {
00127 AS_IS,
00128 MIN_BOUNDING_CUBE,
00129 MAX_BOUNDED_CUBE
00130 } ;
00131
00132
00133
00134
00135
00139 SoSFVec3f min ;
00140
00144 SoSFVec3f max ;
00145
00149 SoSFEnum transformType ;
00150
00151
00152
00156 void setValues(const SbVec2f &min, const SbVec2f &max, BoundingBoxType type = AS_IS) ;
00157
00161 void setValues(const SbVec3f &min, const SbVec3f &max, BoundingBoxType type = AS_IS) ;
00162
00166 SoTransform* getTransform() ;
00167
00171 SoMatrixTransform* getMatrixTransform() ;
00172
00176 PoDomain() ;
00177
00178
00179
00180
00181 private:
00182 virtual void doAction(SoAction *action) ;
00183
00184 private:
00185 static void initClass() ;
00186 static void exitClass() ;
00187
00188 private:
00189 virtual ~PoDomain() ;
00190
00191 private:
00192 void updateDomain() ;
00193
00194 static void minMaxChangedCB(void *data, SoSensor *) ;
00195 static void transformTypeChangeCB(void *data, SoSensor *) ;
00196
00197 SbBool m_minMaxChanged, m_transformTypeChanged ;
00198 PbDomain *m_domain ;
00199 SoFieldSensor *m_minSensor ;
00200 SoFieldSensor *m_maxSensor ;
00201 SoFieldSensor *m_transformTypeSensor ;
00202 } ;
00203
00204
00205 #endif
00206
00207