]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR2DView.cxx
changes in viewers, now is possible to initialize them with out an image but the...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR2DView.cxx
index 7632ba2a798995be18786ddca6b3c5222e1e5188..b5279649f1df3dd5de6860d4c7c225bdc0d33018 100644 (file)
@@ -57,7 +57,15 @@ void wxVtkMPR2DView::Configure(){
        double spc[3];
        vtkImageData* img =  GetVtkmprbasedata()->GetImageData();
        if(img!=NULL){
+               double* origin = img->GetOrigin();
+               img->GetExtent(x1,x2,y1,y2,z1,z2);
                img->GetSpacing(spc);
+               x1 += origin[0];
+               x2 += origin[0];
+               y1 += origin[1];
+               y2 += origin[1];
+               z1 += origin[2];
+               z2 += origin[2];
                x1 = (int)(x1*spc[0]);
                y1 = (int)(y1*spc[1]);
                z1 = (int)(z1*spc[2]);
@@ -67,114 +75,124 @@ void wxVtkMPR2DView::Configure(){
                z2 = (int)(z2*spc[2]);
 
                _visibleAxis = true;
-
+       }
+       
        // Axe A
-               if(_lineAActor==NULL){
-                       _ptsA = vtkPoints::New();
-                       _ptsA->SetNumberOfPoints(2);
-                       _ptsA->SetPoint(0, -1000        , -1000 , -1000 );
-                       _ptsA->SetPoint(1,  1000        ,  1000 ,  1000 );
-                       vtkCellArray *linesA;
-                       linesA = vtkCellArray::New();
-                       linesA->InsertNextCell(2);
-                       linesA->InsertCellPoint(0);
-                       linesA->InsertCellPoint(1);
-                       _pdA = vtkPolyData::New();
-                       _pdA->SetPoints( _ptsA );
-                       _pdA->SetLines( linesA );
-                       linesA->Delete();  //do not delete lines ??
-                       _lineAActor                                             =       vtkActor::New();
-                       _lineAMapper                                    =       vtkPolyDataMapper::New();
-
-                       _lineAMapper->SetInput(_pdA);
-                       _lineAMapper->ImmediateModeRenderingOn();
-                       _lineAActor->SetMapper(_lineAMapper);
-       //              _lineAActor->GetProperty()->BackfaceCullingOn();
-                       _lineAActor->GetProperty()->SetDiffuseColor(1,0,0);
-                       _lineAActor->GetProperty()->SetLineWidth(2);
-                       _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
-               }
+       if(_lineAActor==NULL){
+               _lineAActor = vtkActor::New();
+               _lineAActor->GetProperty()->SetDiffuseColor(1,0,0);
+               _lineAActor->GetProperty()->SetLineWidth(2);
+               
+               _ptsA = vtkPoints::New();
+               _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);
+               
+               _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineAActor );
+       }       
+       
+       vtkCellArray *linesA = vtkCellArray::New();
+       linesA->InsertNextCell(2);
+       linesA->InsertCellPoint(0);
+       linesA->InsertCellPoint(1);
+       _pdA->SetPoints( _ptsA );
+       _pdA->SetLines( linesA );
+       linesA->Delete();  //do not delete lines ??
+//             _lineAActor->GetProperty()->BackfaceCullingOn();
+       
+       
+
 
+       
 
+// Axe B
+       if(_lineBActor==NULL){
+               _lineBActor                                             =       vtkActor::New();
+               _lineBActor->GetProperty()->SetDiffuseColor(1,0,0);
+               _lineBActor->GetProperty()->SetLineWidth(2);
+               _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();
+               
+               _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
+       }
+       
+       vtkCellArray *linesB;
+       linesB = vtkCellArray::New();
+       linesB->InsertNextCell(2);
+       linesB->InsertCellPoint(0);
+       linesB->InsertCellPoint(1);
+       _pdB = vtkPolyData::New();
+       _pdB->SetPoints( _ptsB );
+       _pdB->SetLines( linesB );
+       linesB->Delete();  //do not delete lines ??
+       
+       
+       _lineBMapper->SetInput(_pdB);
+       _lineBMapper->ImmediateModeRenderingOn();
 
-       // Axe B
-               if(_lineBActor==NULL){
-                       _ptsB = vtkPoints::New();
-                       _ptsB->SetNumberOfPoints(2);
-                       _ptsB->SetPoint(0, -1000        , -1000 , -1000 );
-                       _ptsB->SetPoint(1,  1000        ,  1000 ,  1000 );
-                       vtkCellArray *linesB;
-                       linesB = vtkCellArray::New();
-                       linesB->InsertNextCell(2);
-                       linesB->InsertCellPoint(0);
-                       linesB->InsertCellPoint(1);
-                       _pdB = vtkPolyData::New();
-                       _pdB->SetPoints( _ptsB );
-                       _pdB->SetLines( linesB );
-                       linesB->Delete();  //do not delete lines ??
-                       _lineBActor                                             =       vtkActor::New();
-                       _lineBMapper                                    =       vtkPolyDataMapper::New();
-                       _lineBMapper->SetInput(_pdB);
-                       _lineBMapper->ImmediateModeRenderingOn();
-                       _lineBActor->SetMapper(_lineBMapper);
-       //              _lineBActor->GetProperty()->BackfaceCullingOn();
-                       _lineBActor->GetProperty()->SetDiffuseColor(1,0,0);
-                       _lineBActor->GetProperty()->SetLineWidth(2);
-                       _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->AddActor( _lineBActor );
-               }
 
+       vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
        
-               vtkCamera *camera =_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->GetActiveCamera();
-               
 //EED 17Avril2009
 /*             
-               if (_direction==0) {
-                       camera->SetViewUp               (   0   ,    -1         ,     0         );
-                       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==0) {
+               camera->SetViewUp               (   0   ,    -1         ,     0         );
+               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) { 
-                       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==1) { 
+               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) { 
-                       camera->SetViewUp               (       0               ,       -1              ,       0       );
-                       camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     , -10000); 
-                       camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       ); 
-                       camera->SetParallelScale( (x2-x1)/3.0 );
-               }
- */
+       if (_direction==2) { 
+               camera->SetViewUp               (       0               ,       -1              ,       0       );
+               camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     , -10000); 
+               camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       ); 
+               camera->SetParallelScale( (x2-x1)/3.0 );
+       }
+*/
 
-               if (_direction==0) {    // YZ
-                       camera->SetViewUp               (   0   ,     1         ,     0         );
-                       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
-                       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
-                       camera->SetViewUp               (       0               ,       1               ,       0       );
-                       camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     ,  10000); 
-                       camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       ); 
-                       camera->SetParallelScale( (x2-x1)/3.0 );
-               }
-               
-               
-               
+       if (_direction==0) {    // YZ
+               camera->SetViewUp               (   0   ,     1         ,     0         );
+               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
+               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
+               camera->SetViewUp               (       0               ,       1               ,       0       );
+               camera->SetPosition             ((x1+x2)/2      , (y1+y2)/2     ,  10000); 
+               camera->SetFocalPoint   ((x1+x2)/2      , (y1+y2)/2     ,       0       ); 
+               camera->SetParallelScale( (x2-x1)/3.0 );
        }
+       
 
 //     _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow (160);
 //     _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel (800);
@@ -211,24 +229,36 @@ void wxVtkMPR2DView::Refresh()
 
 
 
-       int x1,x2,y1,y2,z1,z2;
-       GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
-       double spc[3];
+       int x1 = 0,x2 = 0,y1 = 0,y2 = 0,z1 = 0,z2 = 0, x = 0, y = 0, z = 0;
+       double *spc = 0;
+       double *origin = 0;
+       
+       
+       //GetVtkmprbasedata()->GetDimensionExtention(&x1,&x2,&y1,&y2,&z1,&z2);
+       
        
        vtkImageData* img = GetVtkmprbasedata()->GetImageData();
        if(img!=NULL){
-               img->GetSpacing(spc);
-               x1 =  (int)(x1*spc[0]);
-               y1 =  (int)(y1*spc[1]);
-               z1 =  (int)(z1*spc[2]);
+               origin = img->GetOrigin();
+               img->GetExtent(x1,x2,y1,y2,z1,z2);
+               spc = img->GetSpacing();
+               x1 += origin[0];
+               x2 += origin[0];
+               y1 += origin[1];
+               y2 += origin[1];
+               z1 += origin[2];
+               z2 += origin[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]);
+               x2 = (int)(x2*spc[0]);
+               y2 = (int)(y2*spc[1]);
+               z2 = (int)(z2*spc[2]);
 
-               int x = (int)(GetVtkmprbasedata()->GetX());
-               int y = (int)(GetVtkmprbasedata()->GetY());
-               int z = (int)(GetVtkmprbasedata()->GetZ());
+               x = (int)(GetVtkmprbasedata()->GetX());
+               y = (int)(GetVtkmprbasedata()->GetY());
+               z = (int)(GetVtkmprbasedata()->GetZ());
 
                x =  (int)(x*spc[0]);
                y =  (int)(y*spc[1]);