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.salome-platform.org/ or email : webmaster.salome@opencascade.com
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
52 View_i (SalomeApp_Application *theApplication,
53 SUIT_ViewManager* theViewManager);
57 virtual void ShowPart( VISU::View::ViewRepresentation ViewRepr, CORBA::Boolean state );
58 virtual CORBA::Boolean IsPartShown( VISU::View::ViewRepresentation ViewRepr );
60 // Begin: New methods for view parameters management
61 virtual void SplitRight();
62 virtual void SplitLeft();
63 virtual void SplitBottom();
64 virtual void SplitTop();
68 virtual void Attract (VISU::View_ptr theView);
69 virtual void AttractAll(VISU::View_ptr theView);
71 virtual void SetRelativePositionInSplitter(CORBA::Double thePosition);
72 virtual void SetRelativeSizeInSplitter(CORBA::Double theSize);
74 virtual void SetRelativePositionX(CORBA::Double thePosition);
75 virtual void SetRelativePositionY(CORBA::Double thePosition);
77 virtual void SetRelativeSizeX(CORBA::Double theSize);
78 virtual void SetRelativeSizeY(CORBA::Double theSize);
79 // End: New methods for view parameters management
81 // Begin: Old methods for view parameters management, they don't work now
82 virtual void SetViewWidth(CORBA::Long Width);
83 virtual void SetViewHeight(CORBA::Long Height);
84 virtual CORBA::Long GetViewWidth();
85 virtual CORBA::Long GetViewHeight();
86 virtual void SetViewPositionHorizontal(VISU::View::ViewPosition ViewPosHor);
87 virtual void SetViewPositionVertical(VISU::View::ViewPosition ViewPosVer);
88 virtual void SetRelativePosition( CORBA::Double x, CORBA::Double y );
89 virtual void SetRelativeSize( CORBA::Double x, CORBA::Double y );
90 virtual void Minimize();
91 virtual void Restore();
92 virtual void Maximize();
93 // End: Old methods for view parameters management, they don't work now
95 virtual void SetBackground(const SALOMEDS::Color& theColor);
96 virtual SALOMEDS::Color GetBackground();
98 virtual void EraseAll();
99 virtual void DisplayAll();
100 virtual void Erase(PrsObject_ptr thePrsObj);
101 virtual void Display(PrsObject_ptr thePrsObj);
102 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
104 virtual void Update();
106 virtual CORBA::Boolean SavePicture(const char* theFileName);
108 virtual void Close() = 0;
109 virtual void ToStream(std::ostringstream& theStr);
110 virtual const char* GetComment() const;
112 SUIT_ViewWindow* GetViewWindow();
113 void SetViewWindow(SUIT_ViewWindow* theViewWindow);
116 QWidget *myWorkspace;
118 SalomeApp_Application *myApplication;
119 SUIT_ViewManager *myViewManager;
122 SUIT_ViewWindow *myViewWindow;
126 //===========================================================================
127 class XYPlot_i : public virtual POA_VISU::XYPlot,
128 public virtual View_i
131 typedef VISU::XYPlot TInterface;
133 XYPlot_i (SalomeApp_Application *theApplication);
136 virtual VISU::VISUType GetType() { return VISU::TXYPLOT; };
138 virtual void SetTitle (const char* theTitle);
139 virtual char* GetTitle();
141 virtual void SetSubTitle (const char* theTitle);
142 virtual char* GetSubTitle();
144 virtual void SetCurveType (VISU::XYPlot::CurveType theType);
145 virtual VISU::XYPlot::CurveType GetCurveType();
147 virtual void SetMarkerSize (CORBA::Long theSize);
148 virtual CORBA::Long GetMarkerSize();
150 virtual void EnableXGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
151 CORBA::Boolean theMinor, CORBA::Long theNumMinor);
152 virtual void EnableYGrid (CORBA::Boolean theMajor, CORBA::Long theNumMajor,
153 CORBA::Boolean theMinor, CORBA::Long theNumMinor);
155 virtual void SetHorScaling (VISU::Scaling theScaling);
156 virtual VISU::Scaling GetHorScaling();
157 virtual void SetVerScaling (VISU::Scaling theScaling);
158 virtual VISU::Scaling GetVerScaling();
160 virtual void SetXTitle (const char* theTitle);
161 virtual char* GetXTitle();
163 virtual void SetYTitle (const char* theTitle);
164 virtual char* GetYTitle();
166 virtual void ShowLegend (CORBA::Boolean theShowing);
168 virtual void EraseAll();
169 virtual void Erase (PrsObject_ptr thePrsObj);
170 virtual void Display (PrsObject_ptr thePrsObj);
171 virtual void DisplayOnly (PrsObject_ptr thePrsObj);
172 virtual void Update();
174 virtual void FitAll();
175 virtual void FitXRange(const CORBA::Double xMin,const CORBA::Double xMax);
176 virtual void FitYRange(const CORBA::Double yMin,const CORBA::Double yMax);
177 virtual void FitRange(const CORBA::Double xMin,const CORBA::Double xMax,
178 const CORBA::Double yMin,const CORBA::Double yMax);
179 virtual void GetFitRanges(double& xMin, double& xMax, double& yMin, double& yMax);
181 virtual void Close();
183 Plot2d_ViewFrame* myView;
185 virtual Storable* Create (int theNew);
189 //===========================================================================
190 class TableView_i : public virtual POA_VISU::TableView,
191 public virtual View_i
194 typedef VISU::TableView TInterface;
196 TableView_i (SalomeApp_Application *theApplication);
197 virtual ~TableView_i();
199 virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW; };
201 virtual void SetTitle (const char* theTitle);
202 virtual char* GetTitle();
204 virtual void Close();
206 VisuGUI_TableDlg* myView;
208 virtual Storable* Create (VISU::Table_ptr theTable);
212 //===========================================================================
213 class View3D_i : public virtual POA_VISU::View3D,
214 public virtual View_i
217 typedef VISU::View3D TInterface;
219 View3D_i (SalomeApp_Application *theApplication);
222 virtual VISU::VISUType GetType() { return VISU::TVIEW3D; };
225 virtual void SetTitle (const char* theTitle);
226 virtual char* GetTitle();
228 static void SetBackground (SUIT_ViewWindow* theViewWindow,
229 const SALOMEDS::Color& theColor);
231 static SALOMEDS::Color GetBackground (SUIT_ViewWindow* theViewWindow);
233 virtual void EraseAll();
234 virtual void DisplayAll();
235 virtual void Erase (PrsObject_ptr thePrsObj);
236 virtual void Display (PrsObject_ptr thePrsObj);
237 virtual void DisplayOnly (PrsObject_ptr thePrsObj);
238 virtual void Update();
241 virtual void FitAll();
242 virtual void SetView (VISU::View3D::ViewType theType);
244 static void SetPointOfView (SUIT_ViewWindow* theViewWindow,
245 const CORBA::Double thePosition[3]);
246 virtual void SetPointOfView (const VISU::View3D::XYZ theCoord);
248 static void GetPointOfView (SUIT_ViewWindow* theViewWindow,
249 CORBA::Double thePosition[3]);
250 virtual VISU::View3D::XYZ_slice* GetPointOfView();
252 static void SetViewUp (SUIT_ViewWindow* theViewWindow,
253 const CORBA::Double theViewUp[3]);
254 virtual void SetViewUp (const VISU::View3D::XYZ theDir);
256 static void GetViewUp (SUIT_ViewWindow* theViewWindow, CORBA::Double theViewUp[3]);
257 virtual VISU::View3D::XYZ_slice* GetViewUp();
259 static void SetFocalPoint (SUIT_ViewWindow* theViewWindow, const CORBA::Double theFocalPnt[3]);
260 virtual void SetFocalPoint (const VISU::View3D::XYZ theCoord);
262 static void View3D_i::GetFocalPoint (SUIT_ViewWindow* theViewWindow, CORBA::Double theFocalPnt[3]);
263 virtual VISU::View3D::XYZ_slice* GetFocalPoint();
265 static void SetParallelScale (SUIT_ViewWindow* theViewWindow, CORBA::Double theScale);
266 virtual void SetParallelScale (CORBA::Double theScale);
268 static CORBA::Double GetParallelScale (SUIT_ViewWindow* theViewWindow);
269 virtual CORBA::Double GetParallelScale ();
271 static void ScaleView (SUIT_ViewWindow* theViewWindow,
272 VISU::View3D::Axis theAxis, CORBA::Double theParam);
273 virtual void ScaleView (VISU::View3D::Axis theAxis, CORBA::Double theParam);
274 virtual void RemoveScale();
276 static std::string ToString (SUIT_ViewWindow* theViewWindow);
278 static void ToStream (SUIT_ViewWindow* theViewWindow, std::ostringstream& theStr);
280 static bool SaveViewParams (SUIT_ViewManager* theViewManager,
281 const char* theName);
282 virtual CORBA::Boolean SaveViewParams (const char* theName);
284 static bool RestoreViewParams (SUIT_ViewManager* theViewManager,
285 const char* theName);
286 virtual CORBA::Boolean RestoreViewParams (const char* theName);
288 static QString GenerateViewParamsName();
290 static void Restore (SUIT_ViewWindow* theViewWindow,
291 const Storable::TRestoringMap& theMap);
293 virtual void Close();
295 // Certain presentation view parameters management
296 virtual PresentationType GetPresentationType(ScalarMap_ptr thePrs);
297 virtual CORBA::Boolean IsShrinked (ScalarMap_ptr thePrs);
298 virtual CORBA::Boolean IsShaded (ScalarMap_ptr thePrs);
299 virtual CORBA::Double GetOpacity (ScalarMap_ptr thePrs);
300 virtual CORBA::Double GetLineWidth (ScalarMap_ptr thePrs);
302 virtual char* SetPresentationType(ScalarMap_ptr thePrs, PresentationType thePrsType);
303 virtual char* SetShrinked (ScalarMap_ptr thePrs, CORBA::Boolean isShrinked);
304 virtual char* SetShaded (ScalarMap_ptr thePrs, CORBA::Boolean isShaded);
305 virtual char* SetOpacity (ScalarMap_ptr thePrs, CORBA::Double theOpacity);
306 virtual char* SetLineWidth (ScalarMap_ptr thePrs, CORBA::Double theLineWidth);
309 static int myNbViewParams;
312 virtual Storable* Create (int theNew);
313 virtual void ToStream (std::ostringstream& theStr);
314 virtual const char* GetComment() const;
315 static const std::string myComment;