]> Creatis software - creaMaracasVisu.git/blob - lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx
6361cad2af9c8a06eb6c7d61eeb0fecb1dd99866
[creaMaracasVisu.git] / lib / GUI / Base / VolumeRenderer / volumerendererdata.cxx
1 #include "volumerendererdata.h"
2 #include "vtkObjectFactory.h"
3
4 vtkCxxRevisionMacro(VolumeRendererData, "$Revision: 1.10 $");
5 vtkStandardNewMacro(VolumeRendererData);
6
7 VolumeRendererData::VolumeRendererData()
8 {
9     VolRendManager      = NULL;
10     ImageData           = NULL;
11     Renderer            = NULL;
12     Interactor          = NULL;
13     LookUpTable         = NULL;
14     //ImageDataSeparateComponents = false;
15 }
16
17
18 void VolumeRendererData::ShowVolume(bool checked){
19     try{
20         if(checked){
21                 invariant();
22                 if(!VolRendManager){
23                     VolRendManager = new VolumeRendererManager();
24                     VolRendManager->addVolume(ImageData, Interactor);
25                 }
26                 if(LookUpTable)
27                                 {
28                     VolRendManager->SetLookupTable(LookUpTable);
29                                 }
30                 vector< vtkProp3D* > props = VolRendManager->getProps3D();
31                 for(unsigned i = 0; i < props.size(); i++){
32                     Renderer->AddActor(props[i]);
33                 }
34
35         }else{
36             vector< vtkProp3D* > props = VolRendManager->getProps3D();
37             for(unsigned i = 0; i < props.size(); i++){
38                 Renderer->RemoveActor(props[i]);
39             }
40             delete VolRendManager;
41             VolRendManager = 0;
42         }
43     }catch(char* e){
44         cout<<"Exception in: "<<e<<endl;
45     }catch(exception e){
46         cout<<"Exception in: "<<e.what()<<endl;
47     }
48
49 }
50
51 void VolumeRendererData::invariant()
52 {
53     if(!ImageData)
54         {
55         throw "Image data not set";
56     }
57     if(!Renderer)
58         {
59         throw "renderer not initialized";
60     }
61 }
62
63 void VolumeRendererData::OpacityChanged(vector<double> greyvalues, vector<double> values)
64 {
65     //invariant();
66     if(VolRendManager!=NULL)
67         {
68         ShowVolume(true);
69                 VolRendManager->setVolumeOpacity(greyvalues,values);
70         }       
71 }
72
73
74 void  VolumeRendererData::BoundingBoxChanged(bool checked){
75    // invariant();
76
77     if(VolRendManager==NULL)
78     {
79          ShowVolume(true);
80     }
81
82
83     if(VolRendManager && Interactor){
84         if(checked){
85             VolRendManager->EnableBoundingBox(Interactor);
86         }else{
87             VolRendManager->DisableBoundingBox();
88         }
89     }
90         
91 }
92
93
94 void VolumeRendererData::changeCompositeMIPFunction(int function){
95     invariant();
96     if(VolRendManager)
97         {
98         VolRendManager->changeCompositeMIPFunction(0, function);
99         }
100 }
101
102 /**
103   changes the interoplation type of the volume
104   type = 0 linear
105   type = 1 nearest
106    */
107 void VolumeRendererData::changeInterpolationType(int type){
108     invariant();
109     if(VolRendManager)
110         {
111         VolRendManager->changeInterpolationType(type);
112         }       
113 }