1 // VISU OBJECT : interactive object for VISU entities implementation
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
23 // File : VISU_View_i.hh
24 // Author : Alexey PETROV
27 #ifndef VISU_View_i_HeaderFile
28 #define VISU_View_i_HeaderFile
30 #include "VISUConfig.hh"
34 class VisuGUI_TableDlg;
36 class SalomeApp_Application;
38 class SUIT_ViewManager;
39 class SUIT_ViewWindow;
41 class Plot2d_ViewFrame;
48 class View_i : public virtual POA_VISU::View,
49 public virtual Storable
53 SUIT_ViewWindow *myViewWindow;
56 SalomeApp_Application *myApplication;
57 SUIT_ViewManager *myViewManager;
59 View_i (SalomeApp_Application *theApplication,
60 SUIT_ViewManager* theViewManager);
64 virtual void ShowPart( VISU::View::ViewRepresentation ViewRepr, CORBA::Boolean state );
65 virtual CORBA::Boolean IsPartShown( VISU::View::ViewRepresentation ViewRepr );
67 // Begin: New methods for view parameters management
68 virtual void SplitRight();
69 virtual void SplitLeft();
70 virtual void SplitBottom();
71 virtual void SplitTop();
75 virtual void Attract (VISU::View_ptr theView);
76 virtual void AttractAll(VISU::View_ptr theView);
78 virtual void SetRelativePositionInSplitter(CORBA::Double thePosition);
79 virtual void SetRelativeSizeInSplitter(CORBA::Double theSize);
81 virtual void SetRelativePositionX(CORBA::Double thePosition);
82 virtual void SetRelativePositionY(CORBA::Double thePosition);
84 virtual void SetRelativeSizeX(CORBA::Double theSize);
85 virtual void SetRelativeSizeY(CORBA::Double theSize);
86 // End: New methods for view parameters management
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
102 virtual void SetBackground(const SALOMEDS::Color& theColor);
103 virtual SALOMEDS::Color GetBackground();
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);
111 virtual void Update();
113 virtual CORBA::Boolean SavePicture(const char* theFileName);
115 virtual void Close() = 0;
116 virtual void ToStream(std::ostringstream& theStr);
117 virtual const char* GetComment() const;
121 //===========================================================================
122 class XYPlot_i : public virtual POA_VISU::XYPlot,
123 public virtual View_i
126 typedef VISU::XYPlot TInterface;
128 XYPlot_i (SalomeApp_Application *theApplication);
131 virtual VISU::VISUType GetType() { return VISU::TXYPLOT; };
133 virtual void SetTitle (const char* theTitle);
134 virtual char* GetTitle();
136 virtual void SetSubTitle (const char* theTitle);
137 virtual char* GetSubTitle();
139 virtual void SetCurveType (VISU::XYPlot::CurveType theType);
140 virtual VISU::XYPlot::CurveType GetCurveType();
142 virtual void SetMarkerSize (CORBA::Long theSize);
143 virtual CORBA::Long GetMarkerSize();
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);
150 virtual void SetHorScaling (VISU::Scaling theScaling);
151 virtual VISU::Scaling GetHorScaling();
152 virtual void SetVerScaling (VISU::Scaling theScaling);
153 virtual VISU::Scaling GetVerScaling();
155 virtual void SetXTitle (const char* theTitle);
156 virtual char* GetXTitle();
158 virtual void SetYTitle (const char* theTitle);
159 virtual char* GetYTitle();
161 virtual void ShowLegend (CORBA::Boolean theShowing);
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();
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);
176 virtual void Close();
178 Plot2d_ViewFrame* myView;
180 virtual Storable* Create (int theNew);
184 //===========================================================================
185 class TableView_i : public virtual POA_VISU::TableView,
186 public virtual View_i
189 typedef VISU::TableView TInterface;
191 TableView_i (SalomeApp_Application *theApplication);
192 virtual ~TableView_i();
194 virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW; };
196 virtual void SetTitle (const char* theTitle);
197 virtual char* GetTitle();
199 virtual void Close();
201 VisuGUI_TableDlg* myView;
203 virtual Storable* Create (VISU::Table_ptr theTable);
207 //===========================================================================
208 class View3D_i : public virtual POA_VISU::View3D,
209 public virtual View_i
212 typedef VISU::View3D TInterface;
214 View3D_i (SalomeApp_Application *theApplication);
217 virtual VISU::VISUType GetType() { return VISU::TVIEW3D; };
220 virtual void SetTitle (const char* theTitle);
221 virtual char* GetTitle();
223 static void SetBackground (SUIT_ViewWindow* theStudyFrame,
224 const SALOMEDS::Color& theColor);
226 static SALOMEDS::Color GetBackground (SUIT_ViewWindow* theStudyFrame);
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();
236 virtual void FitAll();
237 virtual void SetView (VISU::View3D::ViewType theType);
239 static void SetPointOfView (SUIT_ViewWindow* theStudyFrame,
240 const CORBA::Double thePosition[3]);
241 virtual void SetPointOfView (const VISU::View3D::XYZ theCoord);
243 static void GetPointOfView (SUIT_ViewWindow* theStudyFrame,
244 CORBA::Double thePosition[3]);
245 virtual VISU::View3D::XYZ_slice* GetPointOfView();
247 static void SetViewUp (SUIT_ViewWindow* theStudyFrame,
248 const CORBA::Double theViewUp[3]);
249 virtual void SetViewUp (const VISU::View3D::XYZ theDir);
251 static void GetViewUp (SUIT_ViewWindow* theStudyFrame, CORBA::Double theViewUp[3]);
252 virtual VISU::View3D::XYZ_slice* GetViewUp();
254 static void SetFocalPoint (SUIT_ViewWindow* theStudyFrame, const CORBA::Double theFocalPnt[3]);
255 virtual void SetFocalPoint (const VISU::View3D::XYZ theCoord);
257 static void View3D_i::GetFocalPoint (SUIT_ViewWindow* theStudyFrame, CORBA::Double theFocalPnt[3]);
258 virtual VISU::View3D::XYZ_slice* GetFocalPoint();
260 static void SetParallelScale (SUIT_ViewWindow* theStudyFrame, CORBA::Double theScale);
261 virtual void SetParallelScale (CORBA::Double theScale);
263 static CORBA::Double GetParallelScale (SUIT_ViewWindow* theStudyFrame);
264 virtual CORBA::Double GetParallelScale ();
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();
271 static std::string ToString (SUIT_ViewWindow* theStudyFrame);
273 static void ToStream (SUIT_ViewWindow* theStudyFrame, std::ostringstream& theStr);
275 static bool SaveViewParams (SUIT_ViewManager* theViewManager,
276 const char* theName);
277 virtual CORBA::Boolean SaveViewParams (const char* theName);
279 static bool RestoreViewParams (SUIT_ViewManager* theViewManager,
280 const char* theName);
281 virtual CORBA::Boolean RestoreViewParams (const char* theName);
283 static QString GenerateViewParamsName();
285 static void Restore (SUIT_ViewWindow* theStudyFrame,
286 const Storable::TRestoringMap& theMap);
288 virtual void Close();
291 static int myNbViewParams;
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;