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_HISTOGRAM_
00025 #define _PO_HISTOGRAM_
00026
00027 #include <MeshViz/graph/PoGraphMaster.h>
00028
00029 #include <Inventor/fields/SoSFVec2f.h>
00030 #include <Inventor/fields/SoSFEnum.h>
00031 #include <Inventor/fields/SoSFFloat.h>
00032 #include <Inventor/fields/SoMFColor.h>
00033 #include <Inventor/fields/SoSFBool.h>
00034 #include <Inventor/fields/SoSFString.h>
00035
00036
00037 class PbMiscTextAttr ;
00038 class PbDataMapping ;
00039 class PbNumericDisplayFormat ;
00040
00041 class PiText ;
00042
00072 class PoHistogram : public PoGraphMaster {
00073
00074 SO_KIT_HEADER(PoHistogram) ;
00075
00076
00077 SO_KIT_CATALOG_ENTRY_HEADER(transform) ;
00078
00079 SO_KIT_CATALOG_ENTRY_HEADER(barSep) ;
00080 SO_KIT_CATALOG_ENTRY_HEADER(barApp) ;
00081 SO_KIT_CATALOG_ENTRY_HEADER(bar) ;
00082
00083 SO_KIT_CATALOG_ENTRY_HEADER(valueTextSep) ;
00084 SO_KIT_CATALOG_ENTRY_HEADER(valueTextApp) ;
00085 SO_KIT_CATALOG_ENTRY_HEADER(valueText) ;
00086
00087 SO_KIT_CATALOG_ENTRY_HEADER(nameTextSep) ;
00088 SO_KIT_CATALOG_ENTRY_HEADER(nameTextApp) ;
00089 SO_KIT_CATALOG_ENTRY_HEADER(nameText) ;
00090
00091
00092 public:
00093
00097 enum Type {
00101 X,
00105 Y
00106 } ;
00107
00111 enum Position {
00115 POS_TOP_OUT,
00119 POS_TOP_IN,
00123 POS_BOTTOM_OUT,
00127 POS_BOTTOM_IN,
00131 POS_RIGHT_OUT,
00135 POS_RIGHT_IN,
00139 POS_LEFT_OUT,
00143 POS_LEFT_IN,
00147 POS_CENTER,
00151 POS_DEPEND
00152 } ;
00153
00157 enum Visibility {
00161 VISIBILITY_OFF,
00165 VISIBILITY_ON
00166 } ;
00167
00171 enum TextPath {
00175 PATH_RIGHT,
00179 PATH_LEFT,
00183 PATH_UP,
00187 PATH_DOWN,
00191 PATH_DEPEND
00192 } ;
00193
00197 enum BarSpaceType {
00201 REL_SPACE,
00205 FIXED_SPACE
00206 } ;
00207
00211 enum Coloring {
00215 COLOR_LIST,
00219 DATA_MAPPING
00220 } ;
00221
00222
00223
00224
00225
00226
00227
00231 SoSFVec2f start ;
00232
00236 SoSFFloat end ;
00237
00242 SoSFEnum type ;
00243
00249 SoMFColor color ;
00250
00257 SoSFEnum coloring ;
00258
00259
00260
00264 SoSFEnum valueVisibility ;
00265
00269 SoSFEnum valuePosition ;
00270
00275 SoSFEnum valuePath ;
00276
00283 SoSFFloat valueFontSize ;
00284
00290 SoSFString valueFontName ;
00291
00295 SoSFBool valueAddStringVisibility ;
00296
00300 SoSFString valueAddString ;
00301
00302
00303
00307 SoSFEnum nameVisibility ;
00308
00312 SoSFEnum namePosition ;
00313
00318 SoSFEnum namePath ;
00319
00325 SoSFFloat nameFontSize ;
00326
00332 SoSFString nameFontName ;
00333
00338 SoSFEnum barSpaceType ;
00339
00348 SoSFFloat barSpaceValue ;
00349
00350
00351
00352
00353
00354
00355
00362 void setMiscTextAttr(PbMiscTextAttr *textAttr) ;
00363
00367 const PbMiscTextAttr *getMiscTextAttr() const ;
00368
00376 void setDataMapping(PbDataMapping *dataMapping) ;
00377
00382 const PbDataMapping* getDataMapping() const ;
00383
00391 void setFormat(PbNumericDisplayFormat *format) ;
00392
00397 const PbNumericDisplayFormat *getFormat() const ;
00398 private:
00399 static void initClass() ;
00400 static void exitClass() ;
00401
00402 struct ValueAttr {
00403 Position position ;
00404 TextPath path ;
00405 float fontSize ;
00406 SbString fontName ;
00407 } ;
00408
00409 struct NameAttr {
00410 Position position ;
00411 TextPath path ;
00412 float fontSize ;
00413 SbString fontName ;
00414 } ;
00415
00416 private:
00417 struct HistogAttr {
00418 ValueAttr value ;
00419 NameAttr name ;
00420 float scaleFactor ;
00421 } ;
00422
00423 HistogAttr m_histogAttr ;
00424
00425
00426 virtual void setDefaultOnNonWritingFields() ;
00427 virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways = FALSE) ;
00428
00429
00430 virtual void basicObjectChange(PbBase *basicObj) ;
00431
00432 virtual void setDefaultAttr() ;
00433 virtual void colorBars(SoGroup *group) ;
00434
00435
00436 PoHistogram() ;
00437
00438
00439 virtual ~PoHistogram() ;
00440
00441
00442
00443
00444 static void computeTextPos(const SbVec2f *rectangle, Position textPos, float
00445 fontSize, SbVec2f &pointText) ;
00446
00447
00448 static void computeTextAlignPath(Position textPos, TextPath path, PiText *text) ;
00449
00450
00451 virtual void addElementsAllCaches() ;
00452 virtual void preRebuild() ;
00453
00454 private:
00455
00456 PbMiscTextAttr *m_miscTextAttr, *m_defaultMiscTextAttr ;
00457
00458
00459 PbDataMapping *m_dataMap ;
00460
00461
00462 PbNumericDisplayFormat *m_numericDisplayFormat, *m_defaultNumericDisplayFormat ;
00463
00464
00465 FieldSensorList m_fieldSensorList ;
00466
00467
00468 SoFieldList m_fieldList ;
00469
00470 } ;
00471
00472
00473
00474 #endif
00475
00476