1 #ifndef __DALI_TIMER_H__
2 #define __DALI_TIMER_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 * @addtogroup CAPI_DALI_ADAPTOR_MODULE
28 #include <dali/public-api/object/base-handle.h>
29 #include <dali/public-api/signals/dali-signal-v2.h>
31 namespace Dali DALI_IMPORT_API
34 namespace Internal DALI_INTERNAL
43 * @brief Mechanism to issue simple periodic or one-shot events.
45 * Timer is provided for application developers to be able to issue
46 * simple periodic or one-shot events. Please note that timer
47 * callback functions should return as soon as possible, because they
48 * block the next SignalTick. Please note that timer signals are not
49 * in sync with Dali's render timer.
51 * This class is a handle class so it can be stack allocated and used
54 class Timer : public BaseHandle
56 public: // Signal typedefs
58 typedef SignalV2< bool () > TimerSignalV2; ///< Timer finished signal callback type
63 * @brief Constructor, creates an uninitialized timer.
65 * Call New to fully construct a timer.
70 * @brief Create an tick Timer that emits periodic signal.
72 * @param[in] milliSec Interval in milliseconds.
75 static Timer New( unsigned int milliSec );
78 * @brief Copy constructor.
80 * @param[in] timer The handle to copy. The copied handle will point at the same implementation
82 Timer( const Timer& timer );
85 * @brief Assignment operator.
87 * @param[in] timer The handle to copy. This handle will point at the same implementation
88 * as the copied handle.
89 * @return Reference to this timer handle
91 Timer& operator=( const Timer& timer );
96 * This is non-virtual since derived Handle types must not contain data or virtual methods.
101 * @brief Downcast an Object handle to Timer handle.
103 * If handle points to a Timer object the downcast produces a valid
104 * handle. If not the returned handle is left uninitialized.
106 * @param[in] handle to An object
107 * @return handle to a Timer object or an uninitialized handle
109 static Timer DownCast( BaseHandle handle );
112 * @copydoc Dali::BaseHandle::operator=
114 using BaseHandle::operator=;
117 * @brief Start timer.
119 * In case a Timer is already running it's time is reset and timer is restarted.
129 * @brief Sets a new interval on the timer and starts the timer.
131 * Cancels the previous timer.
132 * @param milliSec Interval in milliseconds.
134 void SetInterval( unsigned int milliSec );
137 * @brief Get the interval of timer.
138 * @returns Interval in milliseconds.
140 unsigned int GetInterval() const;
143 * @brief Tells whether timer is running.
144 * @return Whether Timer is started or not.
146 bool IsRunning() const;
151 * @brief Signal emitted after specified time interval.
153 * The return of the callback decides whether signal emission stops or continues.
154 * If the callback function returns false emission will stop, if true it will continue
155 * This return value is ignored for one-shot events, which will always stop after the first execution.
156 * @returns The signal to Connect() with.
158 TimerSignalV2& TickSignal();
160 public: // Not intended for application developers
161 explicit DALI_INTERNAL Timer(Internal::Adaptor::Timer* timer);
169 #endif // __DALI_TIMER_H__