forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkOpenVRMenuWidget.h
122 lines (98 loc) · 3.18 KB
/
vtkOpenVRMenuWidget.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*=========================================================================
Program: Visualization Toolkit
Module: vtkOpenVRMenuWidget.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkOpenVRMenuWidget
* @brief 3D widget to display a menu in VR
*
*/
#ifndef vtkOpenVRMenuWidget_h
#define vtkOpenVRMenuWidget_h
#include "vtkRenderingOpenVRModule.h" // For export macro
#include "vtkAbstractWidget.h"
#include <deque> // for ivar
class vtkEventData;
class vtkOpenVRMenuRepresentation;
class vtkPropMap;
class vtkProp;
class VTKRENDERINGOPENVR_EXPORT vtkOpenVRMenuWidget : public vtkAbstractWidget
{
public:
/**
* Instantiate the object.
*/
static vtkOpenVRMenuWidget *New();
//@{
/**
* Standard vtkObject methods
*/
vtkTypeMacro(vtkOpenVRMenuWidget, vtkAbstractWidget);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@}
/**
* Specify an instance of vtkWidgetRepresentation used to represent this
* widget in the scene. Note that the representation is a subclass of vtkProp
* so it can be added to the renderer independent of the widget.
*/
void SetRepresentation(vtkOpenVRMenuRepresentation *rep);
/**
* Create the default widget representation if one is not set.
*/
void CreateDefaultRepresentation() override;
//@{
/**
* Get the widget state.
*/
vtkGetMacro( WidgetState, int );
//@}
// Manage the state of the widget
enum _WidgetState {Start=0,Active};
/**
* Create a tooltip associated to a prop.
* Note that if the tooltip is already assigned to this prop,
* its text will be replaced
*/
void AddTooltip(vtkProp *prop, vtkStdString* str);
void AddTooltip(vtkProp *prop, const char* str);
//@{
/**
* Methods to add/remove items to the menu, called by the menu widget
*/
void PushFrontMenuItem(const char *name, const char *text, vtkCommand *cmd);
void RenameMenuItem(const char *name, const char *text);
void RemoveMenuItem(const char *name);
void RemoveAllMenuItems();
//@}
void Show(vtkEventData *ed);
void ShowSubMenu(vtkOpenVRMenuWidget *);
protected:
vtkOpenVRMenuWidget();
~vtkOpenVRMenuWidget() override;
int WidgetState;
class InternalElement;
std::deque<InternalElement *> Menus;
// These are the callbacks for this widget
static void StartMenuAction(vtkAbstractWidget*);
static void SelectMenuAction(vtkAbstractWidget*);
static void MoveAction(vtkAbstractWidget*);
vtkCallbackCommand* EventCommand;
static void EventCallback(vtkObject* object,
unsigned long event,
void* clientdata,
void* calldata);
/**
* Update callback to check for the hovered prop
*/
static void Update(vtkAbstractWidget*);
private:
vtkOpenVRMenuWidget(const vtkOpenVRMenuWidget&) = delete;
void operator=(const vtkOpenVRMenuWidget&) = delete;
};
#endif