Salome HOME
Start implementation of methods, manipulating view parameters (position, size, splitt...
[modules/visu.git] / src / VISU_I / VISU_View_i.hh
1 //  VISU OBJECT : interactive object for VISU entities implementation
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 //  File   : VISU_View_i.hh
24 //  Author : Alexey PETROV
25 //  Module : VISU
26
27 #ifndef VISU_View_i_HeaderFile
28 #define VISU_View_i_HeaderFile
29
30 #include "VISUConfig.hh"
31
32 class QWidget;
33
34 class VisuGUI_TableDlg;
35
36 class SalomeApp_Application;
37
38 class SUIT_ViewManager;
39 class SUIT_ViewWindow;
40
41 class Plot2d_ViewFrame;
42
43 namespace VISU
44 {
45   class Prs3d_i;
46   class Curve_i;
47
48   class View_i : public virtual POA_VISU::View,
49                  public virtual Storable
50   {
51   public:
52     QWidget         *myWorkspace;
53     SUIT_ViewWindow *myViewWindow;
54
55   protected:
56     SalomeApp_Application *myApplication;
57     SUIT_ViewManager      *myViewManager;
58
59     View_i (SalomeApp_Application *theApplication,
60             SUIT_ViewManager* theViewManager);
61     virtual ~View_i();
62
63   public:
64     virtual void ShowPart( VISU::View::ViewRepresentation ViewRepr, CORBA::Boolean state  );
65     virtual CORBA::Boolean IsPartShown( VISU::View::ViewRepresentation ViewRepr );
66
67     virtual void SplitRight();
68     virtual void SplitBottom();
69
70     virtual void SetViewWidth(CORBA::Long Width);
71     virtual void SetViewHeight(CORBA::Long Height);
72     virtual CORBA::Long GetViewWidth();
73     virtual CORBA::Long GetViewHeight();
74     virtual void SetViewPositionHorizontal(VISU::View::ViewPosition ViewPosHor);
75     virtual void SetViewPositionVertical(VISU::View::ViewPosition ViewPosVer);
76
77     virtual void SetRelativePosition( CORBA::Double x, CORBA::Double y );
78     virtual void SetRelativeSize( CORBA::Double x, CORBA::Double y );
79
80     virtual void SetBackground(const SALOMEDS::Color& theColor);
81     virtual SALOMEDS::Color GetBackground();
82     virtual void Minimize();
83     virtual void Restore();
84     virtual void Maximize();
85     virtual void EraseAll();
86     virtual void DisplayAll();
87     virtual void Erase(PrsObject_ptr thePrsObj);
88     virtual void Display(PrsObject_ptr thePrsObj);
89     virtual void DisplayOnly(PrsObject_ptr thePrsObj);
90     virtual void Update();
91
92     virtual CORBA::Boolean SavePicture(const char* theFileName);
93
94     virtual void Close() = 0;
95     virtual void ToStream(std::ostringstream& theStr);
96     virtual const char* GetComment() const;
97   };
98
99
100   //===========================================================================
101   class XYPlot_i : public virtual POA_VISU::XYPlot,
102                    public virtual View_i
103   {
104   public:
105     typedef VISU::XYPlot TInterface;
106
107     XYPlot_i (SalomeApp_Application *theApplication);
108     virtual ~XYPlot_i();
109
110     virtual VISU::VISUType GetType() { return VISU::TXYPLOT; };
111
112     virtual void SetTitle (const char* theTitle);
113     virtual char* GetTitle();
114
115     virtual void SetSubTitle (const char* theTitle);
116     virtual char* GetSubTitle();
117
118     virtual void SetCurveType (VISU::XYPlot::CurveType theType);
119     virtual VISU::XYPlot::CurveType GetCurveType();
120
121     virtual void SetMarkerSize (CORBA::Long theSize);
122     virtual CORBA::Long GetMarkerSize();
123
124     virtual void EnableXGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
125                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
126     virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
127                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
128
129     virtual void SetHorScaling (VISU::Scaling theScaling);
130     virtual VISU::Scaling GetHorScaling();
131     virtual void SetVerScaling (VISU::Scaling theScaling);
132     virtual VISU::Scaling GetVerScaling();
133
134     virtual void SetXTitle (const char* theTitle);
135     virtual char* GetXTitle();
136
137     virtual void SetYTitle (const char* theTitle);
138     virtual char* GetYTitle();
139
140     virtual void ShowLegend (CORBA::Boolean theShowing);
141
142     virtual void EraseAll();
143     virtual void Erase (PrsObject_ptr thePrsObj);
144     virtual void Display (PrsObject_ptr thePrsObj);
145     virtual void DisplayOnly (PrsObject_ptr thePrsObj);
146     virtual void Update();
147
148     virtual void FitAll();
149
150     virtual void Close();
151   protected:
152     Plot2d_ViewFrame* myView;
153   public:
154     virtual Storable* Create (int theNew);
155   };
156
157
158   //===========================================================================
159   class TableView_i : public virtual POA_VISU::TableView,
160                       public virtual View_i
161   {
162   public:
163     typedef VISU::TableView TInterface;
164
165     TableView_i (SalomeApp_Application *theApplication);
166     virtual ~TableView_i();
167
168     virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW; };
169
170     virtual void SetTitle (const char* theTitle);
171     virtual char* GetTitle();
172
173     virtual void Close();
174   protected:
175     VisuGUI_TableDlg* myView;
176   public:
177     virtual Storable* Create (VISU::Table_ptr theTable);
178   };
179
180
181   //===========================================================================
182   class View3D_i : public virtual POA_VISU::View3D,
183                    public virtual View_i
184   {
185   public:
186     typedef VISU::View3D TInterface;
187
188     View3D_i (SalomeApp_Application *theApplication);
189     virtual ~View3D_i();
190
191     virtual VISU::VISUType GetType() { return VISU::TVIEW3D; };
192
193     //View interface
194     virtual void SetTitle (const char* theTitle);
195     virtual char* GetTitle();
196
197     static  void SetBackground (SUIT_ViewWindow* theStudyFrame,
198                                 const SALOMEDS::Color& theColor);
199
200     static  SALOMEDS::Color GetBackground (SUIT_ViewWindow* theStudyFrame);
201
202     virtual void EraseAll();
203     virtual void DisplayAll();
204     virtual void Erase (PrsObject_ptr thePrsObj);
205     virtual void Display (PrsObject_ptr thePrsObj);
206     virtual void DisplayOnly (PrsObject_ptr thePrsObj);
207     virtual void Update();
208
209     //View3D interface
210     virtual void FitAll();
211     virtual void SetView (VISU::View3D::ViewType theType);
212
213     static  void SetPointOfView (SUIT_ViewWindow* theStudyFrame,
214                                  const CORBA::Double thePosition[3]);
215     virtual void SetPointOfView (const VISU::View3D::XYZ theCoord);
216
217     static  void GetPointOfView (SUIT_ViewWindow* theStudyFrame,
218                                  CORBA::Double thePosition[3]);
219     virtual VISU::View3D::XYZ_slice* GetPointOfView();
220
221     static  void SetViewUp (SUIT_ViewWindow* theStudyFrame,
222                             const CORBA::Double theViewUp[3]);
223     virtual void SetViewUp (const VISU::View3D::XYZ theDir);
224
225     static  void GetViewUp (SUIT_ViewWindow* theStudyFrame, CORBA::Double theViewUp[3]);
226     virtual VISU::View3D::XYZ_slice* GetViewUp();
227
228     static  void SetFocalPoint (SUIT_ViewWindow* theStudyFrame, const CORBA::Double theFocalPnt[3]);
229     virtual void SetFocalPoint (const VISU::View3D::XYZ theCoord);
230
231     static  void View3D_i::GetFocalPoint (SUIT_ViewWindow* theStudyFrame, CORBA::Double theFocalPnt[3]);
232     virtual VISU::View3D::XYZ_slice* GetFocalPoint();
233
234     static  void SetParallelScale (SUIT_ViewWindow* theStudyFrame, CORBA::Double theScale);
235     virtual void SetParallelScale (CORBA::Double theScale);
236
237     static  CORBA::Double GetParallelScale (SUIT_ViewWindow* theStudyFrame);
238     virtual CORBA::Double GetParallelScale ();
239
240     static  void ScaleView (SUIT_ViewWindow* theStudyFrame,
241                             VISU::View3D::Axis theAxis, CORBA::Double theParam);
242     virtual void ScaleView (VISU::View3D::Axis theAxis, CORBA::Double theParam);
243     virtual void RemoveScale();
244
245     static std::string ToString (SUIT_ViewWindow* theStudyFrame);
246
247     static void ToStream (SUIT_ViewWindow* theStudyFrame, std::ostringstream& theStr);
248
249     static  bool           SaveViewParams (SUIT_ViewManager* theViewManager,
250                                            const char* theName);
251     virtual CORBA::Boolean SaveViewParams (const char* theName);
252
253     static  bool           RestoreViewParams (SUIT_ViewManager* theViewManager,
254                                               const char* theName);
255     virtual CORBA::Boolean RestoreViewParams (const char* theName);
256
257     static QString GenerateViewParamsName();
258
259     static  void Restore (SUIT_ViewWindow* theStudyFrame,
260                           const Storable::TRestoringMap& theMap);
261
262     virtual void Close();
263
264   protected:
265     static int myNbViewParams;
266
267   public:
268     virtual Storable* Create (int theNew);
269     virtual void ToStream (std::ostringstream& theStr);
270     virtual const char* GetComment() const;
271     static const std::string myComment;
272   };
273 }
274
275 #endif