X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwxvtk%2Fsrc%2FbbwxvtkViewer2D.cxx;h=e366505a15fe33dcccd1db67d19d5397b5b1cd95;hb=ae4497a19b957df306e688ce3f69c3687323668e;hp=e69580129d4281b954b367c773472069ee23553e;hpb=0278e44db6547b325fe00f4ffc5a9cabac5a8534;p=bbtk.git diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index e695801..e366505 100644 --- a/packages/wxvtk/src/bbwxvtkViewer2D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer2D.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxvtkViewer2D.cxx,v $ Language: C++ - Date: $Date: 2008/06/26 18:45:58 $ - Version: $Revision: 1.13 $ + Date: $Date: 2008/12/03 09:34:41 $ + Version: $Revision: 1.26 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -54,13 +54,13 @@ namespace bbwxvtk wxvtkrenderwindowinteractor->UseCaptureMouseOn(); imageViewer = vtkImageViewer2::New(); - imageViewer->SetSlice( 1 ); + imageViewer->SetSlice( 1 ); imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor ); mDefaultImage = vtkImageData::New(); int dim[3]; dim[0] = dim[1] = 32 ; - dim[2] = 2; + 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); @@ -84,15 +84,15 @@ namespace bbwxvtk mUpdateCamera = true; wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - sizer -> Add( wxvtkrenderwindowinteractor , 1, wxEXPAND, 0); - panel -> SetSizer(sizer); - panel -> SetAutoLayout(true); - panel -> Layout(); + sizer-> Add( wxvtkrenderwindowinteractor , 1, wxEXPAND, 0); + panel-> SetSizer(sizer); + panel-> SetAutoLayout(true); + panel-> Layout(); - wxvtkrenderwindowinteractor->Refresh(); - wxvtkrenderwindowinteractor->Render(); - imageViewer->GetRenderer()->ResetCameraClippingRange(); + // wxvtkrenderwindowinteractor->Refresh(); + // wxvtkrenderwindowinteractor->Render(); + // imageViewer->GetRenderer()->ResetCameraClippingRange(); } @@ -136,6 +136,7 @@ namespace bbwxvtk { backImageData = mDefaultImage; mUpdateCamera = true; + std::cout << "Viewer2DWidget::UpdateView() passe par 1" << std::endl; } else if ( ( mBox->bbGetInputIn() != NULL ) && (backImageData != mBox->bbGetInputIn()) ) @@ -144,6 +145,7 @@ namespace bbwxvtk backImageData->Update(); imageViewer->SetInput( backImageData ); mUpdateCamera = true; + std::cout << "Viewer2DWidget::UpdateView() passe par 2" << std::endl; } if (mUpdateCamera) @@ -159,23 +161,27 @@ 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 ); // // imageViewer->GetRenderer()->ResetCamera(x1,x2,y1,y2,z1,z2); mUpdateCamera = false; + std::cout << "Viewer2DWidget::UpdateView() passe par 3" << std::endl; } // std::cout << "OW = "<< mBox->bbGetWindow() << std::endl; - // std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl; - // std::cout << "Sh = "<< mBox->bbIsShown() << std::endl; + // std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl; + // std::cout << "Sh = "<< mBox->bbIsShown() << std::endl; - - + int orientation = mBox->bbGetInputOrientation(); + if (orientation<0 || orientation>2) { + bbtkMessage("Output", 2, "Viewer2D : Orientation was not 0< <2 "<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 @@ -190,20 +196,53 @@ namespace bbwxvtk // std::cout << "ext = "<ext[1]) { z=ext[1]; } + + break; + + case 1: + if (zext[3]) { z=ext[3]; } + break; + + case 2: if (zext[5]) { z=ext[5]; } + break; + + default: + bbtkMessage("Output", 2, "Viewer2D : Orientation was not 0< <2 (shouldn't arrive here!"<SetSliceOrientation (orientation); + // imageViewer->SetSlice( z ); + + // wxvtkrenderwindowinteractor->Update(); + // wxvtkrenderwindowinteractor->Render(); + // imageViewer->GetRenderer()->ResetCameraClippingRange(); + + //xvtkrenderwindowinteractor->Refresh(); + wxvtkrenderwindowinteractor->Render(); + imageViewer->GetRenderer()->ResetCameraClippingRange(); + imageViewer->SetSliceOrientation (orientation); + imageViewer->SetSlice( z ); - wxvtkrenderwindowinteractor->Update(); - wxvtkrenderwindowinteractor->Render(); - imageViewer->GetRenderer()->ResetCameraClippingRange(); - - +std::cout << "Viewer2DWidget::UpdateView() passe par 4" << std::endl; +/* #if (VTK_MAJOR_VERSION >= 5) imageViewer->SetSlice( z ); #else imageViewer->SetZSlice( z ); #endif - +*/ +// imageViewer->SetSliceOrientation (orientation); +// imageViewer->SetSlice( z ); + //imageViewer->UpdateDisplayExtent(); } @@ -235,11 +274,19 @@ namespace bbwxvtk // (see wxvtk/bbs/appli/ExampleSimpleSlicer) // I think there is a problem with rendering before window // has been reparented ... we have to check this - - ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView(); - bbSetOutputOut( bbGetInputSlice() ); - bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() ); - + +std::cout << "Viewer2D::Process() passe par 5" << std::endl; + + Viewer2DWidget* w = (Viewer2DWidget*)bbGetOutputWidget(); + + if (w) + { +std::cout << "Viewer2D::Process() passe par 6" << std::endl; + w->UpdateView(); + bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() ); + } + bbSetOutputOut( bbGetInputSlice() ); + } @@ -247,6 +294,8 @@ namespace bbwxvtk { bbSetInputIn(NULL); bbSetInputSlice(0); + bbSetOutputWidget(0); + bbSetInputOrientation(0); } /** @@ -254,27 +303,22 @@ namespace bbwxvtk * * */ - void Viewer2D::CreateWidget() + void Viewer2D::CreateWidget(wxWindow* parent) { - bbtkDebugMessageInc("Core",9,"Viewer2D::CreateWidget()"<Refresh(); - ((Viewer2DWidget*)bbGetOutputWidget())->Update(); - ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView(); -#endif + // ((Viewer2DWidget*)bbGetOutputWidget())->Update(); + // ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView(); }