]> Creatis software - creaMaracasVisu.git/blob - lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.cxx
changes to volume rendering base
[creaMaracasVisu.git] / lib / Kernel / VTKObjects / ViewerWidgets / imageplanewidget.cxx
1 #include "imageplanewidget.h"
2
3 ImagePlaneWidget::ImagePlaneWidget()
4 {
5     _img = 0;
6     _xwidget = 0;
7     _ywidget = 0;
8     _zwidget = 0;
9 }
10
11 void ImagePlaneWidget::initialize(vtkRenderWindowInteractor* interactor){
12     // Plane widget
13     _xwidget = vtkImagePlaneWidget::New( );
14     _ywidget = vtkImagePlaneWidget::New( );
15     _zwidget = vtkImagePlaneWidget::New( );
16
17
18     _xwidget->SetInteractor( interactor );
19     _ywidget->SetInteractor( interactor );
20     _zwidget->SetInteractor( interactor );
21 }
22
23
24 void ImagePlaneWidget::setImage(vtkImageData* img){
25     _img = img;
26     this->invariant();
27
28     int *dims = _img->GetDimensions( );
29     unsigned int sliceX = dims[0]/2;
30     unsigned int sliceY = dims[1]/2;
31     unsigned int sliceZ = dims[2]/2;
32
33     // Set input X,Y and Z plane
34     _xwidget->Off( );
35     _xwidget->SetInput( _img );
36     _xwidget->SetPlaneOrientationToXAxes( );
37     _xwidget->SetSliceIndex( sliceX );
38     //_xwidget->TextureInterpolateOff();
39     _xwidget->SetResliceInterpolateToLinear();
40     _xwidget->On( );
41     _xwidget->DisplayTextOn();
42
43
44     _ywidget->Off( );
45     _ywidget->SetInput( _img );
46     _ywidget->SetPlaneOrientationToYAxes( );
47     _ywidget->SetSliceIndex( sliceY );
48     //_ywidget->TextureInterpolateOff();
49     _ywidget->SetResliceInterpolateToLinear();
50     _ywidget->DisplayTextOn();
51     _ywidget->On( );
52
53     _zwidget->Off( );
54     _zwidget->SetInput( _img );
55     _zwidget->SetPlaneOrientationToZAxes( );
56     _zwidget->SetSliceIndex( sliceZ );
57     //_zwidget->TextureInterpolateOff();
58     _zwidget->SetResliceInterpolateToLinear();
59     _zwidget->DisplayTextOn();
60     _zwidget->On( );     
61 }
62
63 void ImagePlaneWidget::SetLookupTable(vtkLookupTable *lookuptable){
64     this->invariant();
65     _xwidget->SetLookupTable(lookuptable);
66     _ywidget->SetLookupTable(lookuptable);
67     _zwidget->SetLookupTable(lookuptable);
68 }
69
70 void ImagePlaneWidget::SetColorTable(vtkColorTransferFunction *colortransfer){
71     SetLookupTable((vtkLookupTable*)colortransfer);
72 }
73
74 void ImagePlaneWidget::showPlanes(bool show){
75     this->invariant();
76     if(show){
77         _xwidget->On();
78         _ywidget->On();
79         _zwidget->On();
80     }else{
81         _xwidget->Off();
82         _ywidget->Off();
83         _zwidget->Off();
84     }
85 }
86
87
88 void ImagePlaneWidget::invariant(){
89     if(_img == NULL){
90         throw "Image data is not initialized";
91     }
92     if(!_xwidget ||!_ywidget || !_zwidget){
93         throw "The widgets are not initialized";
94     }
95 }