X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwxvtk%2Fsrc%2FbbwxvtkViewer2D.cxx;h=caa2d4029cf46bbe56be3c114681ab2996ddb1f2;hb=4e639a77332569de9321dc84c7788811828d4711;hp=3e284eb9a4f40961eeac7b82b57273cf2edaf5e7;hpb=bfd7e9034cbfd9c535e98ccb302c08e5e42da8c6;p=bbtk.git diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index 3e284eb..caa2d40 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/12/11 09:50:38 $ - Version: $Revision: 1.31 $ + Date: $Date: 2009/09/17 11:17:18 $ + Version: $Revision: 1.38 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,8 +21,8 @@ */ -#ifdef _USE_WXWIDGETS_ - +#ifdef USE_WXWIDGETS +#ifdef USE_VTK #include "bbwxvtkViewer2D.h" #include "bbwxvtkPackage.h" @@ -33,15 +33,9 @@ #include "vtkRenderer.h" #include #include - - - +#include namespace bbwxvtk { - - - - //-------------------------------------------------------------------------- class Viewer2DWidget : public wxPanel { @@ -50,6 +44,7 @@ namespace bbwxvtk ~Viewer2DWidget(); void UpdateView(); vtkRenderer *GetRenderer(); + vtkImageActor *GetImageActor(); private: bool mFirstTime; Viewer2D *mBox; @@ -80,7 +75,7 @@ namespace bbwxvtk mDefaultImage = vtkImageData::New(); int dim[3]; - dim[0] = dim[1] = 32 ; + dim[0] = dim[1] = 256 ; dim[2] = 2; mDefaultImage->SetDimensions ( dim ); mDefaultImage->SetSpacing(1,1,1); @@ -92,23 +87,35 @@ namespace bbwxvtk for (int i=0;iSetScalarComponentFromFloat(i,j,k,0,0); + mDefaultImage->SetScalarComponentFromFloat(i,j,k,0,0); for (int i=0;iSetScalarComponentFromFloat(dim[0]-i-1,i,0,0,255); - mDefaultImage->SetScalarComponentFromFloat(i,i,1,0,255); - } + { + /* + mDefaultImage->SetScalarComponentFromFloat(i,0,0,0,255); + mDefaultImage->SetScalarComponentFromFloat(i,dim[1]-1,0,0,255); + mDefaultImage->SetScalarComponentFromFloat(0,i,0,0,255); + mDefaultImage->SetScalarComponentFromFloat(dim[0]-1,i,0,0,255); + mDefaultImage->SetScalarComponentFromFloat(i,0,1,0,255); + mDefaultImage->SetScalarComponentFromFloat(i,dim[1]-1,1,0,255); + mDefaultImage->SetScalarComponentFromFloat(0,i,1,0,255); + mDefaultImage->SetScalarComponentFromFloat(dim[0]-1,i,1,0,255); + */ + mDefaultImage->SetScalarComponentFromFloat(i,i,0,0,255); + mDefaultImage->SetScalarComponentFromFloat(i,dim[1]-i-1,0,0,255); + mDefaultImage->SetScalarComponentFromFloat(i,i,1,0,255); + mDefaultImage->SetScalarComponentFromFloat(i,dim[1]-i-1,1,0,255); + } backImageData = mDefaultImage; imageViewer->SetInput( backImageData ); 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(); @@ -141,40 +148,38 @@ namespace bbwxvtk delete wxvtkrenderwindowinteractor; // std::cout << "Viewer2DWidget::~Viewer2DWidget() OK" << std::endl; } - - //------------------------------------------------------------------------- - + //------------------------------------------------------------------------- void Viewer2DWidget::UpdateView() { // std::cout << "Viewer2DWidget::UpdateView() " << std::endl; - // std::cout << "slice="<bbGetInputSlice()<bbGetInputIn() != NULL ) && (( mBox->bbGetInputStatus("In") != bbtk::UPTODATE ) || ( mFirstTime)) ) //(backImageData != mBox->bbGetInputIn()) ) - { - - // std::cout << "** Viewer2DWidget::UpdateView() : Input changed" <bbGetInputIn(); - backImageData->Update(); - imageViewer->SetInput( backImageData ); - mUpdateCamera = true; + if (backImageData != mBox->bbGetInputIn()) // Don't update if just Slice changed + { + backImageData = mBox->bbGetInputIn(); + backImageData->Update(); + imageViewer->SetInput( backImageData ); + mUpdateCamera = true; + } } if (mUpdateCamera) @@ -221,16 +226,24 @@ namespace bbwxvtk << std::endl; */ } - + // std::cout << "OW = "<< mBox->bbGetWindow() << std::endl; // std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl; // std::cout << "Sh = "<< mBox->bbIsShown() << std::endl; + + bool interp = mBox->bbGetInputInterpolate(); + if ( interp ) + imageViewer->GetImageActor()->InterpolateOn(); + else + imageViewer->GetImageActor()->InterpolateOff(); + 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 @@ -239,7 +252,6 @@ namespace bbwxvtk (mBox->bbIsShown())) { int z = mBox->bbGetInputSlice(); - // std::cout << "slice = "<GetWholeExtent(ext); /* @@ -275,9 +287,7 @@ namespace bbwxvtk imageViewer->SetSliceOrientation (orientation); imageViewer->SetSlice( z ); - } - - + } } @@ -297,7 +307,29 @@ namespace bbwxvtk BBTK_ADD_BLACK_BOX_TO_PACKAGE(wxvtk,Viewer2D); BBTK_BLACK_BOX_IMPLEMENTATION(Viewer2D,bbtk::WxBlackBox); - + + //----------------------------------------------------------------- + void Viewer2D::bbUserSetDefaultValues() + { + bbSetInputIn(NULL); + bbSetInputInterpolate(true); // JP + bbSetInputSlice(0); + bbSetOutputWidget(0); + bbSetOutputRenderer(0); + bbSetInputOrientation(2); + } + + //----------------------------------------------------------------- + void Viewer2D::bbUserInitializeProcessing() + { + } + + //----------------------------------------------------------------- + void Viewer2D::bbUserFinalizeProcessing() + { + } + + //-------------------------------------------------------------------------- void Viewer2D::Process() { // std::cout << "Viewer2D::Process" << std::endl; @@ -308,28 +340,19 @@ namespace bbwxvtk { w->UpdateView(); } - bbSetOutputOut( bbGetInputSlice() ); - + bbSetOutputOut( bbGetInputSlice() ); } - void Viewer2D::bbUserConstructor() - { - bbSetInputIn(NULL); - bbSetInputSlice(0); - bbSetOutputWidget(0); - bbSetOutputRenderer(0); - bbSetInputOrientation(2); - } + //-------------------------------------------------------------------------- void Viewer2D::CreateWidget(wxWindow* parent) { Viewer2DWidget* w = new Viewer2DWidget(this,parent); w->UpdateView(); bbSetOutputWidget(w); bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() ); - } @@ -337,4 +360,5 @@ namespace bbwxvtk }//namespace bbtk #endif +#endif