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 23 class WXDLLIMPEXP_BASE wxStopWatch 24 { 25 public: 26 // ctor starts the stop watch wxStopWatch()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 Pause()33 void Pause() 34 { 35 if ( m_pauseCount++ == 0 ) 36 m_pause = GetElapsedTime(); 37 } 38 39 // resume it Resume()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 52 protected: 53 // returns the elapsed time since t0 54 long GetElapsedTime() const; 55 56 private: 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. 86 extern long WXDLLIMPEXP_BASE wxGetLocalTime(); 87 88 // Get number of seconds since GMT 00:00:00, Jan 1st 1970. 89 extern 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 98 extern wxMilliClock_t WXDLLIMPEXP_BASE wxGetLocalTimeMillis(); 99 100 #define wxGetCurrentTime() wxGetLocalTime() 101 102 #endif // _WX_STOPWATCH_H_ 103