#include "imageplanewidget.h"
+#include "vtkSmartPointer.h"
+#include "vector"
+#include "vtkImageActor.h"
+#include "vtkImageAppendComponents.h"
+#include "vtkRenderWindowInteractor.h"
+
+using namespace std;
+
ImagePlaneWidget::ImagePlaneWidget()
{
_img = 0;
_xwidget = 0;
_ywidget = 0;
_zwidget = 0;
+ m_Interactor = 0;
+ _imageactorx = 0;
+ _imageactory = 0;
+ _imageactorz = 0;
}
void ImagePlaneWidget::initialize(vtkRenderWindowInteractor* interactor){
+ m_Interactor = interactor;
// Plane widget
_xwidget = vtkImagePlaneWidget::New( );
_ywidget = vtkImagePlaneWidget::New( );
_xwidget->SetInteractor( interactor );
_ywidget->SetInteractor( interactor );
_zwidget->SetInteractor( interactor );
+
}
+bool ImagePlaneWidget::showImageActors(bool show){
+ if(show && m_Interactor){
+ if(!_imageactorx){
+ initializeImageActors();
+ }
+ m_Interactor->GetRenderWindow ()->GetRenderers ()->GetFirstRenderer ()->AddViewProp(_imageactorx);
+ m_Interactor->GetRenderWindow ()->GetRenderers ()->GetFirstRenderer ()->AddViewProp(_imageactory);
+ m_Interactor->GetRenderWindow ()->GetRenderers ()->GetFirstRenderer ()->AddViewProp(_imageactorz);
+ return true;
+ }else if(_imageactorx){
+ m_Interactor->GetRenderWindow ()->GetRenderers ()->GetFirstRenderer ()->RemoveViewProp(_imageactorx);
+ m_Interactor->GetRenderWindow ()->GetRenderers ()->GetFirstRenderer ()->RemoveViewProp(_imageactory);
+ m_Interactor->GetRenderWindow ()->GetRenderers ()->GetFirstRenderer ()->RemoveViewProp(_imageactorz);
+ return true;
+ }
+
+ return false;
+}
+
+void ImagePlaneWidget::initializeImageActors(){
+
+ int *w_ext = _img->GetWholeExtent();
+ //cout<<w_ext[0]<<" "<<w_ext[1]<<" "<<w_ext[2]<<" "<<w_ext[3]<<" "<<w_ext[4]<<" "<<w_ext[5]<<" "<<endl;
+ _imageactorx = vtkImageActor::New();
+ _imageactorx->SetInput(_img);
+ xslice = (w_ext[4] + w_ext[5])/2;
+ _imageactorx->SetDisplayExtent(w_ext[0], w_ext[1], w_ext[2], w_ext[3], xslice, xslice);
+
+ _imageactory = vtkImageActor::New();
+ _imageactory->SetInput(_img);
+ yslice = (w_ext[2] + w_ext[3])/2;
+ _imageactory->SetDisplayExtent(w_ext[0], w_ext[1], yslice, yslice, w_ext[4], w_ext[5]);
+
+ _imageactorz = vtkImageActor::New();
+ _imageactorz->SetInput(_img);
+ zslice = (w_ext[0] + w_ext[1])/2;
+ _imageactorz->SetDisplayExtent(zslice, zslice, w_ext[2], w_ext[3], w_ext[4], w_ext[5]);
+
+
+}
void ImagePlaneWidget::setImage(vtkImageData* img){
_img = img;
throw "The widgets are not initialized";
}
}
+
+
+void ImagePlaneWidget::setSliceXImageActor(int value){
+ int *w_ext = _img->GetWholeExtent();
+ xslice = value;
+ _imageactorx->SetDisplayExtent(w_ext[0], w_ext[1], w_ext[2], w_ext[3], xslice, xslice);
+ m_Interactor->Render();
+}
+void ImagePlaneWidget::setSliceYImageActor(int value){
+ int *w_ext = _img->GetWholeExtent();
+ yslice = value;
+ _imageactory->SetDisplayExtent(w_ext[0], w_ext[1], yslice, yslice, w_ext[4], w_ext[5]);
+ m_Interactor->Render();
+}
+void ImagePlaneWidget::setSliceZImageActor(int value){
+ int *w_ext = _img->GetWholeExtent();
+ zslice = value;
+ _imageactorz->SetDisplayExtent(zslice, zslice, w_ext[2], w_ext[3], w_ext[4], w_ext[5]);
+ m_Interactor->Render();
+}