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_LABEL_
00025 #define _PO_LABEL_
00026
00027 #include <MeshViz/graph/PoChart.h>
00028
00029 #include <Inventor/fields/SoSFBitMask.h>
00030 #include <Inventor/fields/SoSFEnum.h>
00031 #include <Inventor/fields/SoMFVec3f.h>
00032 #include <Inventor/fields/SoSFFloat.h>
00033
00034 class SoCoordinate3 ;
00035
00087 class PoLabel : public PoChart {
00088
00089 SO_KIT_HEADER(PoLabel) ;
00090
00091
00092 SO_KIT_CATALOG_ENTRY_HEADER(label) ;
00093 SO_KIT_CATALOG_ENTRY_HEADER(labelLineSep) ;
00094 SO_KIT_CATALOG_ENTRY_HEADER(labelLineApp) ;
00095 SO_KIT_CATALOG_ENTRY_HEADER(labelLine) ;
00096
00097
00098 public:
00099
00103 enum ValueType {
00109 VALUE,
00110
00116 NAME
00117 } ;
00118
00119
00120
00124 enum Position {
00128 VALUE_POS,
00129
00136 MIDDLE_POS,
00137
00143 THRESHOLD_POS
00144
00145 } ;
00146
00147
00148
00152 enum Axis {
00154 X,
00155
00157 Y
00158 } ;
00159
00160
00161
00162
00163
00169 SoSFInt32 stringsIndex ;
00170
00176 SoSFEnum axis ;
00177
00189 SoSFBitMask valueType ;
00190
00205 SoSFEnum position ;
00206
00210 SoSFFloat threshold ;
00211
00217 SoMFVec3f offset ;
00218
00225 SoSFFloat fontSize ;
00226
00230 PoLabel() ;
00231
00232
00233
00234
00235 private:
00236 static void initClass() ;
00237 static void exitClass() ;
00238
00239 private:
00240 virtual ~PoLabel() ;
00241
00242
00243
00244 virtual void rebuild() ;
00245 virtual void addElementsAllCaches() ;
00246 virtual void preRebuild() ;
00247
00248
00249 virtual void setDefaultOnNonWritingFields() ;
00250 virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways = FALSE) ;
00251
00252 private:
00253 void drawLabelLine(const SbBox2f &labelLimit, float labelDepth, const SbVec3f &origPos,
00254 SoCoordinate3 *labelLineCoords) ;
00255
00256 const SbString* retreiveValueName(float xValue, float yValue,
00257 int size, const float *x,
00258 const float *y, const SbString *valuesNames) const ;
00259
00260
00261 FieldSensorList fieldSensorList ;
00262
00263
00264 SoFieldList fieldList ;
00265 } ;
00266
00267
00268
00269 #endif
00270
00271