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_ViewManager_i.hh
24 // Author : Alexey PETROV
27 #ifndef VISU_ViewManager_i_HeaderFile
28 #define VISU_ViewManager_i_HeaderFile
30 #include "VISUConfig.hh"
35 class VTKViewer_ViewFrame;
36 class SALOMEGUI_TableDlg;
37 class Plot2d_ViewFrame;
46 class ViewManager_i : public virtual POA_VISU::ViewManager,
50 ViewManager_i(SALOMEDS::Study_ptr theStudy);
51 virtual ~ViewManager_i() {};
52 virtual VISU::VISUType GetType() { return VISU::TVIEWMANAGER;};
54 virtual View3D_ptr Create3DView();
55 virtual View_ptr GetCurrentView();
56 virtual TableView_ptr CreateTableView(VISU::Table_ptr theTable);
57 virtual XYPlot_ptr CreateXYPlot();
58 virtual void Destroy(View_ptr theView);
61 SALOMEDS::Study_var myStudyDocument;
64 //===========================================================================
65 class View_i : public virtual POA_VISU::View,
66 public virtual Storable
70 QAD_StudyFrame* myStudyFrame;
73 virtual void ShowPart( VISU::View::ViewRepresentation ViewRepr, CORBA::Boolean state );
74 virtual CORBA::Boolean IsPartShown( VISU::View::ViewRepresentation ViewRepr );
75 virtual void SetViewWidth(CORBA::Long Width);
76 virtual void SetViewHeight(CORBA::Long Height);
77 virtual CORBA::Long GetViewWidth();
78 virtual CORBA::Long GetViewHeight();
79 virtual void SetViewPositionHorizontal(VISU::View::ViewPosition ViewPosHor);
80 virtual void SetViewPositionVertical(VISU::View::ViewPosition ViewPosVer);
82 virtual void SetRelativePosition( CORBA::Double x, CORBA::Double y );
83 virtual void SetRelativeSize( CORBA::Double x, CORBA::Double y );
85 View_i(SALOMEDS::Study_ptr theStudy);
87 virtual void SetBackground(const SALOMEDS::Color& theColor);
88 virtual SALOMEDS::Color GetBackground();
89 virtual void Minimize();
90 virtual void Restore();
91 virtual void Maximize();
92 virtual void EraseAll();
93 virtual void DisplayAll();
94 virtual void Erase(PrsObject_ptr thePrsObj);
95 virtual void Display(PrsObject_ptr thePrsObj);
96 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
97 virtual void Update();
99 virtual CORBA::Boolean SavePicture(const char* theFileName);
101 virtual void Close() = 0;
102 virtual void ToStream(std::ostringstream& theStr);
103 virtual const char* GetComment() const;
106 virtual std::string View_i::GetEntry();
109 //===========================================================================
110 class XYPlot_i : public virtual POA_VISU::XYPlot,
111 public virtual View_i
114 typedef VISU::XYPlot TInterface;
115 XYPlot_i(SALOMEDS::Study_ptr theStudy);
117 virtual VISU::VISUType GetType() { return VISU::TXYPLOT;};
119 virtual void SetTitle(const char* theTitle);
120 virtual char* GetTitle();
122 virtual void SetSubTitle(const char* theTitle);
123 virtual char* GetSubTitle();
125 virtual void SetCurveType(VISU::XYPlot::CurveType theType);
126 virtual VISU::XYPlot::CurveType GetCurveType();
128 virtual void SetMarkerSize(CORBA::Long theSize);
129 virtual CORBA::Long GetMarkerSize();
131 virtual void EnableXGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor,
132 CORBA::Boolean theMinor, CORBA::Long theNumMinor);
133 virtual void EnableYGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor,
134 CORBA::Boolean theMinor, CORBA::Long theNumMinor);
136 virtual void SetHorScaling(VISU::Scaling theScaling);
137 virtual VISU::Scaling GetHorScaling();
138 virtual void SetVerScaling(VISU::Scaling theScaling);
139 virtual VISU::Scaling GetVerScaling();
141 virtual void SetXTitle(const char* theTitle);
142 virtual char* GetXTitle();
144 virtual void SetYTitle(const char* theTitle);
145 virtual char* GetYTitle();
147 virtual void ShowLegend(CORBA::Boolean theShowing);
149 virtual void SetBackground(const SALOMEDS::Color& theColor);
150 virtual SALOMEDS::Color GetBackground();
151 virtual void Minimize();
152 virtual void Restore();
153 virtual void Maximize();
154 virtual void EraseAll();
155 virtual void Erase(PrsObject_ptr thePrsObj);
156 virtual void Display(PrsObject_ptr thePrsObj);
157 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
158 virtual void Update();
160 virtual CORBA::Boolean SavePicture(const char* theFileName);
162 virtual void FitAll();
164 virtual void Close();
166 Plot2d_ViewFrame* myView;
168 virtual Storable* Create(int theNew);
171 //===========================================================================
172 class TableView_i : public virtual POA_VISU::TableView,
173 public virtual View_i
176 typedef VISU::TableView TInterface;
177 TableView_i(SALOMEDS::Study_ptr theStudy);
178 virtual ~TableView_i();
179 virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW;};
181 virtual void SetTitle(const char* theTitle);
182 virtual char* GetTitle();
184 virtual void Close();
186 SALOMEGUI_TableDlg* myView;
188 virtual Storable* Create(VISU::Table_ptr theTable);
191 //===========================================================================
192 class View3D_i : public virtual POA_VISU::View3D,
193 public virtual View_i
196 typedef VISU::View3D TInterface;
197 View3D_i(SALOMEDS::Study_ptr theStudy);
199 virtual VISU::VISUType GetType() { return VISU::TVIEW3D;};
202 virtual void SetTitle(const char* theTitle);
203 virtual char* GetTitle();
205 static void SetBackground(QAD_StudyFrame* theStudyFrame, const SALOMEDS::Color& theColor);
206 virtual void SetBackground(const SALOMEDS::Color& theColor);
208 static SALOMEDS::Color GetBackground(QAD_StudyFrame* theStudyFrame);
209 virtual SALOMEDS::Color GetBackground();
211 virtual void Minimize();
212 virtual void Restore();
213 virtual void Maximize();
214 virtual void EraseAll();
215 virtual void DisplayAll();
216 virtual void Erase(PrsObject_ptr thePrsObj);
217 virtual void Display(PrsObject_ptr thePrsObj);
218 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
219 virtual void Update();
221 virtual CORBA::Boolean SavePicture(const char* theFileName);
224 virtual void FitAll();
225 virtual void SetView(VISU::View3D::ViewType theType);
227 static void SetPointOfView(QAD_StudyFrame* theStudyFrame, const CORBA::Double thePosition[3]);
228 virtual void SetPointOfView(const VISU::View3D::XYZ theCoord);
230 static void GetPointOfView(QAD_StudyFrame* theStudyFrame, CORBA::Double thePosition[3]);
231 virtual VISU::View3D::XYZ_slice* GetPointOfView();
233 static void SetViewUp(QAD_StudyFrame* theStudyFrame, const CORBA::Double theViewUp[3]);
234 virtual void SetViewUp(const VISU::View3D::XYZ theDir);
236 static void GetViewUp(QAD_StudyFrame* theStudyFrame, CORBA::Double theViewUp[3]);
237 virtual VISU::View3D::XYZ_slice* GetViewUp();
239 static void SetFocalPoint(QAD_StudyFrame* theStudyFrame, const CORBA::Double theFocalPnt[3]);
240 virtual void SetFocalPoint(const VISU::View3D::XYZ theCoord);
242 static void View3D_i::GetFocalPoint(QAD_StudyFrame* theStudyFrame, CORBA::Double theFocalPnt[3]);
243 virtual VISU::View3D::XYZ_slice* GetFocalPoint();
245 static void SetParallelScale(QAD_StudyFrame* theStudyFrame, CORBA::Double theScale);
246 virtual void SetParallelScale(CORBA::Double theScale);
248 static CORBA::Double GetParallelScale(QAD_StudyFrame* theStudyFrame);
249 virtual CORBA::Double GetParallelScale();
251 static void ScaleView(QAD_StudyFrame* theStudyFrame, VISU::View3D::Axis theAxis, CORBA::Double theParam);
252 virtual void ScaleView(VISU::View3D::Axis theAxis, CORBA::Double theParam);
253 virtual void RemoveScale();
255 static std::string ToString(QAD_StudyFrame* theStudyFrame);
256 static void ToStream(QAD_StudyFrame* theStudyFrame, std::ostringstream& theStr);
257 static bool SaveViewParams(QAD_StudyFrame* theStudyFrame, const char* theName);
258 virtual CORBA::Boolean SaveViewParams(const char* theName);
259 static QString GenerateViewParamsName();
261 static void Restore(QAD_StudyFrame* theStudyFrame, const Storable::TRestoringMap& theMap);
262 static bool RestoreViewParams(QAD_StudyFrame* theStudyFrame, const char* theName);
263 virtual CORBA::Boolean RestoreViewParams(const char* theName);
265 virtual void Close();
268 static int myNbViewParams;
271 virtual Storable* Create(int theNew);
272 virtual void ToStream(std::ostringstream& theStr);
273 virtual const char* GetComment() const;
274 static const std::string myComment;
275 QAD_StudyFrame* GetStudyFrame() const { return myStudyFrame;}
278 VTKViewer_ViewFrame* GetViewFrame(QAD_StudyFrame* theStudyFrame);
279 vtkRenderer* GetRenderer(QAD_StudyFrame* theStudyFrame);
280 vtkCamera* GetCamera(QAD_StudyFrame* theStudyFrame);
282 void RepaintView(VTKViewer_ViewFrame* theViewFrame);
283 void RepaintView(QAD_StudyFrame* theStudyFrame);
285 enum Displaing {eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll};
286 VISU_Actor* UpdateViewer(QAD_StudyFrame* theStudyFrame, int theDisplaing, Prs3d_i* thePrs = NULL);