OpenCOVER
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
vruiRendererInterface.h
Go to the documentation of this file.
1 /* This file is part of COVISE.
2 
3  You can use it under the terms of the GNU Lesser General Public License
4  version 2.1 or later, see lgpl-2.1.txt.
5 
6  * License: LGPL 2+ */
7 
8 #ifndef VRUI_RENDERERINTERFACE_H
9 #define VRUI_RENDERERINTERFACE_H
10 
16 
17 #include <OpenVRUI/coAction.h>
19 
20 #include <string>
21 #include <map>
22 
23 EXPORT_TEMPLATE2(template class OPENVRUIEXPORT std::map<std::string, vrui::vruiNode *>)
24 
25 namespace vrui
26 {
27 
28 class vruiButtonProvider;
29 class vruiPanelGeometryProvider;
30 class vruiUIElementProvider;
31 
32 class vruiActionUserData;
33 class vruiButtons;
34 class vruiCollabInterface;
35 class vruiHit;
36 class vruiNode;
37 class vruiUserData;
38 
39 class coButtonGeometry;
40 class coPanelGeometry;
41 class coUIElement;
42 class coUpdateManager;
43 
44 class OPENVRUIEXPORT vruiRendererInterface
45 {
46 
47 public:
49  virtual ~vruiRendererInterface();
50 
51  virtual vruiNode *getMenuGroup() = 0;
52 
53  virtual vruiNode *getScene()
54  {
55  return NULL;
56  }
57 
58  virtual vruiUIElementProvider *createUIElementProvider(coUIElement *element) = 0;
59  virtual vruiButtonProvider *createButtonProvider(coButtonGeometry *button) = 0;
60  virtual vruiPanelGeometryProvider *createPanelGeometryProvider(coPanelGeometry *panel) = 0;
61 
62  virtual vruiTransformNode *createTransformNode() = 0;
63  virtual void deleteNode(vruiNode *node)
64  {
65  delete node;
66  }
67 
68  virtual vruiMatrix *createMatrix() = 0;
69  virtual void deleteMatrix(vruiMatrix *matrix)
70  {
71  delete matrix;
72  }
73 
74  virtual vruiActionUserData *createActionUserData(coAction *action) = 0;
75  virtual vruiUserData *createUserData() = 0;
76  virtual void deleteUserData(vruiUserData *userData)
77  {
78  delete userData;
79  }
80 
81  virtual vruiTexture *createTexture(const std::string &textureName) = 0;
82  virtual void deleteTexture(vruiTexture *texture)
83  {
84  delete texture;
85  }
86 
87  virtual vruiButtons *getButtons() const;
88  virtual vruiButtons *getMouseButtons() const;
89  virtual vruiButtons *getRelativeButtons() const;
90 
91  virtual double getFrameTime() const = 0; //{ return currentFrameTime; }
92  //inline void setFrameTime(double t) { currentFrameTime = t; } // set frame start time by Renderer
93 
94  virtual std::string getName(const std::string &name) const = 0;
95 
96  virtual coUpdateManager *getUpdateManager() = 0;
97 
100  {
101  return NULL;
102  }
104  virtual bool isRayActive()
105  {
106  return ray;
107  }
109  virtual void setRayActive(bool b)
110  {
111  ray = b;
112  }
114  virtual bool isJoystickActive();
116  virtual void setJoystickActvie(bool b);
117 
118  virtual coAction::Result hit(coAction *action, vruiHit *hit) = 0;
119  virtual void miss(coAction *action) = 0;
120 
121  // remove pointer indicator
122  virtual void removePointerIcon(const std::string &name) = 0;
123  // add pointer indicator
124  virtual void addPointerIcon(const std::string &name) = 0;
125 
126  virtual vruiNode *getIcon(const std::string &iconName, bool shared = false) = 0;
127 
128  virtual vruiMatrix *getViewerMatrix() const = 0;
129  virtual vruiMatrix *getHandMatrix() const = 0;
130  virtual vruiMatrix *getMouseMatrix() const = 0;
131  virtual vruiMatrix *getRelativeMatrix() const = 0;
132 
133  virtual bool is2DInputDevice() const = 0;
134  virtual bool isMultiTouchDevice() const
135  {
136  return false;
137  }
138 
139  virtual void sendCollabMessage(vruiCollabInterface *myinterface, const char *buffer, int length) = 0;
140  virtual void remoteLock(int)
141  {
142  }
143  virtual void remoteUnLock(int)
144  {
145  }
146  virtual bool isLocked(int)
147  {
148  return false;
149  }
150  virtual bool isLockedByMe(int)
151  {
152  return false;
153  }
154 
155  static vruiRendererInterface *the();
156 
158  void setInteractionScaleSensitivity(float f);
161  {
162  return interactionScaleSensitivity;
163  }
164 
165  void setUpVector(coVector v)
166  {
167  upVector = v;
168  }
169  coVector getUpVector()
170  {
171  return upVector;
172  }
173 
174  /* needed for RTT
175  virtual vruiMatrix *doBillboarding(vruiMatrix *invStartHandTrans, coVector pickPosition, coVector localPickPosition, float myScale) = 0;*/
176 
177 protected:
178  vruiButtons *buttons = nullptr;
179  vruiButtons *mouseButtons = nullptr;
180  vruiButtons *relativeButtons = nullptr;
181 
182  std::map<std::string, vruiNode *> iconsList;
183 
186 
188  coVector upVector;
189 
191 
192  bool ray = false;
193 };
194 }
195 #endif
base class for collaborative Userinterface elements
Definition: vruiCollabInterface.h:45
Definition: vruiButtons.h:17
float getInteractionScaleSensitivity()
get the sensitivity oft thre rowMenuHandle interation scale
Definition: vruiRendererInterface.h:160
Definition: vruiHit.h:20
std::map< std::string, vruiNode * > iconsList
Definition: vruiRendererInterface.h:182
Definition: vruiNode.h:21
virtual vruiNode * getScene()
Definition: vruiRendererInterface.h:53
Definition: vruiTransformNode.h:17
Definition: vruiButtonProvider.h:20
coVector getUpVector()
Definition: vruiRendererInterface.h:169
Result
Definition: coAction.h:43
Definition: coAction.h:25
virtual bool isLockedByMe(int)
Definition: vruiRendererInterface.h:150
virtual void setRayActive(bool b)
set menu pickable via ray
Definition: vruiRendererInterface.h:109
float interactionScaleSensitivity
Sensitivity of the rowMenuHandle Interaction scale.
Definition: vruiRendererInterface.h:185
virtual coJoystickManager * getJoystickManager()
the application can have a joystick manager
Definition: vruiRendererInterface.h:99
Definition: vruiMatrix.h:19
Userdata that can be attached to Nodes in the scenegraph.
Definition: vruiTexture.h:17
virtual void deleteNode(vruiNode *node)
Definition: vruiRendererInterface.h:63
Userdata that can be attached to Nodes in the scenegraph.
Definition: vruiActionUserData.h:18
coVector upVector
Upvector.
Definition: vruiRendererInterface.h:188
virtual void deleteMatrix(vruiMatrix *matrix)
Definition: vruiRendererInterface.h:69
Userdata that can be attached to Nodes in the scenegraph.
Definition: vruiUserData.h:17
Definition: coButtonGeometry.h:26
virtual void deleteUserData(vruiUserData *userData)
Definition: vruiRendererInterface.h:76
static vruiRendererInterface * theInterface
Definition: vruiRendererInterface.h:190
Definition: coUIElement.h:52
virtual void remoteUnLock(int)
Definition: vruiRendererInterface.h:143
virtual void remoteLock(int)
Definition: vruiRendererInterface.h:140
Definition: coUpdateManager.h:41
Definition: vruiRendererInterface.h:44
Manages the joystick as input device.
Definition: coJoystickManager.h:33
Definition: vruiPanelGeometryProvider.h:19
virtual bool isMultiTouchDevice() const
Definition: vruiRendererInterface.h:134
virtual void deleteTexture(vruiTexture *texture)
Definition: vruiRendererInterface.h:82
Definition: coPanelGeometry.h:21
void setUpVector(coVector v)
Definition: vruiRendererInterface.h:165
virtual bool isLocked(int)
Definition: vruiRendererInterface.h:146
virtual bool isRayActive()
is menu pickable via ray
Definition: vruiRendererInterface.h:104
Definition: vruiUIElementProvider.h:22