vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HUDDisplay.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vrecko/Ability.h>
5 #include <vrecko/Timer.h>
6 
7 #include <osg/Geode>
8 #include <osgText/Text>
9 #include <osgText/Font>
10 #include <osg/BlendFunc>
11 #include <osg/Material>
12 #include <osg/StateSet>
13 #include <osg/Camera>
14 #include <string>
15 
16 # ifdef HUD_LIBRARY
17 #define HUD_EXPORT __declspec(dllexport)
18 # else
19 # define HUD_EXPORT __declspec(dllimport)
20 #endif
21 
22 using namespace vrecko;
23 
24 namespace APHUD {
29  osg::Vec4f backgroundColor;
30  osg::Vec4f fontColor;
31  osg::Vec4f gradientStartColor;
32  osg::Vec4f gradientEndColor;
33 };
34 
38 struct HUDField{
39  osg::ref_ptr<osgText::Text> text;
40  osg::ref_ptr<osg::Geometry> geometry;
41  osg::Vec4f color;
42  string name;
43  string actual_string;
44  int posX, posY;
45  bool animated;
46  float actualValue;
47  float maxValue;
48  float minValue;
49  osg::Vec4f colorMin;
50  osg::Vec4f colorMax;
51 };
52 
56 struct HUDWindow {
57  osg::ref_ptr<osg::Geometry> geometry;
58  string name;
59  int sizeX, sizeY, posX, posY;
60  osg::Vec4f color;
61  bool visible;
62  list<HUDField> fields;
63 };
64 
65 
66 class HUD_EXPORT HUDDisplay: public Ability {
67  public:
68  HUDDisplay();
70 
71  virtual void preInitialize();
72  virtual void postInitialize();
73  virtual bool loadXMLParameters(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *pParametersNode);
74  virtual void update(void);
75 
76  bool addWindow(string plugin_name);
77  bool updateWindowColor(string plugin_name, osg::Vec4f color);
78  bool addField(string field_name, string plugin_name);
79  bool updateFieldTextColor(string field_name, string plugin_name, osg::Vec4f color);
81  bool setFieldAsAnimated(string field_name, string plugin_name, bool value);
82  bool updateGradient(string field_name, string plugin_name, osg::Vec4f startColor, osg::Vec4f endColor);
83  bool updateValuesRange(string field_name, string plugin_name, float minValue, float maxValue);
85  bool removeWindow(string plugin_name);
86  bool removeField(string field_name,string plugin_name);
87  bool clearValue(string field_name, string plugin_name);
88  bool updateText(string text, string field_name ,string plugin_name);
89  bool updateValue(float value, string field_name ,string plugin_name);
91  bool setColorProfileforWindow(string plugin_name,int colorprofile);
96  float getActualValue(string field_name, string plugin_name );
97  bool hudWindowExist(string plugin_name);
98  bool hudFieldExist(string field_name, string plugin_name );
100  protected:
101  list<HUDWindow>::iterator getHUDWindow(string plugin_name);
102  list<HUDField>::iterator getHUDField(string field_name, string plugin_name);
104  bool correctName(string name);
111  osg::ref_ptr<osg::Camera> camera;
112  osg::ref_ptr<vrecko::EnvironmentObject> eo;
113  osg::ref_ptr<osg::Geode> geode;
114  osg::ref_ptr<osg::StateSet> stateSet;
117  bool setValue(string text, string field_name ,string plugin_name);
119  void updateAllWindowsPositions();
120  void updateAllWindows();
121  void updateWindowSizeX(string plugin_name);
122  void updateWindow(string plugin_name);
124  void updateFieldsPosition(string plugin_name);
125  void updateFields(string plugin_name);
126  void updateField(string field_name, string plugin_name);
127  void updateAllFields();
128  void updateAllFieldsPosition();
129  void removeAllFields(string plugin_name);
131  list<HUDWindow> hudWindows;
133  int viewWidth;
163  HUDColorProfile cProfiles[10];
164 };
165 
166 }