1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/stopwatch.h 3// Purpose: wxStopWatch and global time-related functions 4// Author: Julian Smart (wxTimer), Sylvain Bougnoux (wxStopWatch) 5// Created: 26.06.03 (extracted from wx/timer.h) 6// RCS-ID: $Id: stopwatch.h 61872 2009-09-09 22:37:05Z VZ $ 7// Copyright: (c) 1998-2003 Julian Smart, Sylvain Bougnoux 8// Licence: wxWindows licence 9///////////////////////////////////////////////////////////////////////////// 10 11#ifndef _WX_STOPWATCH_H_ 12#define _WX_STOPWATCH_H_ 13 14#include "wx/defs.h" 15#include "wx/longlong.h" 16 17// ---------------------------------------------------------------------------- 18// wxStopWatch: measure time intervals with up to 1ms resolution 19// ---------------------------------------------------------------------------- 20 21#if wxUSE_STOPWATCH 22 23class WXDLLIMPEXP_BASE wxStopWatch 24{ 25public: 26 // ctor starts the stop watch 27 wxStopWatch() { m_pauseCount = 0; Start(); } 28 29 // start the stop watch at the moment t0 30 void Start(long t0 = 0); 31 32 // pause the stop watch 33 void Pause() 34 { 35 if ( m_pauseCount++ == 0 ) 36 m_pause = GetElapsedTime(); 37 } 38 39 // resume it 40 void Resume() 41 { 42 wxASSERT_MSG( m_pauseCount > 0, 43 wxT("Resuming stop watch which is not paused") ); 44 45 if ( --m_pauseCount == 0 ) 46 Start(m_pause); 47 } 48 49 // get elapsed time since the last Start() in milliseconds 50 long Time() const; 51 52protected: 53 // returns the elapsed time since t0 54 long GetElapsedTime() const; 55 56private: 57 // the time of the last Start() 58 wxLongLong m_t0; 59 60 // the time of the last Pause() (only valid if m_pauseCount > 0) 61 long m_pause; 62 63 // if > 0, the stop watch is paused, otherwise it is running 64 int m_pauseCount; 65}; 66 67#endif // wxUSE_STOPWATCH 68 69#if wxUSE_LONGLONG && WXWIN_COMPATIBILITY_2_6 70 71 // Starts a global timer 72 // -- DEPRECATED: use wxStopWatch instead 73 wxDEPRECATED( void WXDLLIMPEXP_BASE wxStartTimer() ); 74 75 // Gets elapsed milliseconds since last wxStartTimer or wxGetElapsedTime 76 // -- DEPRECATED: use wxStopWatch instead 77 wxDEPRECATED( long WXDLLIMPEXP_BASE wxGetElapsedTime(bool resetTimer = true) ); 78 79#endif // wxUSE_LONGLONG && WXWIN_COMPATIBILITY_2_6 80 81// ---------------------------------------------------------------------------- 82// global time functions 83// ---------------------------------------------------------------------------- 84 85// Get number of seconds since local time 00:00:00 Jan 1st 1970. 86extern long WXDLLIMPEXP_BASE wxGetLocalTime(); 87 88// Get number of seconds since GMT 00:00:00, Jan 1st 1970. 89extern long WXDLLIMPEXP_BASE wxGetUTCTime(); 90 91#if wxUSE_LONGLONG 92 typedef wxLongLong wxMilliClock_t; 93#else 94 typedef double wxMilliClock_t; 95#endif // wxUSE_LONGLONG 96 97// Get number of milliseconds since local time 00:00:00 Jan 1st 1970 98extern wxMilliClock_t WXDLLIMPEXP_BASE wxGetLocalTimeMillis(); 99 100#define wxGetCurrentTime() wxGetLocalTime() 101 102#endif // _WX_STOPWATCH_H_ 103