X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwxvtk%2Fsrc%2FbbwxvtkViewer2D.cxx;h=731d4978e9df71f99fa2d2004a4633082ec760e1;hb=e7e2b2d876b585350b2f993b0866454cc5aa704a;hp=26a1f9fbd222d4c7b4b43e48b29399229aadf092;hpb=510cbb97551ad78ab9e2cb2ac1a956fbcc5020b0;p=bbtk.git diff --git a/packages/wxvtk/src/bbwxvtkViewer2D.cxx b/packages/wxvtk/src/bbwxvtkViewer2D.cxx index 26a1f9f..731d497 100644 --- a/packages/wxvtk/src/bbwxvtkViewer2D.cxx +++ b/packages/wxvtk/src/bbwxvtkViewer2D.cxx @@ -1,18 +1,37 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + /*========================================================================= Program: bbtk Module: $RCSfile: bbwxvtkViewer2D.cxx,v $ Language: C++ - Date: $Date: 2008/12/15 13:13:49 $ - Version: $Revision: 1.33 $ - - Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de - l'Image). All rights reserved. See Doc/License.txt or - http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. + Date: $Date: 2012/11/16 08:52:36 $ + Version: $Revision: 1.39 $ =========================================================================*/ /** @@ -24,7 +43,6 @@ #ifdef USE_WXWIDGETS #ifdef USE_VTK - #include "bbwxvtkViewer2D.h" #include "bbwxvtkPackage.h" //#include @@ -34,15 +52,9 @@ #include "vtkRenderer.h" #include #include - - - +#include namespace bbwxvtk { - - - - //-------------------------------------------------------------------------- class Viewer2DWidget : public wxPanel { @@ -51,6 +63,7 @@ namespace bbwxvtk ~Viewer2DWidget(); void UpdateView(); vtkRenderer *GetRenderer(); + vtkImageActor *GetImageActor(); private: bool mFirstTime; Viewer2D *mBox; @@ -93,7 +106,7 @@ namespace bbwxvtk for (int i=0;iSetScalarComponentFromFloat(i,j,k,0,0); + mDefaultImage->SetScalarComponentFromFloat(i,j,k,0,0); for (int i=0;i 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(); @@ -154,40 +167,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) @@ -234,16 +245,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 @@ -252,7 +271,6 @@ namespace bbwxvtk (mBox->bbIsShown())) { int z = mBox->bbGetInputSlice(); - // std::cout << "slice = "<GetWholeExtent(ext); /* @@ -288,9 +306,7 @@ namespace bbwxvtk imageViewer->SetSliceOrientation (orientation); imageViewer->SetSlice( z ); - } - - + } } @@ -310,7 +326,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; @@ -321,28 +359,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() ); - }