X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=PackRecalage%2Fsrc%2FbbPackRecalageImageSwitcherBox.cxx;h=65696f6904dc6c60cc190565ed2d6dfd91107c38;hb=68470a8245541c86222d3ef79648b0d038fe658c;hp=1c603f6c17b3b5cc2da47a47cd2490c4e7d5d43a;hpb=056c44ebcefce5a0c1d0b5cd162a63d5805df456;p=creaRigidRegistration.git diff --git a/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx b/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx index 1c603f6..65696f6 100644 --- a/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx +++ b/PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx @@ -4,28 +4,58 @@ 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; + } +} -BBTK_ADD_BLACK_BOX_TO_PACKAGE(PackRecalage,ImageSwitcherBox) -BBTK_BLACK_BOX_IMPLEMENTATION(ImageSwitcherBox,bbtk::WxBlackBox); void ImageSwitcherBox::Process() { time = bbGetInputTime(); - _on = bbGetInputOn(); + _on = bbGetInputOn(); + + if(firstTime == true) + { + if(bbGetInputIn1() != NULL) + { + bbSetOutputOut(bbGetInputIn1()); + firstTime = false; + } + else if(bbGetInputIn2() != NULL) + { + bbSetOutputOut(bbGetInputIn2()); + firstTime = false; + } + } if(myTimer == NULL) { @@ -34,27 +64,26 @@ void ImageSwitcherBox::Process() oldTime = time; } - if(oldTime != time && myTimer !=NULL) + if(!_on) { myTimer->Stop(); + } + else if(!myTimer->IsRunning()) + { myTimer->Start(time); oldTime = time; } - - if(change == false) + else if(oldTime != time) { - bbSetOutputOut(bbGetInputIn1()); - change = true; + myTimer->Stop(); + myTimer->Start(time); + oldTime=time; } - else - { - bbSetOutputOut(bbGetInputIn2()); - change = false; - } } 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() { @@ -62,7 +91,8 @@ void ImageSwitcherBox::bbUserSetDefaultValues() change = false; time = 500; oldTime = 500; - _on = false; + firstTime = true; + _on=false; } void ImageSwitcherBox::bbUserInitializeProcessing() {