2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiAnimFrameAnimator.h
20 * @brief This is the header file for the %FrameAnimator class.
22 * This header file contains the declarations of the %FrameAnimator class.
25 #ifndef _FUI_ANIM_FRAME_ANIMATOR_H_
26 #define _FUI_ANIM_FRAME_ANIMATOR_H_
28 #include <FUiAnimIFrameAnimatorEventListener.h>
31 namespace Tizen { namespace Ui { namespace Controls
37 namespace Tizen { namespace Ui { namespace Animations
42 * @class FrameAnimator
43 * @brief This class defines the animation methods for Frame.
47 * @final This class is not intended for extension.
49 * The %FrameAnimator class is used to control the animations operated on a Frame.
51 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/animating_formstransition.htm">Animating a Form Transition</a>.
54 class _OSP_EXPORT_ FrameAnimator
55 : public Tizen::Base::Object
60 * This is the destructor for this class.
64 virtual ~FrameAnimator(void);
68 * Adds an IFrameAnimatorEventListener instance to the current instance of the frame. @n
69 * The added listener can listen to events on the given event dispatcher's context when they are fired.
73 * @return An error code
74 * @param[in] listener The listener to add
75 * @exception E_SUCCESS The method is successful.
76 * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable.
77 * @exception E_OBJ_ALREADY_EXIST The specified @c listener is already added.
78 * @exception E_SYSTEM A system error has occurred.
80 result AddFrameAnimatorEventListener(IFrameAnimatorEventListener& listener);
84 * Removes an IFrameAnimatorEventListener instance from the current instance of the frame. @n
85 * The removed listener cannot listen to events when they are fired.
89 * @return An error code
90 * @param[in] listener The listener to remove
91 * @exception E_SUCCESS The method is successful.
92 * @exception E_UNSUPPORTED_OPERATION The animation support is unavailable.
93 * @exception E_OBJ_NOT_FOUND The specified @c listener is not found.
94 * @exception E_SYSTEM A system error has occurred.
96 result RemoveFrameAnimatorEventListener(IFrameAnimatorEventListener& listener);
100 * Gets the animation status of the frame animator.
104 * @return The animation state of the frame animator
106 AnimatorStatus GetStatus(void) const;
110 * Sets the specified form as the current form of the frame with an animation.
112 * @brief <i> [Deprecated] </i>
113 * @deprecated This method is deprecated.
116 * @return An error code
117 * @param[in] form The form object to set
118 * @exception E_SUCCESS The method is successful.
119 * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation.
120 * @exception E_SYSTEM A system error has occurred.
121 * @remarks Control::Invalidate() need not be called to display the form. @n
122 * To select the animation to be used during this method, use SetFormTransitionAnimation() before calling this method.
124 result SetCurrentForm(const Tizen::Ui::Controls::Form& form);
127 * Sets a specified form as the current form of the frame with an animation.
131 * @return An error code
132 * @param[in] pForm A pointer to Form object to set
133 * @exception E_SUCCESS The method is successful.
134 * @exception E_INVALID_ARG The specified @c pForm is @c null.
135 * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation.
136 * @exception E_SYSTEM A system error has occurred.
137 * @remarks Control::Invalidate() need not be called to display the form. @n
138 * To select the animation that is used during this method, use SetFormTransitionAnimation() before calling this method.
140 result SetCurrentForm(Tizen::Ui::Controls::Form* pForm);
144 * Sets the type of the form transition animation.
148 * @param[in] animation The type of form transition animation to set
149 * @param[in] duration The duration of animation in milliseconds @n
150 * The maximum duration is one second.
151 * @param[in] interpolator The type of interpolator used for the intermediate value calculation of the animation
153 void SetFormTransitionAnimation(FrameAnimatorFormTransitionAnimation animation, long duration, AnimationInterpolatorType interpolator);
157 * Gets the type of the form transition animation.
161 * @param[out] animation The type of form transition animation used
162 * @param[out] duration The duration of animation in milliseconds
163 * @param[out] interpolator The type of interpolator used for the intermediate value calculation of the animation
165 void GetFormTransitionAnimation(FrameAnimatorFormTransitionAnimation& animation, long& duration, AnimationInterpolatorType& interpolator) const;
169 * Sets the control points for the Bezier interpolator. @n
170 * The %SetFormTransitionBezierControlPoints() method is supported only if the interpolator is @c ANIMATION_INTERPOLATOR_BEZIER.
174 * @return An error code
175 * @param[in] time1 The control point 1 - Time @n
176 * The time must be within the range @c 0.0 to @c 1.0.
177 * @param[in] value1 The control point 1 - Value @n
178 * The value must be within the range @c 0.0 to @c 1.0.
179 * @param[in] time2 The control point 2 - Time @n
180 * The time must be within the range @c 0.0 to @c 1.0.
181 * @param[in] value2 The control point 2 - Value @n
182 * The value must be within the range @c 0.0 to @c 1.0.
183 * @exception E_SUCCESS The method is successful.
184 * @exception E_INVALID_OPERATION The interpolator of this instance is not ANIMATION_INTERPOLATOR_BEZIER.
185 * @exception E_INVALID_ARG A specified input parameter is invalid.
187 result SetFormTransitionBezierControlPoints(float time1, float value1, float time2, float value2);
191 * Gets the control points of the Bezier interpolator. @n
192 * The %GetFormTransitionBezierControlPoints() method is supported only if the interpolator is @c ANIMATION_INTERPOLATOR_BEZIER. @n
193 * Therefore, @c 0 will be returned for other interpolators.
197 * @return An error code
198 * @param[out] time1 The control point 1 - Time
199 * @param[out] value1 The control point 1 - Value
200 * @param[out] time2 The control point 2 - Time
201 * @param[out] value2 The control point 2 - Value
202 * @exception E_SUCCESS The method is successful.
203 * @exception E_INVALID_OPERATION The interpolator of this instance is not ANIMATION_INTERPOLATOR_BEZIER.
205 result GetFormTransitionBezierControlPoints(float& time1, float& value1, float& time2, float& value2) const;
209 * Stops all the animations that are being played and jumps to the final frame of the animation.
213 * @return An error code
214 * @exception E_SUCCESS The method is successful.
215 * @exception E_SYSTEM A system error has occurred.
217 result StopAllAnimations(void);
222 friend class _FrameAnimatorImpl;
226 // This variable is for internal use only. Using this variable can cause behavioral, security-related,
227 // and consistency-related issues in the application.
229 // The variable for internal usage.
233 class _FrameAnimatorImpl* _pFrameAnimatorImpl;
239 // This method is for internal use only. Using this method can cause behavioral, security-related,
240 // and consistency-related issues in the application.
242 // This is the constructor for this class.
250 // This method is for internal use only. Using this method can cause behavioral, security-related,
251 // and consistency-related issues in the application.
253 // Initializes this class.
256 // @return An error code
257 // @param[in] source An instance of the Frame class
258 // @exception E_SUCCESS The method is successful.
259 // @exception E_SYSTEM A system error has occurred.
261 result Construct(const Tizen::Ui::Controls::Frame& source);
265 // This method is for internal use only. Using this method can cause behavioral, security-related,
266 // and consistency-related issues in the application.
268 // This is the copy constructor for the %FrameAnimator class.
272 FrameAnimator(const FrameAnimator& rhs);
276 // This method is for internal use only. Using this method can cause behavioral, security-related,
277 // and consistency-related issues in the application.
279 // Assigns the value of the specified instance to the current instance of %FrameAnimator.
283 FrameAnimator& operator =(const FrameAnimator& rhs);
286 friend class Tizen::Ui::Controls::_FrameImpl;
290 }}} // Tizen::Ui::Animations
292 #endif //_FUI_ANIM_FRAME_ANIMATOR_H_