]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewBaseContour.h
799f424729f8053d3b86ece892ab36914f1d9ca3
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualContour / manualViewBaseContour.h
1 #ifndef manualViewBaseContour_h
2 #define manualViewBaseContour_h
3
4 #include "vtkRenderWindow.h"
5
6 #include "vtkRenderer.h"
7 #include "vtkRenderWindowInteractor.h" //extremely important with VC++ don't remove !
8 #include "vtkCommand.h"
9 #include "vtkPolyData.h"
10 #include "vtkCellArray.h"
11 #include "vtkPolyDataMapper.h"
12 #include "vtkInteractorObserver.h"
13 #include "vtkInteractorStyleImage.h"
14 #include <vtkKochanekSpline.h>
15
16 #include <vtkActor.h>
17 #include <vtkProperty.h>
18 #include <vtkCellArray.h>
19 #include <vtkRenderer.h>
20 #include <vtkCoordinate.h>
21 #include <vtkTextProperty.h>
22 #include <vtkTextActor.h>
23 #include <vtkProperty2D.h>
24 #include <vtkPointPicker.h>
25 //#include "widgets/UtilVtk3DGeometriSelection.h"
26 #include "UtilVtk3DGeometriSelection.h"
27 #include <vtkCellPicker.h> 
28
29
30 #include <vtkCamera.h> 
31 #include <vtkPolyLine.h>
32 #include <vtkDataSetMapper.h>
33 #include <vtkUnstructuredGrid.h>
34
35 #include "wxVTKRenderWindowInteractor.h"
36
37
38 //--
39
40 #include <vector>
41 #include "wxVtkBaseView.h"
42 #include "marTypes.h"
43
44 #include "manualViewPoint.h"
45 #include "manualContourModel.h"
46
47 // ----------------------------------------------------------------------------
48 // ----------------------------------------------------------------------------
49 // ----------------------------------------------------------------------------
50
51
52 class creaMaracasVisu_EXPORT manualViewBaseContour{
53 public:
54         manualViewBaseContour();
55         virtual ~manualViewBaseContour();
56
57         virtual int GetType();
58         virtual void Save(FILE *pFile);
59         virtual void Open(FILE *pFile);
60
61         void    AddPoint();
62         void    AddPoint( manualViewPoint * manualViewPoint );
63         void    InsertPoint(int id);
64         void    DeleteContour();
65         void    DeletePoint(int x, int y,int z);
66         virtual void    DeletePoint(int id);
67
68         virtual void    UpdateViewPoint(int id);
69         virtual void    UpdateViewPoints();
70
71         void    SetSelected(bool selected);
72         void    SetPosibleSelected(bool posibleSelected);
73         bool    GetSelected();
74         bool    GetPosibleSelected();
75         void    DeleteSelectedPoints();
76         bool    GetEditable();
77         void    SetEditable( bool * condition );
78
79
80
81         virtual int             GetIdPoint(int x, int y, int z);
82
83         void    SelectPoint(int i,bool select);
84         void    SelectLstPoints();
85         void    SelectAllPoints(bool select);
86         virtual int             SelectPosiblePoint(int x, int y ,int z);
87         bool    SelectPosibleContour(int x, int y ,int z);
88         void    SelectAllPossibleSelected(bool select);
89         void    SetPointSelected(int id,bool select);
90         void    SetPointPosibleSelected(int id,bool select);
91         void    SetIfViewControlPoints(bool ifShow);
92         bool    GetIfViewControlPoints();
93         
94         void    UnSelectPoint(int i);
95         void    UnSelectLstPoints();
96         void    UnSelectAllPoints();
97
98         void    SetModel(manualContourModel *manContModel);
99         void    SetWxVtkBaseView(wxVtkBaseView *wxvtkbaseview);
100
101         virtual void    Refresh();
102         int             GetNumberOfPoints();                                            // ??? 
103         //int           GetNumberOfPointsSpline();                              //JSTG 25-02-08 In ContourModel is the same method 
104         //void  SetNumberOfPointsSpline(int size);                      //JSTG 25-02-08 In ContourModel is the same method 
105
106         void    CreateNewContour();
107         double* GetVectorPointsXManualContour();
108         double* GetVectorPointsYManualContour();
109         double* GetVectorPointsZManualContour();
110
111         virtual bool    ifTouchContour(int x,int y, int z);
112         void    UpdateColorActor();
113
114         void    SetRange(int range);
115         int             GetRange();
116         void    SetZ(int z);
117         int             GetZ();
118
119         wxVtkBaseView *GetWxVtkBaseView();
120
121         virtual void InitMove(int x, int y, int z);
122         virtual void MoveContour(int x, int y, int z);
123         virtual void MoveContour(int horizontalUnits, int verticalUnits );
124         virtual void GetMinMax( double &minX,double &minY, double &minZ, double &maxX, double &maxY, double &maxZ );
125         virtual void TransfromCoordViewWorld(double &X, double &Y, double &Z, int type=2);
126
127         void    ClearContour();
128         virtual void    ClearPoint(int id);
129
130         void    SetVisible(bool ok);
131         void    SetShowText(bool ok);
132
133         void    GetSpacing(double spc[3]);
134         void    SetSpacing(double spc[3]);
135
136         void    SetColorNormalContour(double r, double g, double b);
137         void    GetColorNormalContour(double &r, double &g, double &b);
138         void    SetColorEditContour(double r, double g, double b);
139         void    GetColorEditContour(double &r, double &g, double &b);
140         void    SetColorSelectContour(double r, double g, double b);
141         void    GetColorSelectContour(double &r, double &g, double &b);
142         
143         //Addinging and removing from visualization specific actors included in the viewer contour
144         void    AddCompleteContourActor( bool ifControlPoints = false);
145         void    RemoveCompleteContourActor();
146         virtual void    AddSplineActor();
147         virtual void    RemoveSplineActor();
148         void    AddControlPoints();
149         void    RemoveControlPoints();  
150         void    AddTextActor();
151         void    RemoveTextActor();
152
153         virtual manualViewBaseContour * Clone();
154                         void                                    CopyAttributesTo( manualViewBaseContour *cloneObject );
155         virtual void                                    RefreshContour();
156                         void                                    SetWidthLine(double width);
157                         double                                  GetWidthLine();
158
159         virtual void                    ConstructVTKObjects();
160
161 private:
162         int                                                             _range;
163
164         wxVtkBaseView                                   *_wxvtkbaseview;
165         bool                                                    _selected;
166         bool                                                    *_editable;
167         bool                                                    _posibleSelected;
168         bool                                                    _viewControlPoints;
169
170
171         vtkPolyData                                             *_pd;
172         vtkActor                                                *_contourVtkActor;
173         vtkPolyDataMapper                               *_bboxMapper;
174
175         double                                                  _coulorEdit_r;
176         double                                                  _coulorEdit_g;
177         double                                                  _coulorEdit_b;
178         double                                                  _coulorNormal_r;
179         double                                                  _coulorNormal_g;
180         double                                                  _coulorNormal_b;
181         double                                                  _coulorSelection_r;
182         double                                                  _coulorSelection_g;
183         double                                                  _coulorSelection_b;
184         double                                                  _widthline;
185
186         void                    DeleteVtkObjects();
187         virtual void    RefreshText();
188
189
190 protected:
191
192         // text
193         bool                                                    _show_text;
194         int                                                             _id_viewPoint_for_text;
195         vtkTextActor                                    *_textActor;
196         manualContourModel                              *_manContModel;
197         vtkPoints                                               *_pts;
198 // JSTG 25-02-08 --------------------------------------------
199         int                                                             _sizePointsContour;
200 //-----------------------------------------------------------
201         std::vector<manualViewPoint*>   _lstViewPoints;
202         double                                                  _spc[3];
203
204 };
205
206
207 #endif // manualViewBaseContour_h