]> Creatis software - creaMaracasVisu.git/blob - lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx
changes in qt for volume rendering with gpu support, if you are working with volume...
[creaMaracasVisu.git] / lib / GUI / Base / VolumeRenderer / volumerendererdata.cxx
1 #include "volumerendererdata.h"
2 #include "vtkObjectFactory.h"
3
4 vtkCxxRevisionMacro(VolumeRendererData, "$Revision: 1.7 $");
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 void VolumeRendererData::OpacityChanged(vector<double> greyvalues, vector<double> values){
60     //invariant();
61
62
63     if(VolRendManager==NULL)
64     {
65         ShowVolume(true);
66     }
67     VolRendManager->setVolumeOpacity(greyvalues,values);
68
69 }
70
71 void  VolumeRendererData::BoundingBoxChanged(bool checked){
72    // invariant();
73
74     if(VolRendManager==NULL)
75     {
76          ShowVolume(true);
77     }
78
79
80     if(VolRendManager && Interactor){
81         if(checked){
82             VolRendManager->EnableBoundingBox(Interactor);
83         }else{
84             VolRendManager->DisableBoundingBox();
85         }
86     }
87 }
88
89 void VolumeRendererData::changeCompositeMIPFunction(int function){
90     invariant();
91     if(VolRendManager)
92         VolRendManager->changeCompositeMIPFunction(0, function);
93 }
94
95 /**
96   changes the interoplation type of the volume
97   type = 0 linear
98   type = 1 nearest
99    */
100 void VolumeRendererData::changeInterpolationType(int type){
101     invariant();
102     if(VolRendManager)
103         VolRendManager->changeInterpolationType(type);
104 }