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
00073 class PoHistogram : public PoGraphMaster {
00074
00075 SO_KIT_HEADER(PoHistogram) ;
00076
00077
00078 SO_KIT_CATALOG_ENTRY_HEADER(transform) ;
00079
00080 SO_KIT_CATALOG_ENTRY_HEADER(barSep) ;
00081 SO_KIT_CATALOG_ENTRY_HEADER(barApp) ;
00082 SO_KIT_CATALOG_ENTRY_HEADER(bar) ;
00083
00084 SO_KIT_CATALOG_ENTRY_HEADER(valueTextSep) ;
00085 SO_KIT_CATALOG_ENTRY_HEADER(valueTextApp) ;
00086 SO_KIT_CATALOG_ENTRY_HEADER(valueText) ;
00087
00088 SO_KIT_CATALOG_ENTRY_HEADER(nameTextSep) ;
00089 SO_KIT_CATALOG_ENTRY_HEADER(nameTextApp) ;
00090 SO_KIT_CATALOG_ENTRY_HEADER(nameText) ;
00091
00092
00093 public:
00094
00098 enum Type {
00102 X,
00106 Y
00107 } ;
00108
00112 enum Position {
00116 POS_TOP_OUT,
00120 POS_TOP_IN,
00124 POS_BOTTOM_OUT,
00128 POS_BOTTOM_IN,
00132 POS_RIGHT_OUT,
00136 POS_RIGHT_IN,
00140 POS_LEFT_OUT,
00144 POS_LEFT_IN,
00148 POS_CENTER,
00152 POS_DEPEND
00153 } ;
00154
00158 enum Visibility {
00162 VISIBILITY_OFF,
00166 VISIBILITY_ON
00167 } ;
00168
00172 enum TextPath {
00176 PATH_RIGHT,
00180 PATH_LEFT,
00184 PATH_UP,
00188 PATH_DOWN,
00192 PATH_DEPEND
00193 } ;
00194
00198 enum BarSpaceType {
00202 REL_SPACE,
00206 FIXED_SPACE
00207 } ;
00208
00212 enum Coloring {
00216 COLOR_LIST,
00220 DATA_MAPPING
00221 } ;
00222
00223
00224
00225
00226
00227
00228
00232 SoSFVec2f start ;
00233
00237 SoSFFloat end ;
00238
00243 SoSFEnum type ;
00244
00250 SoMFColor color ;
00251
00258 SoSFEnum coloring ;
00259
00260
00261
00265 SoSFEnum valueVisibility ;
00266
00270 SoSFEnum valuePosition ;
00271
00276 SoSFEnum valuePath ;
00277
00284 SoSFFloat valueFontSize ;
00285
00291 SoSFString valueFontName ;
00292
00296 SoSFBool valueAddStringVisibility ;
00297
00301 SoSFString valueAddString ;
00302
00303
00304
00308 SoSFEnum nameVisibility ;
00309
00313 SoSFEnum namePosition ;
00314
00319 SoSFEnum namePath ;
00320
00326 SoSFFloat nameFontSize ;
00327
00333 SoSFString nameFontName ;
00334
00339 SoSFEnum barSpaceType ;
00340
00349 SoSFFloat barSpaceValue ;
00350
00351
00352
00353
00354
00355
00356
00363 void setMiscTextAttr(PbMiscTextAttr *textAttr) ;
00364
00368 const PbMiscTextAttr *getMiscTextAttr() const ;
00369
00377 void setDataMapping(PbDataMapping *dataMapping) ;
00378
00383 const PbDataMapping* getDataMapping() const ;
00384
00392 void setFormat(PbNumericDisplayFormat *format) ;
00393
00398 const PbNumericDisplayFormat *getFormat() const ;
00399 private:
00400 static void initClass() ;
00401 static void exitClass() ;
00402
00403 struct ValueAttr {
00404 Position position ;
00405 TextPath path ;
00406 float fontSize ;
00407 SbString fontName ;
00408 } ;
00409
00410 struct NameAttr {
00411 Position position ;
00412 TextPath path ;
00413 float fontSize ;
00414 SbString fontName ;
00415 } ;
00416
00417 private:
00418 struct HistogAttr {
00419 ValueAttr value ;
00420 NameAttr name ;
00421 float scaleFactor ;
00422 } ;
00423
00424 HistogAttr m_histogAttr ;
00425
00426
00427 virtual void setDefaultOnNonWritingFields() ;
00428 virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways = FALSE) ;
00429
00430
00431 virtual void basicObjectChange(PbBase *basicObj) ;
00432
00433 virtual void setDefaultAttr() ;
00434 virtual void colorBars(SoGroup *group) ;
00435
00436
00437 PoHistogram() ;
00438
00439
00440 virtual ~PoHistogram() ;
00441
00442
00443
00444
00445 static void computeTextPos(const SbVec2f *rectangle, Position textPos, float
00446 fontSize, SbVec2f &pointText) ;
00447
00448
00449 static void computeTextAlignPath(Position textPos, TextPath path, PiText *text) ;
00450
00451
00452 virtual void addElementsAllCaches() ;
00453 virtual void preRebuild() ;
00454
00455 private:
00456
00457 PbMiscTextAttr *m_miscTextAttr, *m_defaultMiscTextAttr ;
00458
00459
00460 PbDataMapping *m_dataMap ;
00461
00462
00463 PbNumericDisplayFormat *m_numericDisplayFormat, *m_defaultNumericDisplayFormat ;
00464
00465
00466 FieldSensorList m_fieldSensorList ;
00467
00468
00469 SoFieldList m_fieldList ;
00470
00471 } ;
00472
00473
00474
00475 #endif
00476
00477