]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/src/bbPackRecalageImageSwitcherBox.cxx
47215c4aebe7b6e9ad9830a3ce9fcc3509cd318b
[creaRigidRegistration.git] / PackRecalage / src / bbPackRecalageImageSwitcherBox.cxx
1 /*
2 # ---------------------------------------------------------------------
3 #
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
5 #                        pour la Santé)
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 #
8 #  This software is governed by the CeCILL-B license under French law and 
9 #  abiding by the rules of distribution of free software. You can  use, 
10 #  modify and/ or redistribute the software under the terms of the CeCILL-B 
11 #  license as circulated by CEA, CNRS and INRIA at the following URL 
12 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
13 #  or in the file LICENSE.txt.
14 #
15 #  As a counterpart to the access to the source code and  rights to copy,
16 #  modify and redistribute granted by the license, users are provided only
17 #  with a limited warranty  and the software's author,  the holder of the
18 #  economic rights,  and the successive licensors  have only  limited
19 #  liability. 
20 #
21 #  The fact that you are presently reading this means that you have had
22 #  knowledge of the CeCILL-B license and that you accept its terms.
23 # ------------------------------------------------------------------------   
24 */
25
26
27 #include "bbPackRecalageImageSwitcherBox.h"
28 #include "bbPackRecalagePackage.h"
29 namespace bbPackRecalage
30 {
31         MyTimer::MyTimer(ImageSwitcherBox *box): wxTimer()
32         {
33                 _box = box;             
34         }
35
36         MyTimer::~MyTimer()
37         {
38                 //delete this;
39         }
40
41         void MyTimer::Notify()
42         {
43                 //This will be called each time the timer finishes a countdown
44                 _box->Change();
45                 _box->bbSignalOutputModification(std::string("Out")); 
46         }       
47
48 BBTK_ADD_BLACK_BOX_TO_PACKAGE(PackRecalage,ImageSwitcherBox)
49 BBTK_BLACK_BOX_IMPLEMENTATION(ImageSwitcherBox,bbtk::WxBlackBox);
50
51 void ImageSwitcherBox::Change()
52 {
53         //Just changes the images each time the timer finishes a countdown
54         
55         if(change == false)
56         {
57                 bbSetOutputOut(bbGetInputIn2());                
58                 change = true;
59         }
60         else
61         {
62                 bbSetOutputOut(bbGetInputIn1());
63                 change = false;
64         }       
65 }
66
67 void ImageSwitcherBox::Process()
68 {
69         time = bbGetInputTime();
70         _on =  bbGetInputOn();
71
72         if(firstTime == true)
73         {
74                 if(bbGetInputIn1() != NULL)
75                 {
76                         bbSetOutputOut(bbGetInputIn1());
77                         firstTime = false;                      
78                 }
79                 else if(bbGetInputIn2() != NULL)
80                 {
81                         bbSetOutputOut(bbGetInputIn2());
82                         firstTime = false;                      
83                 }
84         }
85                 
86         if(myTimer == NULL)
87         {
88                 myTimer = new MyTimer(this);
89                 myTimer->Start(time);
90                 oldTime = time;
91         }
92         
93         if(!_on)
94         {
95                 myTimer->Stop();
96         }
97         else if(!myTimer->IsRunning())
98         {
99                 myTimer->Start(time);
100                 oldTime = time;
101         }
102         else if(oldTime != time)
103         {
104                 myTimer->Stop();
105                 myTimer->Start(time);
106                 oldTime=time;
107         }
108 }
109 void ImageSwitcherBox::CreateWidget(wxWindow* parent)
110 {
111         //Creates a simple text widget because it is necesary that a non-empty widget exists for creatingh the thread of the timer.
112         bbSetOutputWidget( new wxStaticText(parent, -1, _T("Image Switcher")) );        
113 }
114 void ImageSwitcherBox::bbUserSetDefaultValues()
115 {
116         myTimer = NULL;
117         change = false;
118         time = 500;
119         oldTime = 500;
120         firstTime = true;
121         _on=false;
122 }
123 void ImageSwitcherBox::bbUserInitializeProcessing()
124 {
125
126 }
127 void ImageSwitcherBox::bbUserFinalizeProcessing()
128 {
129         myTimer->Stop();
130         delete myTimer;
131 }
132 }
133 // EO namespace bbPackRecalage
134