]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx
#3155 creaMaracasVisu Feature New Normal - ViewerPlane ComplexBox
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR2DView.cxx
index 803bea180e9eed803882a9e249172eab98dd2b58..69a58bb5e5f907f405d840b44587823baa29db89 100644 (file)
@@ -131,7 +131,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);
@@ -155,7 +156,8 @@ void wxVtkMPR2DView::Configure()
        linesB->Delete();  //do not delete lines ??
        _lineBMapper->SetInput(_pdB);
        _lineBMapper->ImmediateModeRenderingOn();
-       if(_imageViewer2XYZ){
+       if(_imageViewer2XYZ)
+       {
                _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
                _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
                vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
@@ -163,21 +165,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       );
@@ -226,9 +229,8 @@ void wxVtkMPR2DView::SetVisibleAxis(bool ok)
                {
                        _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineAActor );
                        _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->RemoveActor( _lineBActor );
-               }
-
-       }
+               } // if visible
+       } // ok
 }
 
 //-------------------------------------------------------------------
@@ -236,17 +238,15 @@ 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,39 +259,36 @@ 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]);
-               
+               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());
-
+               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)) 
+               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)
                                {
@@ -306,6 +303,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)
@@ -321,6 +322,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)
@@ -338,17 +343,27 @@ 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 (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