]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DView.cxx
changes in viewers, now is possible to initialize them with out an image but the...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR3DView.cxx
index e740c60db0b54851abceeaad79c2adbed82edaec..e406380814b179a5794fffd504f142716790fcd9 100644 (file)
@@ -93,6 +93,9 @@ void wxVtkMPR3DView::ResetCamera(int* ext, double* origin,double* spc)
 
 //-------------------------------------------------------------------
 void wxVtkMPR3DView::Configure(){
+       
+       
+       vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
 
        _wxvtk3Dbaseview->Configure();
        _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel();
@@ -142,7 +145,10 @@ void wxVtkMPR3DView::Configure(){
        _pointWidget = vtkPointWidget::New();
        _myCallback->SetVtkPointWidget(_pointWidget);
        _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); 
-       _pointWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() );
+       
+       if(imageData){
+               _pointWidget->SetInput( imageData );
+       }
        
        _pointWidget->AllOff();
        
@@ -163,12 +169,20 @@ void wxVtkMPR3DView::Configure(){
        }
        _planeWidget = vtkPlaneWidget::New();
        _myCallback->SetVtkPlaneWidget(_planeWidget);
-       _planeWidget->SetInput( GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData() );
+       if(imageData){
+               _planeWidget->SetInput( imageData );
+       }
        _planeWidget->NormalToXAxisOn();
        _planeWidget->SetResolution(50);
        _planeWidget->SetRepresentationToOutline();
        int dim[3];
-       GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetDimensions(dim);
+       if(imageData){
+               imageData->GetDimensions(dim);
+       }else{
+               dim[0] = 0;
+               dim[1] = 0;
+               dim[2] = 0;
+       }
        int px=(dim[0]/2);
        int py=(dim[1]/2);
        int pz=(dim[2]/2);
@@ -197,13 +211,13 @@ void wxVtkMPR3DView::Configure(){
                _planeWidget->Off();
                _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor );        
 
-       }else{
-               
        }
+
        _planeWidget->GetPolyData(_vtkplane);
-       vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData(); 
-       _probe->SetSource( imageData );
-       _contourMapper->SetScalarRange( imageData->GetScalarRange() );
+       if(imageData){
+               _probe->SetSource( imageData );
+               _contourMapper->SetScalarRange( imageData->GetScalarRange() );
+       }
        
        ConfigureFreePlanes();
 }
@@ -238,13 +252,18 @@ vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey,
        planeWidget->EnabledOff();
        planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
        vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
-       planeWidget->SetInput( image );
+       int xMin = 0, xMax = 0, yMin = 0, yMax = 0, zMin = 0, zMax = 0;
+       double xSpacing = 0, ySpacing = 0, zSpacing = 0;
+       if(image){
+               planeWidget->SetInput( image );
+               image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax);   
+               image->GetSpacing(xSpacing, ySpacing, zSpacing);
+       }
 
        
-       int xMin, xMax, yMin, yMax, zMin, zMax;
-       image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax);   
-       double xSpacing, ySpacing, zSpacing;
-       image->GetSpacing(xSpacing, ySpacing, zSpacing);        
+       
+       
+               
        
        if (activationkey=='x')
        {
@@ -321,7 +340,16 @@ void wxVtkMPR3DView::Refresh()   // virtual
 void wxVtkMPR3DView::RefreshView()   // virtual
 {
        double spc[3];
-       this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc);
+       vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
+       
+       if(image){
+               image->GetSpacing(spc);
+       }else{
+               spc[0] = 0;
+               spc[1] = 0;
+               spc[2] = 0;
+       }
+       //this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc);
 
        //double nx=1,ny=0,nz=0; // JPRx
        Refresh();