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