]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClipping3DDataViewer.h
re indent
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / vtkClipping3DDataViewer.h
1 #ifndef VTKCLIPPING3DDATAVIEWER_H_
2 #define VTKCLIPPING3DDATAVIEWER_H_
3
4 #include "wxMPRBaseData.h"
5
6 #include "vtkClipPolyData.h"
7 #include "vtkStripper.h"
8 #include "vtkLODActor.h"
9 #include "vtkMarchingCubes.h"
10 #include "vtkVolumeRayCastMapper.h"
11 #include "boxSurfaceObserver.h"
12 #include "vtkVolumeRayCastCompositeFunction.h"
13 #include <vtkPiecewiseFunction.h>
14 #include "vtkVolumeProperty.h"
15 #include "vtkPolyDataMapper.h"
16 #include "vtkColorTransferFunction.h"
17 #include "vtkVolume.h"
18 #include "vtkActor.h"
19 #include "vtkOutlineFilter.h"
20 #include "vtkRenderWindowInteractor.h"
21
22 #include "vtkVolumeRayCastMIPFunction.h"
23
24 #include "volumerendererdata.h"
25
26 class vtkClipping3DDataViewer {
27 public:
28         //----------------------
29         //Constructo-Destructor
30         //----------------------
31         vtkClipping3DDataViewer();
32         virtual ~vtkClipping3DDataViewer();
33
34 //      vtkImageActor*                  GetImageActor(int id);
35         vtkActor*                               GetOutlineActor();
36         vtkClipPolyData*                GetTissueClipper(int id);
37         vtkPolyDataMapper*              GetTissueMapper(int id);
38         vtkPlanes*                              GetTissuePlanes(int id);
39         vtkStripper*                    GetTissueStripper(int id);
40 //      vtkGlyph3D*                             GetGlyph(int id);
41         vtkLODActor*                    GetMaceActor(int id);
42
43         vtkMarchingCubes                *GetMCubes(int idTissue);
44
45         virtual void                    Refresh();
46                         void                    RefreshSurface();
47
48         virtual void                    Configure();
49         void                                    Configure_Tissue();
50         void                                    Configure_Volume();
51
52         void                                    SetIsovalue(int idTissue, int isoValue);
53         double                                  GetIsovalue(int idTissue);
54
55         vtkVolume                               *GetVolumeActor();
56         vtkVolumeRayCastMapper  *GetVolumeMapper();
57         vtkPlanes                               *GetVolumePlanes();
58
59         void                                    SetVtkMPRBaseData(vtkMPRBaseData *vtkmprbasedata);
60         vtkMPRBaseData*                 GetVtkMPRBaseData();
61
62         vtkActor                                *GetTissueActor(int id);
63         void                                    SetVisibleTissue(int idTissue, bool visible);
64         bool                                    GetVisibleTissue(int idTissue);
65         bool                                    GetVisibleVolume();
66         void                                    SetVisibleVolume(bool visibleVolume);
67
68     bool                                        GetVisibleVolumeBox();
69         void                                    SetVisibleVolumeBox(bool visibleBox);
70
71         void                                    SetRepresentationType(int idTissue, bool representationType);
72         bool                                    GetRepresentationType(int idTissue);
73
74         boxSurfaceObserver              *GetObserverS(int idObserverS);
75         boxSurfaceObserver              *GetObserverV();
76
77         //void                                  ReadVolumeFunctions(char *namefile);
78         void                                    ReadVolumeFunctions();
79         void                                    ReadMeshVTK(char *namefile);
80
81
82     void                    Configure_VolumeBox();
83     void                    SetInteractor(vtkRenderWindowInteractor* interactor);
84     void                    SetRenderer(vtkRenderer* renderer);
85
86         //-------------------
87         //Getters Vectors
88         //-------------------
89
90         std::vector<double>*                                    GetGreyValuesTransferenceFVector();
91         std::vector<double>*                                    GetIntensityValuesTransferenceFVector();
92         std::vector<double>*                                    GetRedColorsOfColorTransferenceFVector();
93         std::vector<double>*                                    GetGreenColorsOfColorTransferenceFVector();
94         std::vector<double>*                                    GetBlueColorsOfColorTransferenceFVector();
95         std::vector<double>*                                    GetGreyValueColorsOfColorTransferenceFVector();
96
97         void setColorTransferFunction(vtkColorTransferFunction* colortable);
98
99         //--------------------------------------
100         //Getters transference function
101         //and color of the transference function
102         //---------------------------------------
103         vtkPiecewiseFunction                            *GetTransferencefunction();
104         vtkColorTransferFunction                        *GetColorTransferenceFunction();
105
106     void                        SetRayCasting(bool active);
107         void                        SetMIPActive(bool active);
108     void                        SetInterpolation(bool active);
109     void                        SetShade(bool active);
110     void                        updateVolume();
111
112
113     void                        BoxActorChanged(bool changed);
114     void                        UpdateVolumeBox(vector<double> gf, vector<double> vf, vtkColorTransferFunction* ctfun);
115
116
117
118 private:
119
120         vtkMarchingCubes                                        *_mCubes[ VTKMPRDATA_MAXTISSUE ];
121         vtkStripper                                                     *_tissueStripper[ VTKMPRDATA_MAXTISSUE ];
122         vtkPolyDataMapper                                       *_tissueMapper[ VTKMPRDATA_MAXTISSUE ];
123         vtkPlanes                                                       *_tissuePlanes[ VTKMPRDATA_MAXTISSUE ];
124         vtkClipPolyData                                         *_tissueClipper[ VTKMPRDATA_MAXTISSUE ];
125
126         // outline
127         vtkOutlineFilter                                        *_outlineData;
128         vtkPolyDataMapper                                       *_mapOutline;
129         vtkActor                                                        *_outline;
130
131         /// Volume
132         vtkPiecewiseFunction                            *_tfun;
133         vtkColorTransferFunction                        *_ctfun;
134 //      vtkVolumeRayCastCompositeFunction       *_compositeFunction;
135         vtkPlanes                                                       *_volumePlanes;
136         vtkVolumeRayCastMapper                          *_volumeMapper;
137         vtkVolumeProperty                                       *_volumeProperty;
138         vtkVolume                                                       *_newvol;
139
140         vtkMPRBaseData                                          *_vtkmprbasedata;
141
142         bool                                                            _visibleVolume;
143
144     bool                                                                _visibleVolumeBox;
145
146         bool                                                            _representationType[VTKMPRDATA_MAXTISSUE];
147         bool                                                            _visibleTissue[VTKMPRDATA_MAXTISSUE];
148         vtkActor                                                        *_tissue[VTKMPRDATA_MAXTISSUE];
149         boxSurfaceObserver                                      *_observerV;
150         boxSurfaceObserver                                      *_observerS[VTKMPRDATA_MAXTISSUE];
151
152         std::vector<double>                                     greyValuesTransferenceFVector;
153         std::vector<double>                                     intensityValuesTransferenceFVector;
154         std::vector<double>                                     redColorsOfColorTransferenceFVector;
155         std::vector<double>                                     greenColorsOfColorTransferenceFVector;
156         std::vector<double>                                     blueColorsOfColorTransferenceFVector;
157         std::vector<double>                                     greyValueColorsOfColorTransferenceFVector;
158
159         vtkVolumeRayCastCompositeFunction   *_compositeFunction;
160         vtkVolumeRayCastMIPFunction         *_compositeFunctionMIP ;
161
162         bool _isRayCasting;
163     bool _isMIP;
164         bool _interpolation;
165         bool _shade;
166
167         VolumeRendererData* _volumerendererdata;
168 };
169
170 #endif /*VTKCLIPPING3DDATAVIEWER_H_*/