X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwxvtk%2Fsrc%2FbbwxvtkViewer2D.cxx;h=e366505a15fe33dcccd1db67d19d5397b5b1cd95;hb=ae4497a19b957df306e688ce3f69c3687323668e;hp=6cf958807a7ac6f646a7b24f40b9566e7b7631a2;hpb=62f21094493592cc2ccf1f105db791fb0ebbe2d0;p=bbtk.git diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index 6cf9588..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 07:37:18 $ - Version: $Revision: 1.12 $ + 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,11 +84,17 @@ 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(); + + } //------------------------------------------------------------------------- @@ -130,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()) ) @@ -138,6 +145,7 @@ namespace bbwxvtk backImageData->Update(); imageViewer->SetInput( backImageData ); mUpdateCamera = true; + std::cout << "Viewer2DWidget::UpdateView() passe par 2" << std::endl; } if (mUpdateCamera) @@ -153,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 @@ -184,21 +196,55 @@ 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 ); + +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(); - // wxvtkrenderwindowinteractor->Render(); - imageViewer->GetRenderer()->ResetCameraClippingRange(); - } - + } } @@ -228,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() ); + } @@ -240,6 +294,8 @@ namespace bbwxvtk { bbSetInputIn(NULL); bbSetInputSlice(0); + bbSetOutputWidget(0); + bbSetInputOrientation(0); } /** @@ -247,24 +303,22 @@ namespace bbwxvtk * * */ - void Viewer2D::CreateWidget() + void Viewer2D::CreateWidget(wxWindow* parent) { - bbtkDebugMessageInc("Core",9,"Viewer2D::CreateWidget()"<Refresh(); - ((Viewer2DWidget*)bbGetOutputWidget())->Update(); - ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView(); + // ((Viewer2DWidget*)bbGetOutputWidget())->Update(); + // ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView(); }