Merging trunk up to revision 41245.
[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_TIMER_TASK_H_
34 #define _GHOST_TIMER_TASK_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 callbak invoked when the interval expires.
52          * @param data          The timer user data.
53          */
54         GHOST_TimerTask(GHOST_TUns64 start, GHOST_TUns64 interval, GHOST_TimerProcPtr timerProc, GHOST_TUserDataPtr userData = 0)
55                 : m_start(start), m_interval(interval), m_next(start), m_timerProc(timerProc), m_userData(userData), m_auxData(0)
56         {
57         }
58
59         /**
60          * Returns the timer start time.
61          * @return The timer start time.
62          */
63         inline virtual GHOST_TUns64 getStart() const
64         {
65                 return m_start;
66         }
67
68         /**
69          * Changes the timer start time.
70          * @param start The timer start time.
71          */
72         virtual void setStart(GHOST_TUns64 start)
73         { 
74                 m_start = start;
75         }
76
77         /**
78          * Returns the timer interval.
79          * @return The timer interval.
80          */
81         inline virtual GHOST_TUns64 getInterval() const
82         {
83                 return m_interval;
84         }
85
86         /**
87          * Changes the timer interval.
88          * @param interval The timer interval.
89          */
90         virtual void setInterval(GHOST_TUns64 interval)
91         { 
92                 m_interval = interval;
93         }
94
95         /**
96          * Returns the time the timerProc will be called.
97          * @return The time the timerProc will be called.
98          */
99         inline virtual GHOST_TUns64 getNext() const
100         {
101                 return m_next;
102         }
103
104         /**
105          * Changes the time the timerProc will be called.
106          * @param next The time the timerProc will be called.
107          */
108         virtual void setNext(GHOST_TUns64 next)
109         { 
110                 m_next = next;
111         }
112
113         /**
114          * Returns the timer callback.
115          * @return the timer callback.
116          */
117         inline virtual GHOST_TimerProcPtr getTimerProc() const
118         {
119                 return m_timerProc;
120         }
121
122         /**
123          * Changes the timer callback.
124          * @param The timer callback.
125          */
126         inline virtual void setTimerProc(const GHOST_TimerProcPtr timerProc)
127         {
128                 m_timerProc = timerProc;
129         }
130
131         /**
132          * Returns the timer user data.
133          * @return The timer user data.
134          */
135         inline virtual GHOST_TUserDataPtr getUserData() const
136         {
137                 return m_userData;
138         }
139         
140         /**
141          * Changes the time user data.
142          * @param data The timer user data.
143          */
144         virtual void setUserData(const GHOST_TUserDataPtr userData)
145         {
146                 m_userData = userData;
147         }
148
149         /**
150          * Returns the auxiliary storage room.
151          * @return The auxiliary storage room.
152          */
153         inline virtual GHOST_TUns32 getAuxData() const
154         {
155                 return m_auxData;
156         }
157
158         /**
159          * Changes the auxiliary storage room.
160          * @param auxData The auxiliary storage room.
161          */
162         virtual void setAuxData(GHOST_TUns32 auxData)
163         { 
164                 m_auxData = auxData;
165         }
166
167 protected:
168         /** The time the timer task was started. */
169         GHOST_TUns64 m_start;
170
171         /** The interval between calls. */
172         GHOST_TUns64 m_interval;
173
174         /** The time the timerProc will be called. */
175         GHOST_TUns64 m_next;
176
177         /** The callback invoked when the timer expires. */
178         GHOST_TimerProcPtr m_timerProc;
179
180         /** The timer task user data. */
181         GHOST_TUserDataPtr m_userData;
182
183         /** Auxiliary storage room. */
184         GHOST_TUns32 m_auxData;
185 };
186
187 #endif // _GHOST_TIMER_TASK_H_
188