libmoldeo (Moldeo 1.0 Core)  1.0
libmoldeo es el conjunto de objetos y funciones, que permiten ejecutar las operaciones básicas de la plataforma Moldeo, y que compone su núcleo.
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Amigas 'defines' Grupos Páginas
moTimer.cpp
Ir a la documentación de este archivo.
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