]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkClipping3DDataViewer.h
functionalities of RC and MIP working in paralell
[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
21 #include "vtkVolumeRayCastMIPFunction.h"
22
23 class vtkClipping3DDataViewer {
24 public:
25         //----------------------
26         //Constructo-Destructor
27         //----------------------
28         vtkClipping3DDataViewer();
29         virtual ~vtkClipping3DDataViewer();
30
31 //      vtkImageActor*                  GetImageActor(int id);
32         vtkActor*                               GetOutlineActor();
33         vtkClipPolyData*                GetTissueClipper(int id);
34         vtkPolyDataMapper*              GetTissueMapper(int id);
35         vtkPlanes*                              GetTissuePlanes(int id);
36         vtkStripper*                    GetTissueStripper(int id);
37 //      vtkGlyph3D*                             GetGlyph(int id);
38         vtkLODActor*                    GetMaceActor(int id);
39
40         vtkMarchingCubes                *GetMCubes(int idTissue);
41
42         virtual void                    Refresh();
43                         void                    RefreshSurface();
44
45         virtual void                    Configure();
46         void                                    Configure_Tissue();
47         void                                    Configure_Volume();
48
49         void                                    SetIsovalue(int idTissue, int isoValue);
50         double                                  GetIsovalue(int idTissue);
51
52         vtkVolume                               *GetVolumeActor();
53         vtkVolumeRayCastMapper  *GetVolumeMapper();
54         vtkPlanes                               *GetVolumePlanes();
55
56         void                                    SetVtkMPRBaseData(vtkMPRBaseData *vtkmprbasedata);
57         vtkMPRBaseData*                 GetVtkMPRBaseData();
58
59         vtkActor                                *GetTissueActor(int id);
60         void                                    SetVisibleTissue(int idTissue, bool visible);
61         bool                                    GetVisibleTissue(int idTissue);
62         bool                                    GetVisibleVolume();
63         void                                    SetVisibleVolume(bool visibleVolume);
64
65         void                                    SetRepresentationType(int idTissue, bool representationType);
66         bool                                    GetRepresentationType(int idTissue);
67
68         boxSurfaceObserver              *GetObserverS(int idObserverS);
69         boxSurfaceObserver              *GetObserverV();
70
71         //void                                  ReadVolumeFunctions(char *namefile);
72         void                                    ReadVolumeFunctions();
73         void                                    ReadMeshVTK(char *namefile);
74
75
76         //-------------------
77         //Getters Vectors
78         //-------------------
79
80         std::vector<double>*                                    GetGreyValuesTransferenceFVector();
81         std::vector<double>*                                    GetIntensityValuesTransferenceFVector();
82         std::vector<double>*                                    GetRedColorsOfColorTransferenceFVector();
83         std::vector<double>*                                    GetGreenColorsOfColorTransferenceFVector();
84         std::vector<double>*                                    GetBlueColorsOfColorTransferenceFVector();
85         std::vector<double>*                                    GetGreyValueColorsOfColorTransferenceFVector();
86
87         void setColorTransferFunction(vtkColorTransferFunction* colortable);
88
89         //--------------------------------------
90         //Getters transference function
91         //and color of the transference function
92         //---------------------------------------
93         vtkPiecewiseFunction                            *GetTransferencefunction();
94         vtkColorTransferFunction                        *GetColorTransferenceFunction();
95
96     void                        SetRayCasting(bool active);
97         void                        SetMIPActive(bool active);
98     void                        SetInterpolation(bool active);
99     void                        SetShade(bool active);
100
101
102
103 private:
104
105         vtkMarchingCubes                                        *_mCubes[ VTKMPRDATA_MAXTISSUE ];
106         vtkStripper                                                     *_tissueStripper[ VTKMPRDATA_MAXTISSUE ];
107         vtkPolyDataMapper                                       *_tissueMapper[ VTKMPRDATA_MAXTISSUE ];
108         vtkPlanes                                                       *_tissuePlanes[ VTKMPRDATA_MAXTISSUE ];
109         vtkClipPolyData                                         *_tissueClipper[ VTKMPRDATA_MAXTISSUE ];
110
111         // outline
112         vtkOutlineFilter                                        *_outlineData;
113         vtkPolyDataMapper                                       *_mapOutline;
114         vtkActor                                                        *_outline;
115
116         /// Volume
117         vtkPiecewiseFunction                            *_tfun;
118         vtkColorTransferFunction                        *_ctfun;
119         vtkVolumeRayCastCompositeFunction       *_compositeFunction;
120         vtkPlanes                                                       *_volumePlanes;
121         vtkVolumeRayCastMapper                          *_volumeMapper;
122         vtkVolumeProperty                                       *_volumeProperty;
123         vtkVolume                                                       *_newvol;
124
125         vtkMPRBaseData                                          *_vtkmprbasedata;
126
127         bool                                                            _visibleVolume;
128         bool                                                            _representationType[VTKMPRDATA_MAXTISSUE];
129         bool                                                            _visibleTissue[VTKMPRDATA_MAXTISSUE];
130         vtkActor                                                        *_tissue[VTKMPRDATA_MAXTISSUE];
131         boxSurfaceObserver                                      *_observerV;
132         boxSurfaceObserver                                      *_observerS[VTKMPRDATA_MAXTISSUE];
133
134         std::vector<double>                                     greyValuesTransferenceFVector;
135         std::vector<double>                                     intensityValuesTransferenceFVector;
136         std::vector<double>                                     redColorsOfColorTransferenceFVector;
137         std::vector<double>                                     greenColorsOfColorTransferenceFVector;
138         std::vector<double>                                     blueColorsOfColorTransferenceFVector;
139         std::vector<double>                                     greyValueColorsOfColorTransferenceFVector;
140
141         bool _isRayCasting;
142     bool _isMIP;
143         bool _interpolation;
144         bool _shade;
145 };
146
147 #endif /*VTKCLIPPING3DDATAVIEWER_H_*/