]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx
#3020 creaMaracasVisu Bug New Normal - ViewerNV opacity, isovalue slice (size)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR2DView.cxx
index 849a6e7889d9586f4eb7e9f04d86b72d74432f35..35cf7c7358fb1afb96be073af98215c91d0ff3d9 100644 (file)
@@ -1,8 +1,35 @@
+/*# ---------------------------------------------------------------------
+#
+# 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 "wxVtkMPR2DView.h"
 
 #include "vtkInteractorStyleBaseView.h"
 
 #include "vtkCellArray.h"
+#include "vtkImageActor.h"
+
 #ifdef WIN32
 #include <mathdefs.h>
 using namespace gtm;
@@ -44,13 +71,11 @@ vtkMPRBaseData *wxVtkMPR2DView::GetVtkmprbasedata()
        return (vtkMPRBaseData*)GetVtkBaseData();
 }
 //-------------------------------------------------------------------
-void wxVtkMPR2DView::Configure(){
+void wxVtkMPR2DView::Configure()
+{
        wxVtk2DBaseView::Configure();
-
-
        int x1,x2,y1,y2,z1,z2;
        GetVtkmprbasedata()     -> GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
-
        double spc[3];
        vtkImageData* img =  GetVtkmprbasedata()->GetImageData();
        if(_interactorstylemprview==NULL)
@@ -72,15 +97,10 @@ void wxVtkMPR2DView::Configure(){
                x1 = (int)(x1*spc[0]);
                y1 = (int)(y1*spc[1]);
                z1 = (int)(z1*spc[2]);
-
                x2 = (int)(x2*spc[0]);
                y2 = (int)(y2*spc[1]);
                z2 = (int)(z2*spc[2]);
-
                _visibleAxis = true;
-
-
-
        }
 
        // Axe A
@@ -93,11 +113,8 @@ void wxVtkMPR2DView::Configure(){
                _ptsA->SetNumberOfPoints(2);
                _ptsA->SetPoint(0, -1000        , -1000 , -1000 );
                _ptsA->SetPoint(1,  1000        ,  1000 ,  1000 );
-
                _pdA = vtkPolyData::New();
-
                _lineAMapper = vtkPolyDataMapper::New();
-
                _lineAMapper->SetInput(_pdA);
                _lineAMapper->ImmediateModeRenderingOn();
                _lineAActor->SetMapper(_lineAMapper);
@@ -120,12 +137,10 @@ void wxVtkMPR2DView::Configure(){
                _lineBActor->GetProperty()->SetLineWidth(0.5);
                _lineBMapper                                    =       vtkPolyDataMapper::New();
                _lineBActor->SetMapper(_lineBMapper);
-
                _ptsB = vtkPoints::New();
                _ptsB->SetNumberOfPoints(2);
                _ptsB->SetPoint(0, -1000        , -1000 , -1000 );
                _ptsB->SetPoint(1,  1000        ,  1000 ,  1000 );
-
 //             _lineBActor->GetProperty()->BackfaceCullingOn();
        }
 
@@ -138,12 +153,8 @@ void wxVtkMPR2DView::Configure(){
        _pdB->SetPoints( _ptsB );
        _pdB->SetLines( linesB );
        linesB->Delete();  //do not delete lines ??
-
-
        _lineBMapper->SetInput(_pdB);
        _lineBMapper->ImmediateModeRenderingOn();
-
-
        if(_imageViewer2XYZ){
                _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
                _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
@@ -199,7 +210,6 @@ void wxVtkMPR2DView::Configure(){
        //      _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160);
        //      _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800);
        }
-
 }
 
 void wxVtkMPR2DView::SetVisibleAxis(bool ok)
@@ -224,29 +234,22 @@ void wxVtkMPR2DView::SetVisibleAxis(bool ok)
 //-------------------------------------------------------------------
 void wxVtkMPR2DView::Refresh()
 {
-
-
        //wxVtk2DBaseView::Refresh();
+       int x1 = 0,x2 = 0,y1 = 0,y2 = 0,z1 = 0,z2 = 0;
 
+//EED 02/08/2013
+//     int x = 0, y = 0, z = 0;
+       double x = 0, y = 0, z = 0;
 
-       //vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2(); // JPRx
-       //vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera(); // JPRx
-
-
-       int x1 = 0,x2 = 0,y1 = 0,y2 = 0,z1 = 0,z2 = 0;
-       int x = 0, y = 0, z = 0;
        int xx = 0, yy = 0, zz = 0;
        double *spc     = 0;
        double *origin  = 0;
        
        double xx1,yy1,zz1,xx2,yy2,zz2;
        
-
-       //GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
-
-
        vtkImageData* img = GetVtkmprbasedata()->GetImageData();
-       if(img!=NULL){
+       if(img!=NULL)
+       {
                origin = img->GetOrigin();
                img->GetExtent(x1,x2,y1,y2,z1,z2);
                spc = img->GetSpacing();
@@ -277,10 +280,15 @@ void wxVtkMPR2DView::Refresh()
                yy = (int)(GetVtkmprbasedata()->GetY());
                zz = (int)(GetVtkmprbasedata()->GetZ());
 
-               x =  round(xx*spc[0]);
-               y =  round(yy*spc[1]);
-               z =  round(zz*spc[2]);
-               
+//EED 02/08/2013
+//             x =  round(xx*spc[0]);
+//             y =  round(yy*spc[1]);
+//             z =  round(zz*spc[2]);
+
+               x =  xx*spc[0];
+               y =  yy*spc[1];
+               z =  zz*spc[2];
+
                if ((xx!=_backX) || (yy!=_backY) || (zz!=_backZ)) {
 
                        if (_direction==0) {    // YZ
@@ -336,15 +344,19 @@ void wxVtkMPR2DView::Refresh()
                                _ptsB->SetPoint(1, x   , yy2, z1 );
                                
                                
-                       }
+                       } // if back
                        _backX=xx;
                        _backY=yy;
                        _backZ=zz;
-               }
+               } // if image
+
 
-//EED 24oct2010
-_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->Modified();
+//EED 2016/02/19
+       vtkImageActor *imageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor();
+       imageactor->SetInterpolate( GetVtkBaseData()->GetInterpolate() );
 
+//EED 01nov2012
+               UpdateColorWindowLevel();
                wxVtkBaseView::Refresh();
        }
 }