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