Salome HOME
Preferences
[modules/gui.git] / src / VTKViewer / VTKViewer_ViewWindow.h
1 #ifndef VTKVIEWER_VIEWWINDOW_H
2 #define VTKVIEWER_VIEWWINDOW_H
3
4 #include "VTKViewer.h"
5
6 #include "SUIT_ViewWindow.h"
7
8 #include "QtxAction.h"
9
10 class vtkRenderer;
11 class SUIT_Desktop;
12 class VTKViewer_Viewer;
13 class VTKViewer_Trihedron;
14 class VTKViewer_Transform;
15 class VTKViewer_RenderWindow;
16 class VTKViewer_InteractorStyle;
17 class VTKViewer_RenderWindowInteractor;
18 class VTKViewer_Actor;
19
20 #ifdef WIN32
21 #pragma warning( disable:4251 )
22 #endif
23
24 class VTKVIEWER_EXPORT VTKViewer_ViewWindow : public SUIT_ViewWindow
25 {
26   Q_OBJECT
27
28 public:
29   VTKViewer_ViewWindow( SUIT_Desktop*, VTKViewer_Viewer*,
30                         VTKViewer_InteractorStyle* = 0,
31                         VTKViewer_RenderWindowInteractor* = 0 );
32   virtual ~VTKViewer_ViewWindow();
33   
34   QToolBar*    getToolBar() { return myToolBar; }
35   
36   void         setBackgroundColor( const QColor& );
37   QColor       backgroundColor() const;
38
39   vtkRenderer*                      getRenderer()     { return myRenderer;     }
40   VTKViewer_RenderWindow*           getRenderWindow() { return myRenderWindow; }
41   VTKViewer_RenderWindowInteractor* getRWInteractor() { return myRWInteractor; }
42   bool                              isTrihedronDisplayed();
43
44   void Repaint( bool theUpdateTrihedron = true );
45   void onAdjustTrihedron();
46   void GetScale( double theScale[3] );
47   void SetScale( double theScale[3] );
48   void AddActor( VTKViewer_Actor*, bool update = false );
49   void RemoveActor( VTKViewer_Actor*, bool update = false);
50
51 public slots:
52   void onFrontView();
53   void onBackView();
54   void onTopView();
55   void onBottomView();
56   void onLeftView();
57   void onRightView();
58   void onResetView();
59   void onFitAll();
60   void activateZoom();
61   void activateWindowFit();
62   void activateRotation();
63   void activatePanning();
64   void activateGlobalPanning();
65   void onTrihedronShow();
66
67 protected:
68   QImage dumpView();
69
70 protected slots:
71   void onKeyPressed(QKeyEvent* event);
72   void onKeyReleased(QKeyEvent* event);
73   void onMousePressed(QMouseEvent* event);
74   void onMouseDoubleClicked(QMouseEvent* event);
75   void onMouseReleased(QMouseEvent* event);
76   void onMouseMoving(QMouseEvent* event);
77
78 private:
79   void                              InsertActor( VTKViewer_Actor* theActor,
80                                                  bool theMoveInternalActors = false );
81   void                              MoveActor( VTKViewer_Actor* theActor );
82
83 private:
84   enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
85          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, TrihedronShowId };
86   typedef QMap<int, QtxAction*> ActionsMap;
87   
88   void    createActions();
89   void    createToolBar();
90   
91   VTKViewer_Viewer*                 myModel;
92  
93   vtkRenderer*                      myRenderer;
94   VTKViewer_RenderWindow*           myRenderWindow;
95   VTKViewer_RenderWindowInteractor* myRWInteractor;
96   
97   VTKViewer_Trihedron*              myTrihedron;  
98   VTKViewer_Transform*              myTransform;
99   
100   QToolBar*                         myToolBar;
101   ActionsMap                        myActionsMap;  
102   
103   double                            myCurScale;
104
105   friend class VTKViewer_RenderWindowInteractor;
106 };
107
108 #ifdef WIN32
109 #pragma warning( default:4251 )
110 #endif
111
112 #endif