Salome HOME
4f9c8176d9f4a2e34c3b93382cfd135675c97f3e
[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     // Begin: New methods for view parameters management
68     virtual void SplitRight();
69     virtual void SplitLeft();
70     virtual void SplitBottom();
71     virtual void SplitTop();
72
73     virtual void OnTop();
74
75     virtual void Attract   (VISU::View_ptr theView);
76     virtual void AttractAll(VISU::View_ptr theView);
77
78     virtual void SetRelativePositionInSplitter(CORBA::Double thePosition);
79     virtual void SetRelativeSizeInSplitter(CORBA::Double theSize);
80
81     virtual void SetRelativePositionX(CORBA::Double thePosition);
82     virtual void SetRelativePositionY(CORBA::Double thePosition);
83
84     virtual void SetRelativeSizeX(CORBA::Double theSize);
85     virtual void SetRelativeSizeY(CORBA::Double theSize);
86     // End: New methods for view parameters management
87
88     // Begin: Old methods for view parameters management, they don't work now
89     virtual void SetViewWidth(CORBA::Long Width);
90     virtual void SetViewHeight(CORBA::Long Height);
91     virtual CORBA::Long GetViewWidth();
92     virtual CORBA::Long GetViewHeight();
93     virtual void SetViewPositionHorizontal(VISU::View::ViewPosition ViewPosHor);
94     virtual void SetViewPositionVertical(VISU::View::ViewPosition ViewPosVer);
95     virtual void SetRelativePosition( CORBA::Double x, CORBA::Double y );
96     virtual void SetRelativeSize( CORBA::Double x, CORBA::Double y );
97     virtual void Minimize();
98     virtual void Restore();
99     virtual void Maximize();
100     // End: Old methods for view parameters management, they don't work now
101
102     virtual void SetBackground(const SALOMEDS::Color& theColor);
103     virtual SALOMEDS::Color GetBackground();
104
105     virtual void EraseAll();
106     virtual void DisplayAll();
107     virtual void Erase(PrsObject_ptr thePrsObj);
108     virtual void Display(PrsObject_ptr thePrsObj);
109     virtual void DisplayOnly(PrsObject_ptr thePrsObj);
110
111     virtual void Update();
112
113     virtual CORBA::Boolean SavePicture(const char* theFileName);
114
115     virtual void Close() = 0;
116     virtual void ToStream(std::ostringstream& theStr);
117     virtual const char* GetComment() const;
118   };
119
120
121   //===========================================================================
122   class XYPlot_i : public virtual POA_VISU::XYPlot,
123                    public virtual View_i
124   {
125   public:
126     typedef VISU::XYPlot TInterface;
127
128     XYPlot_i (SalomeApp_Application *theApplication);
129     virtual ~XYPlot_i();
130
131     virtual VISU::VISUType GetType() { return VISU::TXYPLOT; };
132
133     virtual void SetTitle (const char* theTitle);
134     virtual char* GetTitle();
135
136     virtual void SetSubTitle (const char* theTitle);
137     virtual char* GetSubTitle();
138
139     virtual void SetCurveType (VISU::XYPlot::CurveType theType);
140     virtual VISU::XYPlot::CurveType GetCurveType();
141
142     virtual void SetMarkerSize (CORBA::Long theSize);
143     virtual CORBA::Long GetMarkerSize();
144
145     virtual void EnableXGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
146                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
147     virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
148                               CORBA::Boolean theMinor, CORBA::Long theNumMinor);
149
150     virtual void SetHorScaling (VISU::Scaling theScaling);
151     virtual VISU::Scaling GetHorScaling();
152     virtual void SetVerScaling (VISU::Scaling theScaling);
153     virtual VISU::Scaling GetVerScaling();
154
155     virtual void SetXTitle (const char* theTitle);
156     virtual char* GetXTitle();
157
158     virtual void SetYTitle (const char* theTitle);
159     virtual char* GetYTitle();
160
161     virtual void ShowLegend (CORBA::Boolean theShowing);
162
163     virtual void EraseAll();
164     virtual void Erase (PrsObject_ptr thePrsObj);
165     virtual void Display (PrsObject_ptr thePrsObj);
166     virtual void DisplayOnly (PrsObject_ptr thePrsObj);
167     virtual void Update();
168
169     virtual void FitAll();
170     virtual void FitXRange(const CORBA::Double xMin,const CORBA::Double xMax);
171     virtual void FitYRange(const CORBA::Double yMin,const CORBA::Double yMax);
172     virtual void FitRange(const CORBA::Double xMin,const CORBA::Double xMax,
173                           const CORBA::Double yMin,const CORBA::Double yMax);
174     virtual void GetFitRanges(double& xMin, double& xMax, double& yMin, double& yMax);
175
176     virtual void Close();
177   protected:
178     Plot2d_ViewFrame* myView;
179   public:
180     virtual Storable* Create (int theNew);
181   };
182
183
184   //===========================================================================
185   class TableView_i : public virtual POA_VISU::TableView,
186                       public virtual View_i
187   {
188   public:
189     typedef VISU::TableView TInterface;
190
191     TableView_i (SalomeApp_Application *theApplication);
192     virtual ~TableView_i();
193
194     virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW; };
195
196     virtual void SetTitle (const char* theTitle);
197     virtual char* GetTitle();
198
199     virtual void Close();
200   protected:
201     VisuGUI_TableDlg* myView;
202   public:
203     virtual Storable* Create (VISU::Table_ptr theTable);
204   };
205
206
207   //===========================================================================
208   class View3D_i : public virtual POA_VISU::View3D,
209                    public virtual View_i
210   {
211   public:
212     typedef VISU::View3D TInterface;
213
214     View3D_i (SalomeApp_Application *theApplication);
215     virtual ~View3D_i();
216
217     virtual VISU::VISUType GetType() { return VISU::TVIEW3D; };
218
219     //View interface
220     virtual void SetTitle (const char* theTitle);
221     virtual char* GetTitle();
222
223     static  void SetBackground (SUIT_ViewWindow* theStudyFrame,
224                                 const SALOMEDS::Color& theColor);
225
226     static  SALOMEDS::Color GetBackground (SUIT_ViewWindow* theStudyFrame);
227
228     virtual void EraseAll();
229     virtual void DisplayAll();
230     virtual void Erase (PrsObject_ptr thePrsObj);
231     virtual void Display (PrsObject_ptr thePrsObj);
232     virtual void DisplayOnly (PrsObject_ptr thePrsObj);
233     virtual void Update();
234
235     //View3D interface
236     virtual void FitAll();
237     virtual void SetView (VISU::View3D::ViewType theType);
238
239     static  void SetPointOfView (SUIT_ViewWindow* theStudyFrame,
240                                  const CORBA::Double thePosition[3]);
241     virtual void SetPointOfView (const VISU::View3D::XYZ theCoord);
242
243     static  void GetPointOfView (SUIT_ViewWindow* theStudyFrame,
244                                  CORBA::Double thePosition[3]);
245     virtual VISU::View3D::XYZ_slice* GetPointOfView();
246
247     static  void SetViewUp (SUIT_ViewWindow* theStudyFrame,
248                             const CORBA::Double theViewUp[3]);
249     virtual void SetViewUp (const VISU::View3D::XYZ theDir);
250
251     static  void GetViewUp (SUIT_ViewWindow* theStudyFrame, CORBA::Double theViewUp[3]);
252     virtual VISU::View3D::XYZ_slice* GetViewUp();
253
254     static  void SetFocalPoint (SUIT_ViewWindow* theStudyFrame, const CORBA::Double theFocalPnt[3]);
255     virtual void SetFocalPoint (const VISU::View3D::XYZ theCoord);
256
257     static  void View3D_i::GetFocalPoint (SUIT_ViewWindow* theStudyFrame, CORBA::Double theFocalPnt[3]);
258     virtual VISU::View3D::XYZ_slice* GetFocalPoint();
259
260     static  void SetParallelScale (SUIT_ViewWindow* theStudyFrame, CORBA::Double theScale);
261     virtual void SetParallelScale (CORBA::Double theScale);
262
263     static  CORBA::Double GetParallelScale (SUIT_ViewWindow* theStudyFrame);
264     virtual CORBA::Double GetParallelScale ();
265
266     static  void ScaleView (SUIT_ViewWindow* theStudyFrame,
267                             VISU::View3D::Axis theAxis, CORBA::Double theParam);
268     virtual void ScaleView (VISU::View3D::Axis theAxis, CORBA::Double theParam);
269     virtual void RemoveScale();
270
271     static std::string ToString (SUIT_ViewWindow* theStudyFrame);
272
273     static void ToStream (SUIT_ViewWindow* theStudyFrame, std::ostringstream& theStr);
274
275     static  bool           SaveViewParams (SUIT_ViewManager* theViewManager,
276                                            const char* theName);
277     virtual CORBA::Boolean SaveViewParams (const char* theName);
278
279     static  bool           RestoreViewParams (SUIT_ViewManager* theViewManager,
280                                               const char* theName);
281     virtual CORBA::Boolean RestoreViewParams (const char* theName);
282
283     static QString GenerateViewParamsName();
284
285     static  void Restore (SUIT_ViewWindow* theStudyFrame,
286                           const Storable::TRestoringMap& theMap);
287
288     virtual void Close();
289
290   protected:
291     static int myNbViewParams;
292
293   public:
294     virtual Storable* Create (int theNew);
295     virtual void ToStream (std::ostringstream& theStr);
296     virtual const char* GetComment() const;
297     static const std::string myComment;
298   };
299 }
300
301 #endif