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