]> Creatis software - bbtk.git/blobdiff - packages/wxvtk/src/bbwxvtkViewer2D.cxx
*** empty log message ***
[bbtk.git] / packages / wxvtk / src / bbwxvtkViewer2D.cxx
index 9db6a270cdd16abaa67d6c30d687caa7f292f73d..3f0e696306e056578933b6107110074441f5d6c1 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer2D.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/06/17 11:12:03 $
-  Version:   $Revision: 1.8 $
+  Date:      $Date: 2008/06/19 09:46:49 $
+  Version:   $Revision: 1.9 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -31,7 +31,8 @@
 #include "vtkInteractorStyleImage.h"
 #include "vtkCamera.h"
 #include "vtkRenderer.h"
-
+#include <vtkInteractorStyleImage.h>
+#include <vtkCommand.h>
 
 
 
@@ -53,19 +54,30 @@ namespace bbwxvtk
     wxvtkrenderwindowinteractor->UseCaptureMouseOn();  
 
     imageViewer        = vtkImageViewer2::New();
+       imageViewer->SetSlice( 1 );
     imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor );
     
     mDefaultImage = vtkImageData::New();
     int dim[3];
-    dim[0] = dim[1] = dim[2] = 1; 
+    dim[0] = dim[1] = 32 ; 
+       dim[2] = 2; 
     mDefaultImage->SetDimensions ( dim );
     mDefaultImage->SetSpacing(1,1,1);
+    mDefaultImage->SetExtent(0,dim[0]-1,0,dim[1]-1,0,dim[2]-1);
+    mDefaultImage->SetWholeExtent(0,dim[0]-1,0,dim[1]-1,0,dim[2]-1);
 
     mDefaultImage->SetScalarTypeToUnsignedChar();
     mDefaultImage->AllocateScalars();    
     for (int i=0;i<dim[0];i++) 
       for (int j=0;j<dim[1];j++) 
-       mDefaultImage->SetScalarComponentFromFloat(i,j,0,0,0);
+        for (int k=0;k<dim[2];k++) 
+       mDefaultImage->SetScalarComponentFromFloat(i,j,k,0,0);
+
+    for (int i=0;i<dim[0];i++) 
+       {
+         mDefaultImage->SetScalarComponentFromFloat(dim[0]-i-1,i,0,0,255);
+         mDefaultImage->SetScalarComponentFromFloat(i,i,1,0,255);
+       }
 
     backImageData = mDefaultImage;
     imageViewer->SetInput( backImageData );
@@ -112,6 +124,7 @@ namespace bbwxvtk
     //    std::cout << "Viewer2DWidget::UpdateView() "<<mBox->bbGetFullName() << std::endl;
     //   std::cout << "slice="<<mBox->bbGetInputSlice()<<std::endl;
 
+
     if ( ( mBox->bbGetInputIn() == NULL ) &&
         ( backImageData != mDefaultImage ) )
       {
@@ -140,9 +153,9 @@ namespace bbwxvtk
        
        vtkCamera *camera = imageViewer->GetRenderer()->GetActiveCamera();
 
-       camera->SetViewUp ( spx*0, -spy*1, spz*0);
-       camera->SetPosition( spx*(x1+x2)/2, spy*(y1+y2)/2, -spz*10000000); 
-       camera->SetFocalPoint   ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0); 
+       camera->SetViewUp ( spx*0, -spy*1, spz*0 );
+       camera->SetPosition( spx*(x1+x2)/2, spy*(y1+y2)/2, -spz*10000000 ); 
+       camera->SetFocalPoint   ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 ); 
 
        camera->ComputeViewPlaneNormal();
        camera->SetParallelScale(  spx*(x2-x1)/2.0 );
@@ -155,13 +168,15 @@ namespace bbwxvtk
     //    std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl;
     //    std::cout << "Sh = "<< mBox->bbIsShown() << std::endl;
     
+
+
     // mBox->bbIsShown() is necessary to be sure that the wxWindow is already 
     // created and displayed. 
     // Else when slice != 0 we get an X Window System error with wxGTK
     if (
        (backImageData!=NULL)&&
        (mBox->bbIsShown()))
-      {
+    {
        int z = mBox->bbGetInputSlice();
        //      std::cout << "slice = "<<z<<std::endl;
        int ext[6];
@@ -170,7 +185,7 @@ namespace bbwxvtk
        //      std::cout << "ext = "<<ext[4]<<" - "<<ext[5]<<std::endl;
 
        if (z<ext[4]) { z=ext[4]; }
-       if (z>=ext[5]) { z=ext[5]-1; }
+       if (z>ext[5]) { z=ext[5]; }
 
 
 #if (VTK_MAJOR_VERSION >= 5)
@@ -178,15 +193,22 @@ namespace bbwxvtk
 #else
        imageViewer->SetZSlice( z );
 #endif
-       wxvtkrenderwindowinteractor->Render();
 
-      }
+       //imageViewer->UpdateDisplayExtent();
+   //wxvtkrenderwindowinteractor->Render();
+    imageViewer->GetRenderer()->ResetCameraClippingRange();
+  }
 
-    
 
-  }
+
+}
 
 
+  vtkRenderer * Viewer2DWidget::GetRenderer()
+  {
+         return imageViewer->GetRenderer();
+  }
+
 
 
   //--------------------------------------------------------------------------
@@ -209,12 +231,15 @@ namespace bbwxvtk
 
     ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView();
     bbSetOutputOut( bbGetInputSlice() );
+       bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() );
+       
   }
   
 
   void Viewer2D::bbUserConstructor()
   {
-    bbSetInputIn(0);
+    bbSetInputIn(NULL);
+    bbSetInputSlice(0);
   }
 
   /**