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
71 View_i(SALOMEDS::Study_ptr theStudy);
73 virtual void SetBackground(const SALOMEDS::Color& theColor);
74 virtual SALOMEDS::Color GetBackground();
75 virtual void Minimize();
76 virtual void Restore();
77 virtual void Maximize();
78 virtual void EraseAll();
79 virtual void DisplayAll();
80 virtual void Erase(PrsObject_ptr thePrsObj);
81 virtual void Display(PrsObject_ptr thePrsObj);
82 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
83 virtual void Update();
85 virtual CORBA::Boolean SavePicture(const char* theFileName);
87 virtual void Close() = 0;
88 virtual void ToStream(std::ostringstream& theStr);
89 virtual const char* GetComment() const;
91 virtual std::string View_i::GetEntry();
94 //===========================================================================
95 class XYPlot_i : public virtual POA_VISU::XYPlot,
99 typedef VISU::XYPlot TInterface;
100 XYPlot_i(SALOMEDS::Study_ptr theStudy);
102 virtual VISU::VISUType GetType() { return VISU::TXYPLOT;};
104 virtual void SetTitle(const char* theTitle);
105 virtual char* GetTitle();
107 virtual void SetSubTitle(const char* theTitle);
108 virtual char* GetSubTitle();
110 virtual void SetCurveType(VISU::XYPlot::CurveType theType);
111 virtual VISU::XYPlot::CurveType GetCurveType();
113 virtual void SetMarkerSize(CORBA::Long theSize);
114 virtual CORBA::Long GetMarkerSize();
116 virtual void EnableXGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor,
117 CORBA::Boolean theMinor, CORBA::Long theNumMinor);
118 virtual void EnableYGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor,
119 CORBA::Boolean theMinor, CORBA::Long theNumMinor);
121 virtual void SetHorScaling(VISU::Scaling theScaling);
122 virtual VISU::Scaling GetHorScaling();
123 virtual void SetVerScaling(VISU::Scaling theScaling);
124 virtual VISU::Scaling GetVerScaling();
126 virtual void SetXTitle(const char* theTitle);
127 virtual char* GetXTitle();
129 virtual void SetYTitle(const char* theTitle);
130 virtual char* GetYTitle();
132 virtual void ShowLegend(CORBA::Boolean theShowing);
134 virtual void SetBackground(const SALOMEDS::Color& theColor);
135 virtual SALOMEDS::Color GetBackground();
136 virtual void Minimize();
137 virtual void Restore();
138 virtual void Maximize();
139 virtual void EraseAll();
140 virtual void Erase(PrsObject_ptr thePrsObj);
141 virtual void Display(PrsObject_ptr thePrsObj);
142 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
143 virtual void Update();
145 virtual CORBA::Boolean SavePicture(const char* theFileName);
147 virtual void FitAll();
149 virtual void Close();
151 QAD_StudyFrame* myStudyFrame;
152 Plot2d_ViewFrame* myView;
154 virtual Storable* Create(int theNew);
157 //===========================================================================
158 class TableView_i : public virtual POA_VISU::TableView,
159 public virtual View_i
162 typedef VISU::TableView TInterface;
163 TableView_i(SALOMEDS::Study_ptr theStudy);
164 virtual ~TableView_i();
165 virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW;};
167 virtual void SetTitle(const char* theTitle);
168 virtual char* GetTitle();
170 virtual void Close();
172 SALOMEGUI_TableDlg* myView;
174 virtual Storable* Create(VISU::Table_ptr theTable);
177 //===========================================================================
178 class View3D_i : public virtual POA_VISU::View3D,
179 public virtual View_i
182 typedef VISU::View3D TInterface;
183 View3D_i(SALOMEDS::Study_ptr theStudy);
185 virtual VISU::VISUType GetType() { return VISU::TVIEW3D;};
188 virtual void SetTitle(const char* theTitle);
189 virtual char* GetTitle();
191 static void SetBackground(QAD_StudyFrame* theStudyFrame, const SALOMEDS::Color& theColor);
192 virtual void SetBackground(const SALOMEDS::Color& theColor);
194 static SALOMEDS::Color GetBackground(QAD_StudyFrame* theStudyFrame);
195 virtual SALOMEDS::Color GetBackground();
197 virtual void Minimize();
198 virtual void Restore();
199 virtual void Maximize();
200 virtual void EraseAll();
201 virtual void DisplayAll();
202 virtual void Erase(PrsObject_ptr thePrsObj);
203 virtual void Display(PrsObject_ptr thePrsObj);
204 virtual void DisplayOnly(PrsObject_ptr thePrsObj);
205 virtual void Update();
207 virtual CORBA::Boolean SavePicture(const char* theFileName);
210 virtual void FitAll();
211 virtual void SetView(VISU::View3D::ViewType theType);
213 static void SetPointOfView(QAD_StudyFrame* theStudyFrame, const CORBA::Double thePosition[3]);
214 virtual void SetPointOfView(const VISU::View3D::XYZ theCoord);
216 static void GetPointOfView(QAD_StudyFrame* theStudyFrame, CORBA::Double thePosition[3]);
217 virtual VISU::View3D::XYZ_slice* GetPointOfView();
219 static void SetViewUp(QAD_StudyFrame* theStudyFrame, const CORBA::Double theViewUp[3]);
220 virtual void SetViewUp(const VISU::View3D::XYZ theDir);
222 static void GetViewUp(QAD_StudyFrame* theStudyFrame, CORBA::Double theViewUp[3]);
223 virtual VISU::View3D::XYZ_slice* GetViewUp();
225 static void SetFocalPoint(QAD_StudyFrame* theStudyFrame, const CORBA::Double theFocalPnt[3]);
226 virtual void SetFocalPoint(const VISU::View3D::XYZ theCoord);
228 static void View3D_i::GetFocalPoint(QAD_StudyFrame* theStudyFrame, CORBA::Double theFocalPnt[3]);
229 virtual VISU::View3D::XYZ_slice* GetFocalPoint();
231 static void SetParallelScale(QAD_StudyFrame* theStudyFrame, CORBA::Double theScale);
232 virtual void SetParallelScale(CORBA::Double theScale);
234 static CORBA::Double GetParallelScale(QAD_StudyFrame* theStudyFrame);
235 virtual CORBA::Double GetParallelScale();
237 static void ScaleView(QAD_StudyFrame* theStudyFrame, VISU::View3D::Axis theAxis, CORBA::Double theParam);
238 virtual void ScaleView(VISU::View3D::Axis theAxis, CORBA::Double theParam);
239 virtual void RemoveScale();
241 static std::string ToString(QAD_StudyFrame* theStudyFrame);
242 static void ToStream(QAD_StudyFrame* theStudyFrame, std::ostringstream& theStr);
243 static bool SaveViewParams(QAD_StudyFrame* theStudyFrame, const char* theName);
244 virtual CORBA::Boolean SaveViewParams(const char* theName);
245 static QString GenerateViewParamsName();
247 static void Restore(QAD_StudyFrame* theStudyFrame, const Storable::TRestoringMap& theMap);
248 static bool RestoreViewParams(QAD_StudyFrame* theStudyFrame, const char* theName);
249 virtual CORBA::Boolean RestoreViewParams(const char* theName);
251 virtual void Close();
254 QAD_StudyFrame* myStudyFrame;
255 static int myNbViewParams;
258 virtual Storable* Create(int theNew);
259 virtual void ToStream(std::ostringstream& theStr);
260 virtual const char* GetComment() const;
261 static const string myComment;
262 QAD_StudyFrame* GetStudyFrame() const { return myStudyFrame;}
265 VTKViewer_ViewFrame* GetViewFrame(QAD_StudyFrame* theStudyFrame);
266 vtkRenderer* GetRenderer(QAD_StudyFrame* theStudyFrame);
267 vtkCamera* GetCamera(QAD_StudyFrame* theStudyFrame);
268 void RepaintView(QAD_StudyFrame* theStudyFrame);
270 enum Displaing {eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll};
271 VISU_Actor* UpdateViewer(QAD_StudyFrame* theStudyFrame, int theDisplaing, Prs3d_i* thePrs = NULL);