]> Creatis software - creaMaracasVisu.git/blob - lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx
no message
[creaMaracasVisu.git] / lib / GUI / Base / VolumeRenderer / volumerendererdata.cxx
1 #include "volumerendererdata.h"
2 #include "vtkObjectFactory.h"
3
4 vtkCxxRevisionMacro(VolumeRendererData, "$Revision: 1.8 $");
5 vtkStandardNewMacro(VolumeRendererData);
6
7 VolumeRendererData::VolumeRendererData()
8 {
9     VolRendManager = 0;
10     ImageData = 0;
11     Renderer = 0;
12     Interactor = 0;
13     LookUpTable = 0;
14     //ImageDataSeparateComponents = false;
15 }
16
17
18 void VolumeRendererData::ShowVolume(bool checked){
19
20     try{
21         if(checked){
22                 invariant();
23                 cout<<"JPRG::VolumeRendererData::ShowVolume"<<endl;
24                 if(!VolRendManager){
25                     VolRendManager = new VolumeRendererManager();
26                     VolRendManager->addVolume(ImageData, Interactor);
27                 }
28                 if(LookUpTable)
29                     VolRendManager->SetLookupTable(LookUpTable);
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     if(!ImageData){
53         throw "Image data not set";
54     }
55     if(!Renderer){
56         throw "renderer not initialized";
57     }
58 }
59
60 void VolumeRendererData::OpacityChanged(vector<double> greyvalues, vector<double> values){
61     //invariant();
62
63
64         printf("EED VolumeRendererData::OpacityChanged 1\n");
65     if(VolRendManager==NULL)
66     {
67                 printf("EED VolumeRendererData::OpacityChanged 2\n");
68     }else {
69                 printf("EED VolumeRendererData::OpacityChanged 3\n");
70         ShowVolume(true);
71                 VolRendManager->setVolumeOpacity(greyvalues,values);
72         }
73         printf("EED VolumeRendererData::OpacityChanged 4\n");
74 }
75
76 void  VolumeRendererData::BoundingBoxChanged(bool checked){
77    // invariant();
78
79     if(VolRendManager==NULL)
80     {
81          ShowVolume(true);
82     }
83
84
85     if(VolRendManager && Interactor){
86         if(checked){
87             VolRendManager->EnableBoundingBox(Interactor);
88         }else{
89             VolRendManager->DisableBoundingBox();
90         }
91     }
92 }
93
94 void VolumeRendererData::changeCompositeMIPFunction(int function){
95     invariant();
96     if(VolRendManager)
97         VolRendManager->changeCompositeMIPFunction(0, function);
98 }
99
100 /**
101   changes the interoplation type of the volume
102   type = 0 linear
103   type = 1 nearest
104    */
105 void VolumeRendererData::changeInterpolationType(int type){
106     invariant();
107     if(VolRendManager)
108         VolRendManager->changeInterpolationType(type);
109 }