]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/timer.h
TIFF code 1.
[wxWidgets.git] / include / wx / timer.h
index 4cf5c35b26226ea09768193bd3b8497152f7d118..0a19282ecafae5bfad114e836db60e82ab3f7308 100644 (file)
+/////////////////////////////////////////////////////////////////////////////
+// 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
+/////////////////////////////////////////////////////////////////////////////
+
 #ifndef _WX_TIMER_H_BASE_
 #define _WX_TIMER_H_BASE_
 
+#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
+};
+
 #if defined(__WXMSW__)
-#include "wx/msw/timer.h"
+    #include "wx/msw/timer.h"
 #elif defined(__WXMOTIF__)
-#include "wx/motif/timer.h"
+    #include "wx/motif/timer.h"
 #elif defined(__WXGTK__)
-#include "wx/gtk/timer.h"
+    #include "wx/gtk/timer.h"
 #elif defined(__WXQT__)
-#include "wx/qt/timer.h"
+    #include "wx/qt/timer.h"
 #elif defined(__WXMAC__)
-#include "wx/mac/timer.h"
+    #include "wx/mac/timer.h"
+#elif defined(__WXPM__)
+    #include "wx/os2/timer.h"
 #elif defined(__WXSTUBS__)
-#include "wx/stubs/timer.h"
+    #include "wx/stubs/timer.h"
 #endif
 
+// ----------------------------------------------------------------------------
+// wxStopWatch
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxStopWatch
+{
+public: 
+    // 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); }
+
+    // get the elapsed time since the last Start() or Pause() in milliseconds
+    long Time() const;
+
+protected:
+    // returns the elapsed time since t0
+    inline long GetElapsedTime() const;
+    
+private:
+    long m_t0;          // the time of the last Start()
+    long m_pause;       // the time of the last Pause() or 0
+};
+
+// the old name
+#ifdef WXWIN_COMPATIBILITY_2
+    typedef wxStopWatch wxChrono;
+#endif // WXWIN_COMPATIBILITY_2
+
+// ----------------------------------------------------------------------------
+// global time functions
+// ----------------------------------------------------------------------------
+
+// Timer functions (milliseconds) -- use wxStopWatch instead
+void WXDLLEXPORT wxStartTimer();
+
+// Gets time since last wxStartTimer or wxGetElapsedTime -- use wxStopWatch
+// instead
+long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE);
+
+// Get the local time
+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.
+long WXDLLEXPORT wxGetCurrentMTime();
+
+// ----------------------------------------------------------------------------
+// inline functions
+// ----------------------------------------------------------------------------
+
+inline long wxStopWatch::GetElapsedTime() const
+{
+    return wxGetCurrentMTime() - m_t0;
+}
+
+inline void wxStopWatch::Pause()
+{
+    m_pause = GetElapsedTime();
+}
+
 #endif
     // _WX_TIMER_H_BASE_