Merge branch 'master' into blender2.8
[blender.git] / intern / ghost / intern / GHOST_TimerTask.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file ghost/intern/GHOST_TimerTask.h
29  *  \ingroup GHOST
30  * Declaration of GHOST_TimerTask class.
31  */
32
33 #ifndef __GHOST_TIMERTASK_H__
34 #define __GHOST_TIMERTASK_H__
35
36 #include "GHOST_ITimerTask.h"
37
38
39 /**
40  * Implementation of a timer task.
41  * \author      Maarten Gribnau
42  * \date        May 28, 2001
43  */
44 class GHOST_TimerTask : public GHOST_ITimerTask
45 {
46 public:
47         /**
48          * Constructor.
49          * \param start         The timer start time.
50          * \param interval      The interval between calls to the timerProc
51          * \param timerProc     The callback invoked when the interval expires.
52          * \param userData: The timer user data.
53          */
54         GHOST_TimerTask(GHOST_TUns64 start,
55                         GHOST_TUns64 interval,
56                         GHOST_TimerProcPtr timerProc,
57                         GHOST_TUserDataPtr userData = NULL)
58                 : m_start(start),
59                 m_interval(interval),
60                 m_next(start),
61                 m_timerProc(timerProc),
62                 m_userData(userData),
63                 m_auxData(0)
64         {
65         }
66
67         /**
68          * Returns the timer start time.
69          * \return The timer start time.
70          */
71         inline GHOST_TUns64 getStart() const
72         {
73                 return m_start;
74         }
75
76         /**
77          * Changes the timer start time.
78          * \param start The timer start time.
79          */
80         void setStart(GHOST_TUns64 start)
81         {
82                 m_start = start;
83         }
84
85         /**
86          * Returns the timer interval.
87          * \return The timer interval.
88          */
89         inline GHOST_TUns64 getInterval() const
90         {
91                 return m_interval;
92         }
93
94         /**
95          * Changes the timer interval.
96          * \param interval The timer interval.
97          */
98         void setInterval(GHOST_TUns64 interval)
99         {
100                 m_interval = interval;
101         }
102
103         /**
104          * Returns the time the timerProc will be called.
105          * \return The time the timerProc will be called.
106          */
107         inline GHOST_TUns64 getNext() const
108         {
109                 return m_next;
110         }
111
112         /**
113          * Changes the time the timerProc will be called.
114          * \param next The time the timerProc will be called.
115          */
116         void setNext(GHOST_TUns64 next)
117         {
118                 m_next = next;
119         }
120
121         /**
122          * Returns the timer callback.
123          * \return the timer callback.
124          */
125         inline GHOST_TimerProcPtr getTimerProc() const
126         {
127                 return m_timerProc;
128         }
129
130         /**
131          * Changes the timer callback.
132          * \param timerProc: The timer callback.
133          */
134         inline void setTimerProc(const GHOST_TimerProcPtr timerProc)
135         {
136                 m_timerProc = timerProc;
137         }
138
139         /**
140          * Returns the timer user data.
141          * \return The timer user data.
142          */
143         inline GHOST_TUserDataPtr getUserData() const
144         {
145                 return m_userData;
146         }
147
148         /**
149          * Changes the time user data.
150          * \param userData: The timer user data.
151          */
152         void setUserData(const GHOST_TUserDataPtr userData)
153         {
154                 m_userData = userData;
155         }
156
157         /**
158          * Returns the auxiliary storage room.
159          * \return The auxiliary storage room.
160          */
161         inline GHOST_TUns32 getAuxData() const
162         {
163                 return m_auxData;
164         }
165
166         /**
167          * Changes the auxiliary storage room.
168          * \param auxData The auxiliary storage room.
169          */
170         void setAuxData(GHOST_TUns32 auxData)
171         {
172                 m_auxData = auxData;
173         }
174
175 protected:
176         /** The time the timer task was started. */
177         GHOST_TUns64 m_start;
178
179         /** The interval between calls. */
180         GHOST_TUns64 m_interval;
181
182         /** The time the timerProc will be called. */
183         GHOST_TUns64 m_next;
184
185         /** The callback invoked when the timer expires. */
186         GHOST_TimerProcPtr m_timerProc;
187
188         /** The timer task user data. */
189         GHOST_TUserDataPtr m_userData;
190
191         /** Auxiliary storage room. */
192         GHOST_TUns32 m_auxData;
193 };
194
195 #endif // __GHOST_TIMERTASK_H__
196