vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Slider.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "GUI_item.h"
4 
5 using namespace vrecko;
6 
7 # ifdef GUI_LIBRARY
8 # define GUI_EXPORT __declspec(dllexport)
9 # else
10 # define GUI_EXPORT __declspec(dllimport)
11 #endif
12 
13 namespace APGUI
14 {
15 
17 
26 class GUI_EXPORT Slider : public GUI_Item
27 {
28 public:
29 
30  Slider();
31  ~Slider();
32 
33  bool createModels(string geometryType);
34 
46  bool initialize(string name, string receiver, string label, string tooltip, osg::Vec3 position = osg::Vec3() );
47 
56  bool initialize(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parametersNode);
57 
58  osg::ref_ptr<GUI_Text> getText() { return _text; }
59 
60  inline double getValue() { return _oldValue; }
61 
63  bool processAction( const int sensorNumber, const GUI_ACTION action, const bool pressed);
64 
66  virtual void pointed(bool pointed);
67 
68  void setColours( osg::Vec4 colourActive, osg::Vec4 colourDefault, osg::Vec4 colourHovered, osg::Vec4 colourPressed, osg::Vec4 colourDisabled );
69 
70  void setSliderParameters( double width, double heigh, double minValue, double MaxValue, double step );
71 
72  void setState(GUI_ITEM_STATE newState);
73 
74  void setValue( double value );
75 
76  void update();
77 
78 
79 protected:
80 
83 
84  double _oldValue;
85  double _minimumValue;
86  double _maximumValue;
87  double _step;
88 
89  // Visuals
90 
92  double _width;
93  double _height;
94 
95  // static part of slider
96  osg::ref_ptr<osg::Switch> _staticModel;
97 
98  // movable part of slider
99  osg::ref_ptr<osg::MatrixTransform> _movableTransform;
100  osg::ref_ptr<osg::Switch> _movableModel;
101 
102  // text of slider
103  osg::ref_ptr<GUI_Text> _text;
104 
105 
106  void createGeometry();
107  void setAndSendValue( double value );
108 
109  void sendValue( double value );
110 
112  void switchVisuals();
113 
114  void updateSlider( osg::Vec3 handPosition );
115 
116  osg::Vec3 transformHandPosition( osg::Vec3 &handPosition );
117 
118 
119  int Slider::intersectSegmentandPlane( osg::Vec3 point0, osg::Vec3 point1, osg::Vec3 planeNormal, osg::Vec3 planePoint, osg::Vec3 *resultPoint );
120 
121 
123  bool postInitialize(string name, string receiver, string label, string tooltip, osg::Vec3 position );
124 
125  DECLARE_INPUT(SliderValue, MessageFloat);
126 
127  DECLARE_OUTPUT(GUIItemClicked, MessageString);
128 
129  DECLARE_REQUEST_OUTPUT(SensorPosition, MessageInt, MessageVec3);
130 
131  void processInputPosition( int sensor_num, osg::Vec3 pos );
132 
133 };
134 
135 }