Salome HOME
updated copyright message
[modules/gui.git] / src / SVTK / SVTK_GenericRenderWindowInteractor.h
1 // Copyright (C) 2007-2023  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_GenericRenderWindowInteractor_h
28 #define SVTK_GenericRenderWindowInteractor_h
29
30 #include "SVTK.h"
31
32 #include <QObject>
33 #include <vtkGenericRenderWindowInteractor.h>
34 #include <vtkSmartPointer.h>
35
36 class QTimer;
37 class QWidget;
38
39 class SVTK_Selector;
40 //class SVTK_Renderer;
41
42 #ifdef WIN32
43 #pragma warning ( disable:4251 )
44 #endif
45
46 /*!
47   \class QVTK_GenericRenderWindowInteractor
48   Introduction of the class is intended to implement Qt based #CreateTimer and #DestroyTimer functionality.
49   The class intendes to implement platform indepenedant subclass of vtkRenderWindowInteractor.
50   This is done by usage of Qt library.
51   \note
52   The Signal/Slot mechanism used by Qt requires that QObject 
53   appear as the first class when using multiple inheritance. 
54   Hence the order of the two classes QObject and vtkRenderWindowInteractor
55   matters here. So, be careful, not to change the sequence of the inheritance by accident. 
56 */
57 class SVTK_EXPORT QVTK_GenericRenderWindowInteractor: 
58  public QObject,
59  public vtkGenericRenderWindowInteractor
60 {
61   Q_OBJECT
62
63  public:
64   static QVTK_GenericRenderWindowInteractor* New();
65   vtkTypeMacro(QVTK_GenericRenderWindowInteractor,vtkGenericRenderWindowInteractor)
66
67   //! Starts the QTimer instance on defined microseconds
68   virtual
69   int
70   CreateTimer( int ) ; 
71
72   //! Stops the QTimer instance
73   virtual
74   int
75   DestroyTimer() ; 
76
77  protected slots:
78   //! The slot connects to QTimer::timeout signal to invoke vtkCommand::TimerEvent
79   void
80   OnTimeOut();
81
82  protected:
83   QVTK_GenericRenderWindowInteractor(); //!< Instatiate QTimer
84   ~QVTK_GenericRenderWindowInteractor(); //!< Destroy the instance of QTimer
85
86   QTimer* myTimer; //!< Qt timer device
87 };
88
89
90 /*!
91   \class SVTK_GenericRenderWindowInteractor
92   This class introduce SALOME specific to the base one
93   In this class new members is added (#mySelector and #myRenderWidget).
94   They are used for initialization of #SVTK_InteractorStyle by redefinition of
95   #SVTK_InteractorStyle::SetInteractor method
96 */
97 class SVTK_EXPORT SVTK_GenericRenderWindowInteractor: public QVTK_GenericRenderWindowInteractor
98 {
99  public:
100   static SVTK_GenericRenderWindowInteractor* New();
101   vtkTypeMacro(SVTK_GenericRenderWindowInteractor,QVTK_GenericRenderWindowInteractor)
102
103   //! To get access to SVTK_Selector
104   SVTK_Selector* 
105   GetSelector(); 
106
107   //! To initialize mySelector field
108   void
109   SetSelector(SVTK_Selector* theSelector);
110
111   //! To get access to QWidget, where vtkRenderWindow maps to.
112   QWidget*
113   GetRenderWidget();
114
115   //! To initialize myRenderWidget field.
116   void
117   SetRenderWidget(QWidget* theRenderWidget);
118
119  protected:
120   SVTK_GenericRenderWindowInteractor();
121   ~SVTK_GenericRenderWindowInteractor();
122
123   SVTK_Selector* mySelector; //!< Keeps a pointer to SVTK_Selector
124   QWidget* myRenderWidget; //!< Keeps a pointer to QWidget, where vtkRenderWindow maps to.
125 };
126
127 #ifdef WIN32
128 #pragma warning ( default:4251 )
129 #endif
130
131 #endif