Version: 9.16.0
SVTK_RenderWindowInteractor.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5//
6// This library is free software; you can redistribute it and/or
7// modify it under the terms of the GNU Lesser General Public
8// License as published by the Free Software Foundation; either
9// version 2.1 of the License, or (at your option) any later version.
10//
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14// Lesser General Public License for more details.
15//
16// You should have received a copy of the GNU Lesser General Public
17// License along with this library; if not, write to the Free Software
18// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19//
20// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21//
22
23// SALOME VTKViewer : build VTK viewer into Salome desktop
24// File :
25// Author :
26
27#ifndef SVTK_RenderWindowInteractor_h
28#define SVTK_RenderWindowInteractor_h
29
30#include "SVTK.h"
31#include "SVTK_Selection.h"
32
33#include <vtkSmartPointer.h>
34#include <QWidget>
35
36// undefining min and max because CASCADE's defines them and
37// it clashes with std::min(), std::max()
38#undef min
39#undef max
40
41#include <stack>
42
45class vtkCallbackCommand;
46class vtkRenderWindow;
47class vtkRenderer;
48class vtkObject;
49
50class SVTK_Selector;
51class SVTK_Renderer;
52
53#ifdef WIN32
54#pragma warning ( disable:4251 )
55#endif
56
65{
66 Q_OBJECT
67
68 public:
70 const char* theName);
71
73
75 virtual
76 void
77 Initialize(vtkGenericRenderWindowInteractor* theDevice);
78
80 GetDevice();
81
82 vtkRenderWindow*
83 getRenderWindow();
84
86 virtual
87 void
88 InvokeEvent(unsigned long theEvent, void* theCallData);
89
91 virtual QPaintEngine* paintEngine() const;
92
93 public slots:
95 virtual void show();
96
98 virtual void polish();
99
101 virtual void resize(int w, int h);
102
103 protected:
104 virtual void paintEvent( QPaintEvent* );
105 virtual void resizeEvent( QResizeEvent* );
106
107 virtual void mouseMoveEvent( QMouseEvent* );
108 virtual void mousePressEvent( QMouseEvent* );
109 virtual void mouseReleaseEvent( QMouseEvent* );
110 virtual void mouseDoubleClickEvent( QMouseEvent* );
111 virtual void wheelEvent( QWheelEvent* );
112 virtual void keyPressEvent( QKeyEvent* );
113 virtual void keyReleaseEvent( QKeyEvent* );
114 virtual void enterEvent( QEvent * );
115 virtual void leaveEvent( QEvent * );
116
117 virtual void contextMenuEvent( QContextMenuEvent * e );
118
119 // reimplemented from QWidget in order to set window - receiver
120 // of space mouse events.
121 virtual void focusInEvent( QFocusEvent* );
122 virtual void focusOutEvent( QFocusEvent* );
123
125 virtual bool nativeEvent( const QByteArray&, void*, long* );
126 vtkSmartPointer<vtkRenderWindow> myRenderWindow;
127 vtkSmartPointer<vtkGenericRenderWindowInteractor> myDevice;
128};
129
130
132
141{
142 Q_OBJECT
143
144 public:
146 const char* theName);
147
149
151 virtual
152 void
153 Initialize(vtkGenericRenderWindowInteractor* theDevice,
154 SVTK_Renderer* theRenderer,
155 SVTK_Selector* theSelector);
156
157 //----------------------------------------------------------------------------
160 GetRenderer();
161
163 vtkRenderer*
164 getRenderer();
165
166 //----------------------------------------------------------------------------
169 GetInteractorStyle();
170
172 void
173 PushInteractorStyle(vtkInteractorStyle* theStyle);
174
176 void
177 PopInteractorStyle();
178
179 //----------------------------------------------------------------------------
182 GetSelector();
183
186 SelectionMode() const;
187
189 void
190 SetSelectionMode(Selection_Mode theMode);
191
192 public:
194 void
195 onEmitSelectionChanged();
196
197 public:
198 signals:
199 void MouseMove( QMouseEvent* );
200 void MouseButtonPressed( QMouseEvent* );
201 void MouseButtonReleased( QMouseEvent* );
202 void MouseDoubleClicked( QMouseEvent* );
203 void ButtonPressed(const QMouseEvent *event);
204 void ButtonReleased(const QMouseEvent *event);
205 void WheelMoved( QWheelEvent* );
206 void KeyPressed( QKeyEvent* );
207 void KeyReleased( QKeyEvent* );
208 void contextMenuRequested( QContextMenuEvent *e );
209
211
212 protected:
213 virtual void mouseMoveEvent( QMouseEvent* );
214 virtual void mousePressEvent( QMouseEvent* );
215 virtual void mouseReleaseEvent( QMouseEvent* );
216 virtual void mouseDoubleClickEvent( QMouseEvent* );
217 virtual void wheelEvent( QWheelEvent* );
218 virtual void keyPressEvent( QKeyEvent* );
219 virtual void keyReleaseEvent( QKeyEvent* );
220
221 void
222 SetRenderer(SVTK_Renderer *theRenderer);
223
224 void
225 SetSelector(SVTK_Selector* theSelector);
226
227 void
228 InitInteractorStyle(vtkInteractorStyle* theStyle);
229
230 //----------------------------------------------------------------
231 // Main process VTK event method
232 static
233 void
234 ProcessEvents(vtkObject* theObject,
235 unsigned long theEvent,
236 void* theClientData,
237 void* theCallData);
238
239 // Used to process VTK events
240 vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
241
242 // Priority at which events are processed
244
245 //----------------------------------------------------------------
246 vtkSmartPointer<SVTK_Selector> mySelector;
247
248 vtkSmartPointer<SVTK_Renderer> myRenderer;
249
250 typedef vtkSmartPointer<vtkInteractorStyle> PInteractorStyle;
251 typedef std::stack<PInteractorStyle> TInteractorStyles;
253};
254
255#ifdef WIN32
256#pragma warning ( default:4251 )
257#endif
258
259#endif
Selection_Mode
Definition: SALOME_Selection.h:27
#define SVTK_EXPORT
Definition: SVTK.h:37
Definition: SVTK_RenderWindowInteractor.h:65
vtkSmartPointer< vtkRenderWindow > myRenderWindow
Definition: SVTK_RenderWindowInteractor.h:126
vtkSmartPointer< vtkGenericRenderWindowInteractor > myDevice
Definition: SVTK_RenderWindowInteractor.h:127
Extends QVTK_RenderWindowInteractor functionality.
Definition: SVTK_RenderWindowInteractor.h:141
void KeyPressed(QKeyEvent *)
void contextMenuRequested(QContextMenuEvent *e)
vtkSmartPointer< SVTK_Renderer > myRenderer
Definition: SVTK_RenderWindowInteractor.h:248
void WheelMoved(QWheelEvent *)
void MouseMove(QMouseEvent *)
vtkSmartPointer< vtkCallbackCommand > myEventCallbackCommand
Definition: SVTK_RenderWindowInteractor.h:240
void ButtonReleased(const QMouseEvent *event)
void MouseButtonReleased(QMouseEvent *)
void MouseButtonPressed(QMouseEvent *)
vtkSmartPointer< vtkInteractorStyle > PInteractorStyle
Definition: SVTK_RenderWindowInteractor.h:250
std::stack< PInteractorStyle > TInteractorStyles
Definition: SVTK_RenderWindowInteractor.h:251
void KeyReleased(QKeyEvent *)
void MouseDoubleClicked(QMouseEvent *)
float myPriority
Definition: SVTK_RenderWindowInteractor.h:243
void ButtonPressed(const QMouseEvent *event)
TInteractorStyles myInteractorStyles
Definition: SVTK_RenderWindowInteractor.h:252
vtkSmartPointer< SVTK_Selector > mySelector
Definition: SVTK_RenderWindowInteractor.h:246
Definition: SVTK_Renderer.h:66
Define an abstract interface for selection in SVTK package.
Definition: SVTK_Selector.h:58