Salome HOME
This commit was generated by cvs2git to create tag 'V1_4_0b2'.
[modules/kernel.git] / src / VTKViewer / VTKViewer_ViewFrame.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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : VTKViewer_ViewFrame.h
25 //  Author : Nicolas REJNERI
26 //  Module : SALOME
27 //  $Header$
28
29 #ifndef VTKViewer_ViewFrame_H
30 #define VTKViewer_ViewFrame_H
31
32 #include "QAD.h"
33 #include "QAD_ViewFrame.h"
34
35 #include "VTKViewer_RenderWindowInteractor.h"
36 #include "VTKViewer_RenderWindow.h"
37
38 // VTK Includes
39 class vtkRenderer;
40 class vtkTransform;
41 class VTKViewer_Trihedron;
42
43 class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame{
44   Q_OBJECT;
45  public:
46   VTKViewer_ViewFrame(QWidget* parent, const char* name=0 );
47   ~VTKViewer_ViewFrame();
48   
49   ViewType                       getTypeView() const{ return VIEW_VTK;};
50   QWidget*                       getViewWidget();
51   vtkRenderer*                   getRenderer() {return m_Renderer;}
52
53   VTKViewer_RenderWindow*        getRW() {return m_RW;}
54   VTKViewer_RenderWindowInteractor* getRWInteractor() {return m_RWInteractor;}
55
56   bool                           isTrihedronDisplayed();
57  
58   void                           setBackgroundColor( const QColor& );
59   QColor                         backgroundColor() const;
60   
61   void                           SetSelectionMode( int mode );
62
63   /*  popup management */
64   void                           setPopupServer( QAD_Application* );
65
66   /*  interactive object management */
67   void                           highlight( const Handle(SALOME_InteractiveObject)& IObject, 
68                                             bool highlight, bool immediatly = true );
69   void                           unHighlightAll();
70   void                           rename( const Handle(SALOME_InteractiveObject)& IObject,
71                                          QString newName );
72   bool                           isInViewer( const Handle(SALOME_InteractiveObject)& IObject );
73   bool                           isVisible( const Handle(SALOME_InteractiveObject)& IObject );
74
75   /*  undo/redo management */
76   void              undo(SALOMEDS::Study_var aStudy,
77                          const char* StudyFrameEntry);
78   void              redo(SALOMEDS::Study_var aStudy,
79                          const char* StudyFrameEntry);
80
81
82   /* selection */
83   Handle(SALOME_InteractiveObject) FindIObject(const char* Entry);
84   
85   /* display */         
86   void           Display(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true);
87   void           DisplayOnly(const Handle(SALOME_InteractiveObject)& IObject);
88   void           Erase(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true);
89   void           DisplayAll();
90   void           EraseAll();
91   void           Repaint(bool theUpdateTrihedron);
92   void           Repaint() { Repaint(true); }
93
94   //apply existing transformation on adding SALOME_Actor
95   void SetScale(double theScale[3]);
96   void GetScale(double theScale[3]);
97   void AddActor(SALOME_Actor*, bool update = false);
98   void RemoveActor(SALOME_Actor*, bool update = false);
99
100  public slots:
101   void           onViewPan(); 
102   void           onViewZoom();
103   void           onViewFitAll();
104   void           onViewFitArea();
105   void           onViewGlobalPan(); 
106   void           onViewRotate();
107   void           onViewReset();     
108   void           onViewFront(); 
109   void           onViewBack(); 
110   void           onViewRight(); 
111   void           onViewLeft();     
112   void           onViewBottom();
113   void           onViewTop();
114   void           onViewTrihedron(); 
115   void           onAdjustTrihedron();
116  
117  private:
118   double                        m_ViewUp[3];
119   double                        m_ViewNormal[3];
120   
121   void                          InitialSetup();
122
123   vtkRenderer*                      m_Renderer;
124   VTKViewer_RenderWindow*           m_RW;
125   VTKViewer_RenderWindowInteractor* m_RWInteractor;
126
127   VTKViewer_Trihedron *m_Triedron;  
128   SALOME_Transform *m_Transform;
129 };
130 #endif