1999-11-12 14:19:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: wx/timer.h
|
|
|
|
// Purpose: wxTimer class and global time-related functions
|
|
|
|
// Author: Julian Smart
|
|
|
|
// Modified by:
|
|
|
|
// Created: 04/01/98
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Copyright: (c) Julian Smart and Markus Holzem
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
1998-08-14 20:23:28 -04:00
|
|
|
#ifndef _WX_TIMER_H_BASE_
|
|
|
|
#define _WX_TIMER_H_BASE_
|
1998-05-20 10:01:55 -04:00
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma interface "timerbase.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "wx/object.h"
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// wxTimer
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
// the interface of wxTimer class
|
|
|
|
class WXDLLEXPORT wxTimerBase : public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
wxTimerBase() { m_oneShot = FALSE; m_milli = 0; }
|
|
|
|
|
|
|
|
// working with the timer
|
|
|
|
// ----------------------
|
|
|
|
|
|
|
|
// start the timer: if milliseconds == -1, use the same value as for the
|
|
|
|
// last Start()
|
|
|
|
virtual bool Start(int milliseconds = -1, bool oneShot = FALSE)
|
|
|
|
{
|
|
|
|
if ( milliseconds != -1 )
|
|
|
|
{
|
|
|
|
m_milli = milliseconds;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_oneShot = oneShot;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// stop the timer
|
|
|
|
virtual void Stop() = 0;
|
|
|
|
|
|
|
|
// override this in your wxTimer-derived class
|
|
|
|
virtual void Notify() = 0;
|
|
|
|
|
|
|
|
// getting info
|
|
|
|
// ------------
|
|
|
|
|
|
|
|
// return TRUE if the timer is running
|
|
|
|
virtual bool IsRunning() const = 0;
|
|
|
|
|
|
|
|
// get the (last) timer interval in the milliseconds
|
|
|
|
int GetInterval() const { return m_milli; }
|
|
|
|
|
|
|
|
// return TRUE if the timer is one shot
|
|
|
|
bool IsOneShot() const { return m_oneShot; }
|
|
|
|
|
|
|
|
#if WXWIN_COMPATIBILITY_2
|
|
|
|
// deprecated functions
|
|
|
|
int Interval() const { return GetInterval(); };
|
|
|
|
bool OneShot() const { return IsOneShot(); }
|
|
|
|
#endif // WXWIN_COMPATIBILITY_2
|
|
|
|
|
|
|
|
protected:
|
|
|
|
int m_milli; // the timer interval
|
|
|
|
bool m_oneShot; // TRUE if one shot
|
|
|
|
};
|
|
|
|
|
1998-07-10 10:15:17 -04:00
|
|
|
#if defined(__WXMSW__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/msw/timer.h"
|
1998-07-10 10:15:17 -04:00
|
|
|
#elif defined(__WXMOTIF__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/motif/timer.h"
|
1998-07-10 10:15:17 -04:00
|
|
|
#elif defined(__WXGTK__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/gtk/timer.h"
|
1998-08-07 16:23:17 -04:00
|
|
|
#elif defined(__WXQT__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/qt/timer.h"
|
1998-08-14 20:23:28 -04:00
|
|
|
#elif defined(__WXMAC__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/mac/timer.h"
|
1999-07-27 23:38:12 -04:00
|
|
|
#elif defined(__WXPM__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/os2/timer.h"
|
1998-08-14 20:23:28 -04:00
|
|
|
#elif defined(__WXSTUBS__)
|
1999-11-12 14:19:38 -05:00
|
|
|
#include "wx/stubs/timer.h"
|
1998-05-20 10:01:55 -04:00
|
|
|
#endif
|
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// wxStopWatch
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
class WXDLLEXPORT wxStopWatch
|
1999-09-29 15:40:04 -04:00
|
|
|
{
|
|
|
|
public:
|
1999-11-12 14:19:38 -05:00
|
|
|
// ctor starts the stop watch
|
|
|
|
wxStopWatch() { Start(); }
|
|
|
|
|
|
|
|
void Start(long t = 0); // (re)start it t milliseconds ago
|
|
|
|
inline void Pause();
|
|
|
|
void Resume() { Start(m_pause); }
|
1999-09-29 15:40:04 -04:00
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
// get the elapsed time since the last Start() or Pause() in milliseconds
|
|
|
|
long Time() const;
|
1999-09-29 15:40:04 -04:00
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
protected:
|
|
|
|
// returns the elapsed time since t0
|
|
|
|
inline long GetElapsedTime() const;
|
|
|
|
|
1999-09-29 15:40:04 -04:00
|
|
|
private:
|
1999-11-12 14:19:38 -05:00
|
|
|
long m_t0; // the time of the last Start()
|
|
|
|
long m_pause; // the time of the last Pause() or 0
|
1999-09-29 15:40:04 -04:00
|
|
|
};
|
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
// the old name
|
|
|
|
#ifdef WXWIN_COMPATIBILITY_2
|
|
|
|
typedef wxStopWatch wxChrono;
|
|
|
|
#endif // WXWIN_COMPATIBILITY_2
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// global time functions
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
// Timer functions (milliseconds) -- use wxStopWatch instead
|
1999-09-29 15:40:04 -04:00
|
|
|
void WXDLLEXPORT wxStartTimer();
|
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
// Gets time since last wxStartTimer or wxGetElapsedTime -- use wxStopWatch
|
|
|
|
// instead
|
1999-09-29 15:40:04 -04:00
|
|
|
long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE);
|
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
// Get the local time
|
1999-09-29 15:40:04 -04:00
|
|
|
bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved);
|
|
|
|
|
|
|
|
// Get number of seconds since 00:00:00 GMT, Jan 1st 1970.
|
|
|
|
long WXDLLEXPORT wxGetCurrentTime();
|
|
|
|
|
|
|
|
// Get number of milliseconds since 00:00:00 GMT, Jan 1st 1970.
|
1999-09-29 15:51:04 -04:00
|
|
|
long WXDLLEXPORT wxGetCurrentMTime();
|
1999-09-29 15:40:04 -04:00
|
|
|
|
1999-11-12 14:19:38 -05:00
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// inline functions
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
inline long wxStopWatch::GetElapsedTime() const
|
|
|
|
{
|
|
|
|
return wxGetCurrentMTime() - m_t0;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline void wxStopWatch::Pause()
|
|
|
|
{
|
|
|
|
m_pause = GetElapsedTime();
|
|
|
|
}
|
|
|
|
|
1998-05-20 10:01:55 -04:00
|
|
|
#endif
|
1998-08-14 20:23:28 -04:00
|
|
|
// _WX_TIMER_H_BASE_
|