]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx
#3418 creaMaracasVisu Feature New Normal - ManualPaint_model with openmp
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR2DView.cxx
index 35cf7c7358fb1afb96be073af98215c91d0ff3d9..517ca87925bd997bb706ddf1109daea013f4478c 100644 (file)
@@ -56,14 +56,14 @@ wxVtkMPR2DView::wxVtkMPR2DView( wxWindow *parent, int direction)
 //-------------------------------------------------------------------
 wxVtkMPR2DView::~wxVtkMPR2DView()
 {
-       if (_ptsA!=NULL)            { _ptsA                 -> Delete(); }
-       if (_lineAActor!=NULL)  { _lineAActor   -> Delete(); }
-       if (_lineAMapper!=NULL) { _lineAMapper  -> Delete(); }
-       if (_pdA!=NULL)             { _pdA                  -> Delete(); }
-       if (_ptsB!=NULL)            { _ptsB                 -> Delete(); }
-       if (_lineBActor!=NULL)  { _lineBActor   -> Delete(); }
-       if (_lineBMapper!=NULL) { _lineBMapper  -> Delete(); }
-       if (_pdB!=NULL)             { _pdB                  -> Delete(); }
+       if (_ptsA!=NULL)            { _ptsA->Delete();                  }
+       if (_lineAActor!=NULL)  { _lineAActor->Delete();        }
+       if (_lineAMapper!=NULL) { _lineAMapper->Delete();       }
+       if (_pdA!=NULL)             { _pdA->Delete();                   }
+       if (_ptsB!=NULL)            { _ptsB->Delete();                  }
+       if (_lineBActor!=NULL)  { _lineBActor->Delete();        }
+       if (_lineBMapper!=NULL) { _lineBMapper->Delete();       }
+       if (_pdB!=NULL)             { _pdB->Delete();                   }
 }
 //-------------------------------------------------------------------
 vtkMPRBaseData *wxVtkMPR2DView::GetVtkmprbasedata()
@@ -84,7 +84,8 @@ void wxVtkMPR2DView::Configure()
                ((vtkInteractorStyleBaseView*)GetInteractorStyleBaseView())->AddInteractorStyleMaracas( _interactorstylemprview );
        }
 
-       if(img!=NULL){
+       if(img!=NULL)
+       {
                double* origin = img->GetOrigin();
                img->GetExtent(x1,x2,y1,y2,z1,z2);
                img->GetSpacing(spc);
@@ -115,7 +116,14 @@ void wxVtkMPR2DView::Configure()
                _ptsA->SetPoint(1,  1000        ,  1000 ,  1000 );
                _pdA = vtkPolyData::New();
                _lineAMapper = vtkPolyDataMapper::New();
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
                _lineAMapper->SetInput(_pdA);
+#else
+               _lineAMapper->SetInputData(_pdA);
+#endif
+
                _lineAMapper->ImmediateModeRenderingOn();
                _lineAActor->SetMapper(_lineAMapper);
        }
@@ -131,7 +139,8 @@ void wxVtkMPR2DView::Configure()
 
 
 // Axe B
-       if(_lineBActor==NULL){
+       if(_lineBActor==NULL)
+       {
                _lineBActor                                             =       vtkActor::New();
                _lineBActor->GetProperty()->SetDiffuseColor(1,0,0);
                _lineBActor->GetProperty()->SetLineWidth(0.5);
@@ -153,9 +162,17 @@ void wxVtkMPR2DView::Configure()
        _pdB->SetPoints( _ptsB );
        _pdB->SetLines( linesB );
        linesB->Delete();  //do not delete lines ??
+
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
        _lineBMapper->SetInput(_pdB);
+#else
+       _lineBMapper->SetInputData(_pdB);
+#endif
+
        _lineBMapper->ImmediateModeRenderingOn();
-       if(_imageViewer2XYZ){
+       if(_imageViewer2XYZ)
+       {
                _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
                _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
                vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
@@ -163,21 +180,22 @@ void wxVtkMPR2DView::Configure()
        //EED 17Avril2009
     //EED 21 mars 2012  FLIP problem  ..PLOP..
 
-               if (_direction==0) {  // YZ
+               if (_direction==0) 
+               {  // YZ
                        camera->SetViewUp               (   0   ,    0          ,     1         );
                        camera->SetPosition             ( 10000,(y1+y2)/2       , (z1+z2)/2     );
                        camera->SetFocalPoint   (   0   , (y1+y2)/2     , (z1+z2)/2     );
                        camera->SetParallelScale( (z2-z1)/3.0 );
                }
-
-               if (_direction==1) { // XZ
+               if (_direction==1) 
+               { // XZ
                        camera->SetViewUp               (       0               ,       0       ,       1               );
                        camera->SetPosition             ((x1+x2)/2      , -10000        , (z1+z2)/2     );
                        camera->SetFocalPoint   ((x1+x2)/2      ,   0   , (z1+z2)/2     );
                        camera->SetParallelScale( (x2-x1)/3.0 );
                }
-
-               if (_direction==2) {  // XY
+               if (_direction==2) 
+               {  // XY
                        camera->SetViewUp               (       0               ,       -1              ,       0       );
                        camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     , -10000);
                        camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       );
@@ -214,9 +232,9 @@ void wxVtkMPR2DView::Configure()
 
 void wxVtkMPR2DView::SetVisibleAxis(bool ok)
 {
-       if (ok!=_visibleAxis)
+       if (ok != _visibleAxis)
        {
-               _visibleAxis=ok;
+               _visibleAxis = ok;
                if (_visibleAxis==true)
                {
                        _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
@@ -226,27 +244,34 @@ void wxVtkMPR2DView::SetVisibleAxis(bool ok)
                {
                        _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineAActor );
                        _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineBActor );
-               }
+               } // if visible
+       } // ok
+}
 
-       }
+
+//-------------------------------------------------------------------
+void wxVtkMPR2DView::ResetBackXYZ()
+{
+       _backX=-9999;
+       _backY=-9999;
+       _backZ=-9999;
 }
 
+
 //-------------------------------------------------------------------
 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;
-
-       int xx = 0, yy = 0, zz = 0;
+       double  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;
-       
+       bool   fixAxis2D;
+       double opacityAxis;
        vtkImageData* img = GetVtkmprbasedata()->GetImageData();
        if(img!=NULL)
        {
@@ -259,38 +284,32 @@ void wxVtkMPR2DView::Refresh()
                y2 += origin[1];
                z1 += origin[2];
                z2 += origin[2];
-               
-               xx1 =           x1*spc[0];
-               yy1 =           y1*spc[1];
-               zz1 =           z1*spc[2];
-               
-               xx2 =           x2*spc[0];
-               yy2 =           y2*spc[1];
-               zz2 =           z2*spc[2];
-               
-               x1 = (int)(x1*spc[0]);
-               y1 = (int)(y1*spc[1]);
-               z1 = (int)(z1*spc[2]);
-               
+               xx1 = x1*spc[0];
+               yy1 = y1*spc[1];
+               zz1 = z1*spc[2];
+               xx2 = x2*spc[0];
+               yy2 = y2*spc[1];
+               zz2 = z2*spc[2];
+               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]);
-
-               xx = (int)(GetVtkmprbasedata()->GetX());
-               yy = (int)(GetVtkmprbasedata()->GetY());
-               zz = (int)(GetVtkmprbasedata()->GetZ());
-
-//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)) {
-
+               xx      = (int)(GetVtkmprbasedata()->GetX());
+               yy      = (int)(GetVtkmprbasedata()->GetY());
+               zz      = (int)(GetVtkmprbasedata()->GetZ());
+               x       =  xx*spc[0];
+               y       =  yy*spc[1];
+               z       =  zz*spc[2];
+               fixAxis2D               = GetVtkmprbasedata()->GetFixAxis2D();
+               opacityAxis             = GetVtkmprbasedata()->GetOpacityAxis();
+               if ((xx!=_backX) || (yy!=_backY) || (zz!=_backZ)  || (fixAxis2D!=_backFixAxis2D) || (opacityAxis!=_backOpacityAxis)) 
+               {
+                       double position[3];
+                       double focalpoint[3];
+                       GetRenderer()->GetActiveCamera()->GetPosition(position);
+                       GetRenderer()->GetActiveCamera()->GetFocalPoint(focalpoint);
                        if (_direction==0) {    // YZ
                                if(_imageViewer2XYZ)
                                {
@@ -305,6 +324,10 @@ void wxVtkMPR2DView::Refresh()
                                _ptsA->SetPoint(1, xx2, yy2  , z  );
                                _ptsB->SetPoint(0, xx2, y    , zz1);
                                _ptsB->SetPoint(1, xx2, y    , zz2);
+                               position[1]             = y;    
+                               position[2]             = z;    
+                               focalpoint[1]   = y;    
+                               focalpoint[2]   = z;    
                        }
                        if (_direction==1) {    // XZ
                                if(_imageViewer2XYZ)
@@ -320,6 +343,10 @@ void wxVtkMPR2DView::Refresh()
                                _ptsA->SetPoint(1, xx2 , y1 , z  );
                                _ptsB->SetPoint(0, x   , y1 , zz1);
                                _ptsB->SetPoint(1, x   , y1 , zz2);
+                               position[0]             = x;    
+                               position[2]             = z;    
+                               focalpoint[0]   = x;    
+                               focalpoint[2]   = z;    
                        }
                        if (_direction==2) {    // XY
                                if(_imageViewer2XYZ)
@@ -337,29 +364,49 @@ void wxVtkMPR2DView::Refresh()
                                //_ptsA->SetPoint(1, x2 , y , z2 );
                                //_ptsB->SetPoint(0, x  , y1, z2 );
                                //_ptsB->SetPoint(1, x  , y2, z2 );
-                               
                                _ptsA->SetPoint(0, xx1 , y  , z1 );
                                _ptsA->SetPoint(1, xx2 , y  , z1 );
                                _ptsB->SetPoint(0, x   , yy1, z1 );
                                _ptsB->SetPoint(1, x   , yy2, z1 );
-                               
-                               
+                               position[0]             = x;    
+                               position[1]             = y;    
+                               focalpoint[0]   = x;    
+                               focalpoint[1]   = y;                                    
                        } // if back
-                       _backX=xx;
-                       _backY=yy;
-                       _backZ=zz;
-               } // if image
+                       
+//EED 2017-01-01 Migration VTK7
+#if VTK_MAJOR_VERSION <= 5
+                               // ..
+#else
+                               _ptsA->Modified();
+                               _ptsB->Modified();
+#endif
 
+                       if (fixAxis2D == true)
+                       {
+                               GetRenderer()->GetActiveCamera()->SetPosition(position);
+                               GetRenderer()->GetActiveCamera()->SetFocalPoint(focalpoint);
+                       } // if GetFixAxis2D
+                       _lineAActor->GetProperty()->SetOpacity( opacityAxis );
+                       _lineBActor->GetProperty()->SetOpacity( opacityAxis );
+                       _backX                  = xx;
+                       _backY                  = yy;
+                       _backZ                  = zz;
+                       _backFixAxis2D  = fixAxis2D;
+                       _backOpacityAxis= opacityAxis;
+               } // if image
 
 //EED 2016/02/19
        vtkImageActor *imageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor();
        imageactor->SetInterpolate( GetVtkBaseData()->GetInterpolate() );
-
 //EED 01nov2012
                UpdateColorWindowLevel();
+//EED 05juin2019
+               UpdateCameraParallelScale();
                wxVtkBaseView::Refresh();
        }
 }
+
 //-------------------------------------------------------------------
 int wxVtkMPR2DView::GetActualSlice()   // virtual
 {