Salome HOME
NRI : First integration.
[modules/visu.git] / src / VISU_I / VISU_ViewManager_i.hh
1 // File:        VISU_ViewManager_i.hxx
2 // Created:     Wed Jan 22 17:52:40 2003
3 // Author:      Alexey PETROV
4 //              <apo@ivanox.nnov.matra-dtv.fr>
5
6
7 #ifndef VISU_ViewManager_i_HeaderFile
8 #define VISU_ViewManager_i_HeaderFile
9
10 #include "VISUConfig.hh"
11 class QAD_Study;
12 class QAD_StudyFrame;
13 class VTKViewer_ViewFrame;
14 class Plot2d_ViewFrame;
15 class SALOMEGUI_TableDlg;
16 class VISU_Actor;
17 class vtkRenderer;
18 class vtkCamera;
19
20 namespace VISU{
21   class Prs3d_i;
22   class ViewManager_i : public virtual POA_VISU::ViewManager,
23                         public virtual Base_i
24   {
25   public:
26     ViewManager_i(SALOMEDS::Study_ptr theStudy);
27     virtual ~ViewManager_i() {};
28     virtual VISU::VISUType GetType() { return VISU::TVIEWMANAGER;};
29
30     virtual View3D_ptr Create3DView();
31     virtual View_ptr   GetCurrentView();
32     virtual TableView_ptr CreateTableView(VISU::Table_ptr theTable);
33     virtual XYPlot_ptr CreateXYPlot();
34     virtual void Destroy(View_ptr theView);
35
36   protected:
37     SALOMEDS::Study_var myStudyDocument;
38   };
39
40   //===========================================================================
41   class View_i : public virtual POA_VISU::View,
42                  public virtual Storable
43   {
44   protected:
45     QAD_Study* myStudy;
46     string myName;
47   public:
48     View_i(SALOMEDS::Study_ptr theStudy);
49     virtual ~View_i();
50     virtual void SetBackground(const SALOMEDS::Color& theColor);
51     virtual SALOMEDS::Color GetBackground();
52     virtual void Minimize();
53     virtual void Restore();
54     virtual void Maximize();
55     virtual void EraseAll();
56     virtual void DisplayAll();
57     virtual void Erase(PrsObject_ptr thePrsObj);
58     virtual void Display(PrsObject_ptr thePrsObj);
59     virtual void DisplayOnly(PrsObject_ptr thePrsObj);
60     virtual void Update();
61
62     virtual CORBA::Boolean SavePicture(const char* theFileName);
63
64     virtual void Close() = 0;
65     virtual void ToStream(ostrstream& theStr);
66     virtual const char* GetComment() const;
67   public:
68     virtual const char* View_i::GetEntry();
69   };
70
71   //===========================================================================
72   class XYPlot_i : public virtual POA_VISU::XYPlot,
73                    public virtual View_i
74   {
75   public:
76     XYPlot_i(SALOMEDS::Study_ptr theStudy);
77     virtual ~XYPlot_i();
78     virtual VISU::VISUType GetType() { return VISU::TXYPLOT;};
79
80     virtual void SetTitle(const char* theTitle);
81     virtual char* GetTitle();
82
83     virtual void SetSubTitle(const char* theTitle);
84     virtual char* GetSubTitle();
85
86     virtual void SetCurveType(VISU::XYPlot::CurveType theType);
87     virtual VISU::XYPlot::CurveType GetCurveType();
88
89     virtual void SetMarkerSize(CORBA::Long theSize);
90     virtual CORBA::Long GetMarkerSize();
91
92     virtual void EnableXGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor, 
93                              CORBA::Boolean theMinor, CORBA::Long theNumMinor);
94     virtual void EnableYGrid(CORBA::Boolean theMajor, CORBA::Long theNumMajor, 
95                              CORBA::Boolean theMinor, CORBA::Long theNumMinor);
96
97     virtual void SetHorScaling(VISU::Scaling theScaling);
98     virtual VISU::Scaling GetHorScaling();
99     virtual void SetVerScaling(VISU::Scaling theScaling);
100     virtual VISU::Scaling GetVerScaling();
101
102     virtual void SetXTitle(const char* theTitle);
103     virtual char* GetXTitle();
104
105     virtual void SetYTitle(const char* theTitle);
106     virtual char* GetYTitle();
107
108     virtual void ShowLegend(CORBA::Boolean theShowing);
109
110     virtual void SetBackground(const SALOMEDS::Color& theColor);
111     virtual SALOMEDS::Color GetBackground();
112     virtual void Minimize();
113     virtual void Restore();
114     virtual void Maximize();
115     virtual void EraseAll();
116     virtual void Erase(PrsObject_ptr thePrsObj);
117     virtual void Display(PrsObject_ptr thePrsObj);
118     virtual void DisplayOnly(PrsObject_ptr thePrsObj);
119     virtual void Update();
120
121     virtual CORBA::Boolean SavePicture(const char* theFileName);
122
123     virtual void FitAll();
124
125     virtual void Close();
126   protected:
127     QAD_StudyFrame*   myStudyFrame;
128     Plot2d_ViewFrame* myView;
129   public:
130     virtual Storable* Create(int theNew);
131   };
132
133   //===========================================================================
134   class TableView_i : public virtual POA_VISU::TableView,
135                       public virtual View_i
136   {
137   public:
138     TableView_i(SALOMEDS::Study_ptr theStudy);
139     virtual ~TableView_i();
140     virtual VISU::VISUType GetType() { return VISU::TTABLEVIEW;};
141
142     virtual void SetTitle(const char* theTitle);
143     virtual char* GetTitle();
144
145     virtual void Close();
146   protected:
147     SALOMEGUI_TableDlg* myView;
148   public:
149     virtual Storable* Create(VISU::Table_var theTable);
150   };
151
152   //===========================================================================
153   class View3D_i : public virtual POA_VISU::View3D,
154                    public virtual View_i
155   {
156   public:
157     View3D_i(SALOMEDS::Study_ptr theStudy);
158     virtual ~View3D_i();
159     virtual VISU::VISUType GetType() { return VISU::TVIEW3D;};
160
161     //View interface
162     virtual void SetTitle(const char* theTitle);
163     virtual char* GetTitle();
164     virtual void SetBackground(const SALOMEDS::Color& theColor);
165     virtual SALOMEDS::Color GetBackground();
166     virtual void Minimize();
167     virtual void Restore();
168     virtual void Maximize();
169     virtual void EraseAll();
170     virtual void DisplayAll();
171     virtual void Erase(PrsObject_ptr thePrsObj);
172     virtual void Display(PrsObject_ptr thePrsObj);
173     virtual void DisplayOnly(PrsObject_ptr thePrsObj);
174     virtual void Update();
175
176     virtual CORBA::Boolean SavePicture(const char* theFileName);
177     
178     //View3D interface
179     virtual void FitAll();
180     virtual void SetView(VISU::View3D::ViewType theType);
181
182     virtual void SetPointOfView(const VISU::View3D::XYZ theCoord);
183     virtual VISU::View3D::XYZ_slice* GetPointOfView();
184
185     virtual void SetViewUp(const VISU::View3D::XYZ theDir);
186     virtual VISU::View3D::XYZ_slice* GetViewUp();
187
188     virtual void SetFocalPoint(const VISU::View3D::XYZ theCoord);
189     virtual VISU::View3D::XYZ_slice* GetFocalPoint();
190
191     virtual void SetParallelScale(CORBA::Double theScale);
192     virtual CORBA::Double GetParallelScale();
193
194     virtual void ScaleView(VISU::View3D::Axis theAxis, CORBA::Double theParam);
195     virtual void RemoveScale();
196
197     virtual const char*    GenerateViewParamsName();
198     virtual CORBA::Boolean SaveViewParams(const char* theName);
199     virtual CORBA::Boolean RestoreViewParams(const char* theName);
200
201     virtual void Close();
202   protected:
203     QAD_StudyFrame* myStudyFrame;
204     SALOMEDS::Color myColor;
205     CORBA::Double myPosition[3], myFocalPnt[3], myViewUp[3], myParallelScale, myScaleFactor[3];
206
207     Storable* Build(int theRestoring);
208     static int myNbViewParams;
209
210   public:
211     virtual Storable* Create(int theNew);
212     virtual Storable* Restore(const Storable::TRestoringMap& theMap) throw(std::logic_error&);
213     virtual void ToStream(ostrstream& theStr);
214     virtual const char* GetComment() const;
215     static const string myComment;
216   };
217   Storable* View3DRestore(SALOMEDS::SComponent_var& theSComponent, SALOMEDS::Study_var& theStudy,
218                           const char* thePrefix, const Storable::TRestoringMap& theMap);
219
220   VTKViewer_ViewFrame* GetViewFrame(QAD_StudyFrame* theStudyFrame);
221   vtkRenderer* GetRenderer(QAD_StudyFrame* theStudyFrame);
222   vtkCamera* GetCamera(QAD_StudyFrame* theStudyFrame);
223   void RepaintView(QAD_StudyFrame* theStudyFrame);
224
225   enum Displaing {eDisplayAll, eDisplay, eDisplayOnly, eErase, eEraseAll};
226   VISU_Actor* UpdateViewer(QAD_StudyFrame* theStudyFrame, int theDisplaing, Prs3d_i* thePrs = NULL);
227 }
228
229 #endif