]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtk2DBaseView.cxx
index 33accb3a4dc960b35e03140ee00f81ea3df53fea..4203d27b4a45884df23c9a168dbec48283fbbcad 100644 (file)
@@ -33,7 +33,16 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &
 //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];
@@ -47,8 +56,16 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &
 //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];
@@ -58,24 +75,46 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &
 //-------------------------------------------------------------------
 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 );
 
        _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
+       //////////////
        
 }
 
@@ -93,31 +132,49 @@ void wxVtk2DBaseView::Configure(bool okimage)
                _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 ();
@@ -166,7 +223,6 @@ void wxVtk2DBaseView::Configure(bool okimage)
                        
                } // okimage
        } // imageData
-
 }
 
 //-------------------------------------------------------------------
@@ -241,7 +297,13 @@ vtkRenderWindow* wxVtk2DBaseView::GetRenWin()              // virtual
 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){