//EED 5mai2009
//-------------------------------------------------------------------
wxVtk2DBaseView::~wxVtk2DBaseView()
-{
- if (_vtkIinfoTextImage!=NULL)
+{
+ if (_vtkIinfoTextImage!=NULL)
{
- delete _vtkIinfoTextImage;
+ delete _vtkIinfoTextImage;
}
- if (_imageViewer2XYZ!=NULL)
+ if (_imageViewer2XYZ!=NULL)
{
- delete _imageViewer2XYZ;
+ delete _imageViewer2XYZ;
}
}
//-------------------------------------------------------------------
-void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &Y, double &Z) // virtual
+void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &Y, double &Z) // virtual
{
//EEDx5
double spc[3];
// GetVtkBaseData()->GetImageData()->GetSpacing(spc);
- this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
+//JCP 04/08/10 W/O Image this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
+ vtkImageData* image = this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput();
+ if(image){
+ image->GetSpacing(spc);
+ }else{
+ spc[0] = 1;
+ spc[1] = 1;
+ spc[2] = 1;
+ }
+
X = X / spc[0];
Y = Y / spc[1];
}
//-------------------------------------------------------------------
-void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &Y, double &Z) // virtual
+void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &Y, double &Z) // virtual
{
//EEDx5
double spc[3];
// GetVtkBaseData()->GetImageData()->GetSpacing(spc);
- this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
-
+//JCP 04/08/10 W/O Image this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
+ vtkImageData* image = this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput();
+ if(image){
+ image->GetSpacing(spc);
+ }else{
+ spc[0] = 1;
+ spc[1] = 1;
+ spc[2] = 1;
+ }
+//
X=X*spc[0];
Y=Y*spc[1];
Z=Z*spc[2];
//-------------------------------------------------------------------
void wxVtk2DBaseView::ResetView()
{
- double spx,spy,spz;
- int x1,x2,y1,y2,z1,z2;
+ double spx = 0,spy = 0,spz = 0;
+ int x1 = 1,x2 = 1,y1 = 1,y2 = 1,z1 = 1,z2 = 1;
wxVtkBaseView::Configure();
-
+
wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
vtkImageData *imageData = GetVtkBaseData()->GetImageData();
- imageData->UpdateInformation();
- imageData->SetUpdateExtent( imageData->GetWholeExtent());
- imageData->Update();
+ if(imageData){
+ imageData->UpdateInformation();
+ imageData->SetUpdateExtent( imageData->GetWholeExtent());
+ imageData->Update();
+ _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
+ imageData->GetSpacing (spx,spy,spz);
+ imageData->GetExtent (x1,x2,y1,y2,z1,z2);
+ }
+
- _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
- imageData->GetSpacing (spx,spy,spz);
- imageData->GetExtent (x1,x2,y1,y2,z1,z2);
_imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2);
_imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
+//EED 24oct2010
+ _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified();
+
_imageViewer2XYZ->GetVtkImageViewer2()->Render();
- SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
-
+
+ //////////////
+ //RaC 04-2010 Look for the description of new changes in vtkInteractorStyleBaseView2D constructor.
+ //
+ // Previous version
+ // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
+ //
+ // Actual version
+ vtkInteractorStyleBaseView2D *style2D = vtkInteractorStyleBaseView2D::New();
+
+ manualInteractorWindowLevel *_manualinteractorwindowlevel= new manualInteractorWindowLevel();
+ style2D->SetInteractorWindowLevel( _manualinteractorwindowlevel );
+
+ vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ();
+ style2D->SetInteractorScrollZ(_vtkInteractorScrollZ);
+
+ SetInteractorStyleImage( style2D );
+
+ // RaC
+ //////////////
+
}
_imageViewer2XYZ = new vtkImageViewer2_XYZ();
wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
_imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
- SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
+
+ //////////////
+ //RaC 04-2010 Look for the description of new changes in vtkInteractorStyleBaseView2D constructor.
+ //
+ // Previous version
+ // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
+ //
+ // Actual version
+ vtkInteractorStyleBaseView2D *style2D = vtkInteractorStyleBaseView2D::New();
+
+ manualInteractorWindowLevel *_manualinteractorwindowlevel= new manualInteractorWindowLevel();
+ style2D->SetInteractorWindowLevel( _manualinteractorwindowlevel );
+
+ vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ();
+ style2D->SetInteractorScrollZ(_vtkInteractorScrollZ);
+
+ SetInteractorStyleImage( style2D );
+
+ // RaC
+ //////////////
}
vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData();
if (imageData!=NULL){
+
imageData->UpdateInformation();
imageData->SetUpdateExtent( imageData->GetWholeExtent());
imageData->Update();
if (okimage==true){
imageData->GetSpacing (spx,spy,spz);
imageData->GetExtent (x1,x2,y1,y2,z1,z2);
-
-
_imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
_imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2);
double range[2];
- imageData->GetScalarRange(range);
- if (range[1]<20000){
+ imageData->GetScalarRange(range);
+ if (range[1]<20000){
_imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( (range[1]-range[0])/2 );
_imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( (range[1]+range[0])/4 );
- } else {
+ } else {
_imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 );
_imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 );
- }
+ }
// EED 31 Janvier 2007
//vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor ();
//vtkimageactor->InterpolateOff ();
vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2();
vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera();
-//EED 17Avril2009
-/*
+//EED 17Avril2009
+/*
camera->SetViewUp ( spx*0 , -spy*1 , spz*0 );
- camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 );
- camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 );
-*/
+ camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 );
+ camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 );
+*/
camera->SetViewUp ( spx*0 , spy*1 , spz*0 );
- camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*10000 );
- camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 );
-
-
+ camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*10000 );
+ camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 );
+
+
camera->SetClippingRange( 0.01 , 1000000 );
camera->ComputeViewPlaneNormal();
camera->SetParallelScale( spx*(x2-x1)/3.0 );
-
+
// text information over the graphic window
if(_vtkIinfoTextImage == NULL){
_vtkIinfoTextImage = new vtkInfoTextImage();
- _vtkIinfoTextImageInteractor = new vtkInfoTextImageInteractor();
+ _vtkIinfoTextImageInteractor = new vtkInfoTextImageInteractor();
((vtkInteractorStyleBaseView*)this->GetInteractorStyleBaseView())->AddInteractorStyleMaracas(_vtkIinfoTextImageInteractor);
}
_vtkIinfoTextImage->SetWxVtk2DBaseView(this);
_vtkIinfoTextImage->SetMarImageData( GetVtkBaseData()->GetMarImageData() );
- _vtkIinfoTextImageInteractor->SetModelVtkInfoTextImage(_vtkIinfoTextImage);
+ _vtkIinfoTextImageInteractor->SetModelVtkInfoTextImage(_vtkIinfoTextImage);
_vtkIinfoTextImage->Configure();
-
+
} // okimage
} // imageData
-
}
//-------------------------------------------------------------------
-int wxVtk2DBaseView::GetActualSlice() // virtual
+int wxVtk2DBaseView::GetActualSlice() // virtual
{
return (int)(_vtkbasedata->GetZ());
}
void wxVtk2DBaseView::Refresh()
{
int z = (int)(GetVtkBaseData()->GetZ());
- _imageViewer2XYZ->SetZSlice( z );
+ _imageViewer2XYZ->SetZSlice( z );
+
+//EED 24oct2010
+ _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified();
wxVtkBaseView::Refresh();
}
wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
interactorstylebaseview->SetInteractor ( iren );
iren->SetInteractorStyle(interactorstylebaseview);
- interactorstylebaseview->SetwxVtkBaseView(this);
+ interactorstylebaseview->SetwxVtkBaseView(this);
vtkMaracasImageViewer2Callback * cbk = vtkMaracasImageViewer2Callback::New();
cbk->IV = _imageViewer2XYZ->GetVtkImageViewer2();
}
//---------------------------------------------------------------------------
-vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual
+vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual
{
return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer();
}
}
//-------------------------------------------------------------------
-
void wxVtk2DBaseView::GetSpacing(double spc[3]) // virtual
{
vtkImageData *imageData = GetVtkBaseData()->GetImageData();
- imageData->GetSpacing(spc);
+ if(imageData){
+ imageData->GetSpacing(spc);
+ }else{
+ spc[0] = 0;
+ spc[1] = 0;
+ spc[2] = 0;
+ }
}
-void wxVtk2DBaseView::setColorTransferFunction(vtkColorTransferFunction* colortable){
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::setColorTransferFunction(vtkColorTransferFunction* colortable)
+{
if(_imageViewer2XYZ!=NULL){
_imageViewer2XYZ->setColorTransferFunction(colortable);
this->Refresh();
}
}
-void wxVtk2DBaseView::setWindowLevel(double level){
-// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow(level);
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::setWindowLevel(double level)
+{
+// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow(level);
vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel();
imagemaptowindowlevel->SetWindow(level);
this->Refresh();
}
-void wxVtk2DBaseView::setColorLevel(double level){
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::setColorLevel(double level)
+{
// _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel(level);
vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel();
imagemaptowindowlevel->SetLevel(level);
this->Refresh();
}
+
+//-------------------------------------------------------------------
+int wxVtk2DBaseView::GetDirection() // virtual
+{
+ return 2;
+}
+