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