]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx
#3472 TDx
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtk2DBaseView.cxx
index 6e9a593ecf92b19d245dcbdbc1d104e42d31391d..941b3ef3ae0d5f7c1e9e1d190d80e4bf3bbe33fa 100644 (file)
@@ -31,8 +31,8 @@
 #include "vtkImageActor.h"
 
 
-wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent)
-:wxVtkBaseView(parent)
+wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent,bool TDxWindow)
+:wxVtkBaseView(parent,TDxWindow)
 {
    _imageViewer2XYZ   = NULL;
    _vtkIinfoTextImage = NULL;
@@ -46,7 +46,6 @@ wxVtk2DBaseView::~wxVtk2DBaseView()
        {
           delete _vtkIinfoTextImage;
        }
-
        if (_imageViewer2XYZ!=NULL)
        {
           delete _imageViewer2XYZ;
@@ -61,19 +60,17 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &
 //     GetVtkBaseData()->GetImageData()->GetSpacing(spc);
 //JCP 04/08/10 W/O Image this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
        vtkImageData* image = this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput();
-       if(image){
+       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];
-
 }
 
 //-------------------------------------------------------------------
@@ -95,36 +92,37 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &
        X=X*spc[0];
        Y=Y*spc[1];
        Z=Z*spc[2];
-
 }
 
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::ResetView()
 {
-       printf("EED wxVtk2DBaseView::ResetView");
        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();
+       crea::wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
        vtkImageData *imageData = GetVtkBaseData()->GetImageData();
-       if(imageData){
+       if(imageData)
+       {
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
                imageData->UpdateInformation();
                imageData->SetUpdateExtent( imageData->GetWholeExtent());
                imageData->Update();
                _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
+#else
+               _imageViewer2XYZ->GetVtkImageViewer2()->SetInputData(imageData );
+#endif
                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();
+//EED2120-06-23        _imageViewer2XYZ->GetVtkImageViewer2()->Render();
 
        //////////////
        //RaC 04-2010 Look for the description of new changes in vtkInteractorStyleBaseView2D constructor.
@@ -141,24 +139,34 @@ void wxVtk2DBaseView::ResetView()
        vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ();
        style2D->SetInteractorScrollZ(_vtkInteractorScrollZ);
 
-       SetInteractorStyleImage( style2D );
-
-       // RaC
-       //////////////
+       vtkInteractorZoomCamera *_vtkInteractorZoomCamera = new vtkInteractorZoomCamera();
+       style2D->SetInteractorZoomCamera(_vtkInteractorZoomCamera);
 
+       SetInteractorStyleImage( style2D );
 }
 
-
-
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::SetImageToVtkViewer(vtkImageData *imageData)
 {
+       int ext[6];
        if (_imageViewer2XYZ!=NULL)
        {
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
+               imageData->Update();
+               imageData->GetWholeExtent(ext);
+               _imageViewer2XYZ->SetExtentDimension( ext[0],ext[1],ext[2],ext[3],ext[4],ext[5] );
                _imageViewer2XYZ->GetVtkImageViewer2()->SetInput( imageData );
+#else
+               imageData->GetExtent(ext);
+               _imageViewer2XYZ->SetExtentDimension( ext[0],ext[1],ext[2],ext[3],ext[4],ext[5] );
+               _imageViewer2XYZ->GetVtkImageViewer2()->SetInputData( imageData );
+#endif
        } // if _imageViewer2XYZ
-}
 
+       GetRenderer()->GetActiveCamera()->SetClippingRange(0.01, 1000000);
+
+}
 
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::Configure(bool okimage)
@@ -171,7 +179,7 @@ void wxVtk2DBaseView::Configure(bool okimage)
        if (_imageViewer2XYZ==NULL)
        {
                _imageViewer2XYZ = new vtkImageViewer2_XYZ();
-               wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
+               crea::wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
                _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
 
                //////////////
@@ -189,19 +197,28 @@ void wxVtk2DBaseView::Configure(bool okimage)
                vtkInteractorScrollZ *_vtkInteractorScrollZ = new vtkInteractorScrollZ();
                style2D->SetInteractorScrollZ(_vtkInteractorScrollZ);
 
+               vtkInteractorZoomCamera *_vtkInteractorZoomCamera = new vtkInteractorZoomCamera();
+               style2D->SetInteractorZoomCamera(_vtkInteractorZoomCamera);
+
                SetInteractorStyleImage( style2D );
 
                // RaC
                //////////////
        }
 
-
        vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData();
        if (imageData!=NULL)
        {
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
                imageData->UpdateInformation();
                imageData->SetUpdateExtent( imageData->GetWholeExtent());
                imageData->Update();
+#else
+               //...
+#endif
+
                if (okimage==true){
                        imageData->GetSpacing (spx,spy,spz);
                        imageData->GetExtent (x1,x2,y1,y2,z1,z2);
@@ -232,11 +249,9 @@ void wxVtk2DBaseView::Configure(bool okimage)
 //_collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
 //_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel ()->SetLookupTable(_collookup );
 
-
 // EED 17 Oct 2007
 //                     SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
 
-
                        vtkImageViewer2 *IV2            =       _imageViewer2XYZ->GetVtkImageViewer2();
                        vtkCamera               *camera         =       IV2->GetRenderer()->GetActiveCamera();
 
@@ -244,7 +259,7 @@ void wxVtk2DBaseView::Configure(bool okimage)
 //EED 21 mars 2012     FLIP problem  ..PLOP..
                        
                        // XY
-                       camera->SetViewUp               ( spx*0                 , -spy*1                        , 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         );
 /*
@@ -256,7 +271,10 @@ void wxVtk2DBaseView::Configure(bool okimage)
                        
                        camera->SetClippingRange( 0.01                  , 1000000 );
                        camera->ComputeViewPlaneNormal();
-                       camera->SetParallelScale( spx*(x2-x1)/3.0 );
+               
+                       double cameraparallelScale=spx*(x2-x1)/3.0;     
+                       camera->SetParallelScale( cameraparallelScale );
+                       GetVtkBaseData()->SetCameraParallelScale( cameraparallelScale );
 
                        // text information over the graphic window
                        if(_vtkIinfoTextImage == NULL){
@@ -275,7 +293,7 @@ void wxVtk2DBaseView::Configure(bool okimage)
 
 //-------------------------------------------------------------------
 
-int    wxVtk2DBaseView::GetActualSlice()  // virtual
+int wxVtk2DBaseView::GetActualSlice()  // virtual
 {
    return (int)(GetVtkBaseData()->GetZ());
 }
@@ -286,38 +304,36 @@ void wxVtk2DBaseView::SetActualSlice(int slice)  // Virtual
    GetVtkBaseData()->SetZ(slice);
 }
 
-
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::UpdateColorWindowLevel()
 {
        //EED 24oct2010
        //EED 02nov2012
        
-//     vtkImageViewer2 *vtkimageviewer2        = _imageViewer2XYZ->GetVtkImageViewer2();               
-       
-       
        vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel();
        imagemaptowindowlevel->SetWindow( GetVtkBaseData()->GetColorWindow() );
        imagemaptowindowlevel->SetLevel( GetVtkBaseData()->GetColorLevel() );
-       
-// EED Borrame
-//     vtkimageviewer2->SetColorWindow( GetVtkBaseData()->GetColorWindow() );
-//     vtkimageviewer2->SetColorLevel(  GetVtkBaseData()->GetColorLevel() );
        _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified();
 }
 
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::UpdateCameraParallelScale()
+{
+       vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
+       camera->SetParallelScale( GetVtkBaseData()->GetCameraParallelScale() );
+}
+
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::Refresh()
 {
        int z = (int)(GetVtkBaseData()->GetZ());
        _imageViewer2XYZ->SetZSlice( z );
-
 //EED 2016/02/19
        vtkImageActor *imageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor();
        imageactor->SetInterpolate( GetVtkBaseData()->GetInterpolate() );
-
        //EED 01nov2012
        UpdateColorWindowLevel();       
+       UpdateCameraParallelScale();    
        wxVtkBaseView::Refresh();
 }
 
@@ -325,12 +341,10 @@ void wxVtk2DBaseView::Refresh()
 void wxVtk2DBaseView::SetInteractorStyleImage(vtkInteractorStyleBaseView *interactorstylebaseview)
 {
        SetInteractorStyleBaseView(interactorstylebaseview);
-
-       wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
+       crea::wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
        interactorstylebaseview->SetInteractor ( iren );
        iren->SetInteractorStyle(interactorstylebaseview);
        interactorstylebaseview->SetwxVtkBaseView(this);
-
        vtkMaracasImageViewer2Callback * cbk = vtkMaracasImageViewer2Callback::New();
        cbk->IV = _imageViewer2XYZ->GetVtkImageViewer2();
        interactorstylebaseview->AddObserver( vtkCommand::WindowLevelEvent, cbk );
@@ -391,9 +405,50 @@ void wxVtk2DBaseView::SetColorLevel(double level)
        this->Refresh();
 }
 
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::SetInterpolate(bool iterpolate)
+{
+       GetVtkBaseData()->SetInterpolate( iterpolate );
+       this->Refresh();
+}
+
 //-------------------------------------------------------------------
 int wxVtk2DBaseView::GetDirection() // virtual
 {
     return 2;
 }
 
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::GetNormal(double normal[3] ) // virtual
+{
+       if (GetDirection()==0 ) 
+       {
+               normal[0]=1;
+               normal[1]=0;
+               normal[2]=0;
+       } // if
+       if (GetDirection()==1 ) 
+       {
+               normal[0]=0;
+               normal[1]=1;
+               normal[2]=0;
+       } // if
+       if (GetDirection()==2 ) 
+       {
+               normal[0]=0;
+               normal[1]=0;
+               normal[2]=1;
+       } // if
+}
+
+
+//-------------------------------------------------------------------
+void wxVtk2DBaseView::SetOpacityText(double opacity)
+{
+       if (_vtkIinfoTextImage!=NULL)
+       {
+               _vtkIinfoTextImage->SetOpacity( opacity );
+       }
+}
+
+