X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=PackRecalage%2Fsrc%2FbbPackRecalageImageSwitcherBox.cxx;h=dda210b5eb67a20a8f616254c59cd75220021c99;hb=33d81dfd1f8005314ce0a656c1d9819121af310d;hp=c5eee38fd2f570b769e6fc72512dd6737a57d11b;hpb=deb98a98f9b2006b9f21f2bd953efa369ce31939;p=creaRigidRegistration.git diff --git a/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx b/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx index c5eee38..dda210b 100644 --- a/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx +++ b/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx @@ -1,71 +1,132 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# +# 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. +# ------------------------------------------------------------------------ +*/ + + #include "bbPackRecalageImageSwitcherBox.h" #include "bbPackRecalagePackage.h" namespace bbPackRecalage { MyTimer::MyTimer(ImageSwitcherBox *box): wxTimer() { - _box = box; + _box = box; } MyTimer::~MyTimer() { + //delete this; } void MyTimer::Notify() { - _box->Process(); - } - - + //This will be called each time the timer finishes a countdown + _box->Change(); + _box->bbSignalOutputModification(std::string("Out")); + } BBTK_ADD_BLACK_BOX_TO_PACKAGE(PackRecalage,ImageSwitcherBox) BBTK_BLACK_BOX_IMPLEMENTATION(ImageSwitcherBox,bbtk::WxBlackBox); + +void ImageSwitcherBox::Change() +{ + //Just changes the images each time the timer finishes a countdown + + if(change == false) + { + bbSetOutputOut(bbGetInputIn2()); + change = true; + } + else + { + bbSetOutputOut(bbGetInputIn1()); + change = false; + } +} + void ImageSwitcherBox::Process() { time = bbGetInputTime(); - + _on = bbGetInputOn(); + + if(firstTime == true) + { + firstTime = false; + if(bbGetInputIn1() != NULL) + { + bbSetOutputOut(bbGetInputIn1()); + } else if(bbGetInputIn2() != NULL) { + bbSetOutputOut(bbGetInputIn2()); + } + } + if(myTimer == NULL) { myTimer = new MyTimer(this); myTimer->Start(time); oldTime = time; } - else if(oldTime != time) + + if(!_on) { + myTimer->Stop(); + } else if(!myTimer->IsRunning()) { myTimer->Start(time); oldTime = time; - } - - if(change == false) - { - bbSetOutputOut(bbGetInputIn1()); - change = true; - } - else - { - bbSetOutputOut(bbGetInputIn2()); - change = false; + } else if(oldTime != time) { + myTimer->Stop(); + myTimer->Start(time); + oldTime=time; } } + + void ImageSwitcherBox::CreateWidget(wxWindow* parent) { - bbSetOutputWidget( new wxButton ( parent , -1 , _T("Start/Stop Image Change") ) ); + //Creates a simple text widget because it is necesary that a non-empty widget exists for creatingh the thread of the timer. + bbSetOutputWidget( new wxStaticText(parent, -1, _T("Image Switcher")) ); } + + void ImageSwitcherBox::bbUserSetDefaultValues() { - myTimer = NULL; - change = false; - time = -1; - oldTime = -1; + myTimer = NULL; + change = false; + time = 150; + oldTime = 150; + bbSetInputTime(time); + firstTime = true; + _on = false; } void ImageSwitcherBox::bbUserInitializeProcessing() { - } + void ImageSwitcherBox::bbUserFinalizeProcessing() { myTimer->Stop(); delete myTimer; } -} -// EO namespace bbPackRecalage \ No newline at end of file + +} // EO namespace bbPackRecalage +