libmoldeo (Moldeo 1.0 Core)  1.0
libmoldeo is the group of objects and functions that executes the basic operations of Moldeo 1.0 Platform.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
moTimer.cpp
Go to the documentation of this file.
1 #include "moTimer.h"
2 
3 #ifdef MO_WIN32
4  #include "boost\date_time\posix_time\posix_time.hpp"
5 #else
6  #include "boost/date_time/posix_time/posix_time.hpp"
7 #endif
8 
9 using namespace boost::posix_time;
10 
11 static long virtual_total_milliseconds = 0;
12 
15 MOulong moGetTicksAbsolute( bool force_real_absolute ) {
16 
17  if (!force_real_absolute && virtual_total_milliseconds>0) {
18  return virtual_total_milliseconds;
19  }
20 
21  ptime t( microsec_clock::local_time() );
22 
23  time_duration clockt = t.time_of_day();
24 
25  return clockt.total_milliseconds();
26 }
27 
28 MOulong moResetTicksAbsoluteStep( long reset_value ) {
29  virtual_total_milliseconds = reset_value;
30  return virtual_total_milliseconds;
31 }
32 
33 MOulong moGetTicksAbsoluteStep( long step_interval ) {
34 
35  virtual_total_milliseconds+= step_interval;
36 
37  return virtual_total_milliseconds;
38 }
39 
40 
41 
42 
43 #include "moArray.h"
44 moDefineDynamicArray( moTimers )
45 
46 static moTimerAbsolute* GlobalMoldeoTimer = new moTimerAbsolute();
47 
48 moTimerAbsolute::moTimerAbsolute() {
49  on = false;
50  pause_on = false;
51  start_tick = 0;
52  start_last = 0;
53  duration = 0;
54 }
55 
57  (*this) = src;
58 }
59 
61 }
62 
65  on = src.on;
66  pause_on = src.pause_on;
67  start_tick = src.start_tick;
68  start_last = src.start_last;
69  duration = src.duration;
70  last_duration = src.last_duration;
71  return (*this);
72 }
73 
74 
76  on = true;
77  pause_on = false;
78  start_tick = moGetTicksAbsolute();
79 }
80 
82  if (on) {
83  start_last = moGetTicksAbsolute();
84  last_duration = duration;
85  if (!pause_on) duration = start_last - start_tick;
86  else start_tick = start_last - last_duration;
87  } else duration = 0;
88  return duration;
89 }
90 
91 
93  start_tick = moGetTicksAbsolute()-p_timecode;
94  start_last = moGetTicksAbsolute();
95  duration = p_timecode;
96  last_duration = duration;
97 }
98 
99 
102 
103  if ( Paused() ) {
104  return MO_TIMERSTATE_PAUSED;
105  } else if ( Started() ) {
106  return MO_TIMERSTATE_PLAYING;
107  }
108  return MO_TIMERSTATE_STOPPED;
109 }
110 
111 
112 void moStartTimer() {
113  GlobalMoldeoTimer->Start();
114 }
115 
116 void moPauseTimer() {
117  GlobalMoldeoTimer->Pause();
118 }
119 
121  GlobalMoldeoTimer->Continue();
122 }
123 
124 void moStopTimer() {
125  GlobalMoldeoTimer->Stop();
126 }
127 
128 void moSetDuration( MOulong p_timecode ) {
129  long test = 0;
130  test = p_timecode;
131  GlobalMoldeoTimer->SetDuration( test );
132 }
133 
135  return GlobalMoldeoTimer->Duration();
136 }
137 
139  return GlobalMoldeoTimer->Duration();
140 }
141 
142 
144  return GlobalMoldeoTimer->State();
145 }
146 
148  return GlobalMoldeoTimer->StateToStr();
149 }
150 
151 
153  return GlobalMoldeoTimer->State()==MO_TIMERSTATE_PAUSED;
154 }
155 
156 
158  return GlobalMoldeoTimer->State()==MO_TIMERSTATE_STOPPED;
159 }
160 
162  return !moIsTimerStopped();
163 }
164 
166  return GlobalMoldeoTimer->State()==MO_TIMERSTATE_PLAYING;
167 }
168 
169 
170 //==================
171 // CLASS moTimer
172 //===================
173 
175  m_TimerId = -1;
176  m_ObjectId = -1;
177  m_pRelativeTimer = NULL;
178 }
179 
181  *this = src;
182 }
183 
185 }
186 
187 moTimer&
189  (moTimerAbsolute&)(*this)=(moTimerAbsolute&)src;
190  m_TimerId = src.m_TimerId;
191  m_ObjectId = src.m_ObjectId;
192  m_pRelativeTimer = src.m_pRelativeTimer;
193  return *this;
194 }
195 
196 void moTimer::Start() {
197  on = true;
198  pause_on = false;
199  duration = 0;
201 
202  if (m_pRelativeTimer)
203  {
204  start_tick = m_pRelativeTimer->Duration();
205  } else {
207  }
208 
209 }
210 
212 
213  if (on) {
214  //esta vez devuelve el Duration del GlobalMoldeoTimer....
216 
217  if (m_pRelativeTimer)
218  {
219  if (m_pRelativeTimer->Started()) {
220  start_last = m_pRelativeTimer->Duration();
221  } else {
222  start_last = 0;
223  start_tick = 0;
224  duration = 0;
226  }
227 
228  }
229  else
230  {
231  if (moIsTimerStarted()) {
233  } else {
234  start_last = 0;
235  start_tick = 0;
236  duration = 0;
238  }
239  }
240 
241 
243  else start_tick = start_last - last_duration;
244  } else duration = 0;
245 
246  return duration;
247 }
248 
249 void moTimer::SetDuration( MOulong p_timecode ) {
250  if (m_pRelativeTimer) {
251  start_tick = m_pRelativeTimer->Duration()-p_timecode;
252  start_last = m_pRelativeTimer->Duration();
253  } else {
254  start_tick = moGetTicks()-p_timecode;
256  }
257 
258  duration = p_timecode;
260 }
261 
262 void moTimer::Fix() {
263  if (m_pRelativeTimer) {
264  start_tick = m_pRelativeTimer->Duration();
265  } else {
267  }
268 
269 }
270 
moTimerAbsolute()
Constructor.
Definition: moTimer.cpp:48
bool moIsTimerStopped()
Devuelve verdadero si el temporizador global está detenido.
Definition: moTimer.cpp:157
#define MOulong
Definition: moTypes.h:392
virtual void SetDuration(MOulong p_timecode)
Fija el valor del reloj del temporizador.
Definition: moTimer.cpp:249
long last_duration
Definition: moTimer.h:304
virtual void SetDuration(MOulong p_timecode)
Fija el valor del reloj del temporizador.
Definition: moTimer.cpp:92
virtual void Start()
Inicia el temporizador.
Definition: moTimer.cpp:196
virtual long Duration()
Devuelve el valor del reloj del temporizador.
Definition: moTimer.cpp:81
virtual long Duration()
Devuelve el valor del reloj del temporizador.
Definition: moTimer.cpp:211
moTimerAbsolute & operator=(const moTimerAbsolute &src)
Definition: moTimer.cpp:64
virtual ~moTimer()
Definition: moTimer.cpp:184
void moContinueTimer()
Continua luego de una pausa el temporizador global.
Definition: moTimer.cpp:120
virtual moTimerState State() const
Definition: moTimer.cpp:101
MOulong moGetDuration()
Devuelve el valor del reloj del temporizador global.
Definition: moTimer.cpp:134
long start_tick
Definition: moTimer.h:299
MOulong moGetTicksAbsolute(bool force_real_absolute)
Devuelve en milisegundos el valor del reloj de Moldeo.
Definition: moTimer.cpp:15
bool moIsTimerStarted()
Devuelve verdadero si el temporizador global se encuentra iniciado.
Definition: moTimer.cpp:161
clase de para manejar textos
Definition: moText.h:75
void Fix()
Corrige el reloj.
Definition: moTimer.cpp:262
Parado, Detenido.
Definition: moTimer.h:77
void moStopTimer()
Detiene el temporizador global.
Definition: moTimer.cpp:124
void moSetDuration(MOulong p_timecode)
Fija el valor del reloj del temporizador global.
Definition: moTimer.cpp:128
moTimerState
Estado del temporizador.
Definition: moTimer.h:75
void moStartTimer()
Inicia el temporizador global.
Definition: moTimer.cpp:112
moTimerState moGetTimerState()
Devuelve el estado del temporizador global.
Definition: moTimer.cpp:143
MOulong moGetTicksAbsoluteStep(long step_interval)
Devuelve en milisegundos el valor del reloj de Moldeo.
Definition: moTimer.cpp:33
bool moIsTimerPlaying()
Devuelve verdadero si el temporizador global se encuentra corriendo.
Definition: moTimer.cpp:165
MOulong moResetTicksAbsoluteStep(long reset_value)
Definition: moTimer.cpp:28
moTimer & operator=(const moTimer &src)
Definition: moTimer.cpp:188
bool moIsTimerPaused()
Devuelve verdadero si el temporizador global está en pausa.
Definition: moTimer.cpp:152
Corriendo.
Definition: moTimer.h:78
long start_last
Definition: moTimer.h:300
virtual void Start()
Inicia el temporizador.
Definition: moTimer.cpp:75
void moPauseTimer()
Pausa el temporizador global.
Definition: moTimer.cpp:116
Clase para el control de un temporizador (relativo) con identificación
Definition: moTimer.h:321
moTimer()
Constructor.
Definition: moTimer.cpp:174
moText moGetTimerStateStr()
Definition: moTimer.cpp:147
bool Started() const
Devuelve el estado del temporizador.
Definition: moTimer.h:248
virtual ~moTimerAbsolute()
Definition: moTimer.cpp:60
Clase para el control de un temporizador (absoluto)
Definition: moTimer.h:183
moDefineDynamicArray(moTimers) static moTimerAbsolute *GlobalMoldeoTimer
MOulong moGetTicks()
Devuelve en milisegundos el valor del reloj de Moldeo.
Definition: moTimer.cpp:138