]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk2DBaseView.cxx
#3012 creaMaracasVisu Bug New Normal - Update Image in ViewerNV
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtk2DBaseView.cxx
index 61607c373e2075bf13ba759877412a49b7a2f260..bd26d120d364e66401ac592ac30059cd5db585ce 100644 (file)
@@ -1,8 +1,34 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 #include "wxVtk2DBaseView.h"
 
 #include "vtkInfoTextImage.h"
 #include "vtkInteractorStyleBaseView2D.h"
 #include "vtkInfoTextImageInteractor.h"
+#include "vtkImageActor.h"
 
 
 wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent)
@@ -69,7 +95,6 @@ void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &
        X=X*spc[0];
        Y=Y*spc[1];
        Z=Z*spc[2];
-
 }
 
 //-------------------------------------------------------------------
@@ -91,7 +116,6 @@ void wxVtk2DBaseView::ResetView()
                imageData->GetExtent (x1,x2,y1,y2,z1,z2);
        }
 
-
        _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2);
        _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
 
@@ -122,8 +146,6 @@ void wxVtk2DBaseView::ResetView()
 
 }
 
-
-
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::SetImageToVtkViewer(vtkImageData *imageData)
 {
@@ -133,7 +155,6 @@ void wxVtk2DBaseView::SetImageToVtkViewer(vtkImageData *imageData)
        } // if _imageViewer2XYZ
 }
 
-
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::Configure(bool okimage)
 {
@@ -169,7 +190,6 @@ void wxVtk2DBaseView::Configure(bool okimage)
                //////////////
        }
 
-
        vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData();
        if (imageData!=NULL)
        {
@@ -181,6 +201,8 @@ void wxVtk2DBaseView::Configure(bool okimage)
                        imageData->GetExtent (x1,x2,y1,y2,z1,z2);
                        SetImageToVtkViewer(imageData);
                        _imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2);
+                       
+/*EED Borrame,  now is syncroniced in vtkBaseData for all windows                      
                        double range[2];
                        imageData->GetScalarRange(range);
                        if (range[1]<20000){
@@ -190,6 +212,8 @@ void wxVtk2DBaseView::Configure(bool okimage)
                                 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 );
                                 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 );
                        }
+*/ 
+                       
 // EED 31 Janvier 2007
 //vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor ();
 //vtkimageactor->InterpolateOff ();
@@ -202,11 +226,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();
 
@@ -245,55 +267,56 @@ void wxVtk2DBaseView::Configure(bool okimage)
 
 //-------------------------------------------------------------------
 
-int    wxVtk2DBaseView::GetActualSlice()  // virtual
+int wxVtk2DBaseView::GetActualSlice()  // virtual
 {
-   return (int)(_vtkbasedata->GetZ());
+   return (int)(GetVtkBaseData()->GetZ());
 }
 
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::SetActualSlice(int slice)  // Virtual
 {
-   _vtkbasedata->SetZ(slice);
-}
-
-//-------------------------------------------------------------------
-
-vtkBaseData *wxVtk2DBaseView::GetVtkBaseData()
-{
-   return _vtkbasedata;
+   GetVtkBaseData()->SetZ(slice);
 }
 
 //-------------------------------------------------------------------
-
-void wxVtk2DBaseView::SetVtkBaseData(vtkBaseData *vtkbasedata)
+void wxVtk2DBaseView::UpdateColorWindowLevel()
 {
-   _vtkbasedata=vtkbasedata;
+       //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::Refresh()
 {
-   int z = (int)(GetVtkBaseData()->GetZ());
-  _imageViewer2XYZ->SetZSlice( z );
-
-//EED 24oct2010
-  _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified();
-
-   wxVtkBaseView::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();       
+       wxVtkBaseView::Refresh();
 }
 
 //-------------------------------------------------------------------
-
 void wxVtk2DBaseView::SetInteractorStyleImage(vtkInteractorStyleBaseView *interactorstylebaseview)
 {
        SetInteractorStyleBaseView(interactorstylebaseview);
-
        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 );
@@ -307,6 +330,7 @@ vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual
 {
    return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer();
 }
+
 //---------------------------------------------------------------------------
 vtkRenderWindow* wxVtk2DBaseView::GetRenWin()          // virtual
 {
@@ -317,7 +341,8 @@ vtkRenderWindow* wxVtk2DBaseView::GetRenWin()               // virtual
 void wxVtk2DBaseView::GetSpacing(double spc[3])  // virtual
 {
    vtkImageData *imageData     = GetVtkBaseData()->GetImageData();
-   if(imageData){
+   if(imageData)
+   {
        imageData->GetSpacing(spc);
    }else{
         spc[0] = 0;
@@ -329,28 +354,26 @@ void wxVtk2DBaseView::GetSpacing(double spc[3])  // virtual
 //-------------------------------------------------------------------
 void wxVtk2DBaseView::setColorTransferFunction(vtkColorTransferFunction* colortable)
 {
-       if(_imageViewer2XYZ!=NULL){
+       if(_imageViewer2XYZ!=NULL)
+       {
                _imageViewer2XYZ->setColorTransferFunction(colortable);
                this->Refresh();
        }
 }
 
 //-------------------------------------------------------------------
-void wxVtk2DBaseView::setWindowLevel(double level)
+void wxVtk2DBaseView::SetColorWindow(double level)
 {
 //     _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow(level);
-
-       vtkImageMapToWindowLevelColors* imagemaptowindowlevel = _imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel();
-       imagemaptowindowlevel->SetWindow(level);
+       GetVtkBaseData()->SetColorWindow(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);
+       GetVtkBaseData()->SetColorLevel(level);
        this->Refresh();
 }