1 #ifndef DALI_TOOLKIT_CUBE_TRANSITION_EFFECT_H
2 #define DALI_TOOLKIT_CUBE_TRANSITION_EFFECT_H
5 * Copyright (c) 2018 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 #include <dali-toolkit/public-api/controls/control.h>
23 #include <dali-toolkit/public-api/dali-toolkit-common.h>
26 #include <dali/public-api/rendering/texture.h>
34 namespace Internal DALI_INTERNAL
38 * CubeTransitionEffect implementation class
40 class CubeTransitionEffect;
42 } // namespace Internal
45 * CubeTransitionEffect is a base class of custom transition effect on Images
46 * The two images are partitioned into tiles and serves as two perpendicular faces of cubes
47 * By rotating these cubes to transit from one image to another
53 * //create a new CubeTransitionEffect
54 * //use the New funtion of subclass ( CubeTransitionWaveEffect or CubeTransitionCrossEffect )
55 * CubeTransitionEffect cubeEffect = CubeTransitionWaveEffect::New(numRows, numColumns);
57 * //set the duration of transition animation
58 * cubeEffect.SetTransitionDuration( animationDuration );
60 * //set the displacement of bouncing movement during cube's rotation
61 * cubeEffect.SetCubeDisplacement( cubeDisplacement );
64 * stage.Add( cubeEffect );
66 * // Set the current image,
67 * // only need to set at beginning or when the current image was transitioned to with no effect or other effect
68 * cubeEffect.SetCurrentImage( firstImage );
70 * // Set target image, paired with startTransition. These two steps would be repeated as needed
71 * cubeEffect.SetTargetimage( secondImage );
72 * // Activate the effect
73 * // no param / param ture: default horizontally left panGesture
74 * // or param false: default horizontally right panGesture
75 * // or params position & displacement: specified the panGesture
76 * cubeEffect.StartTransition( );
81 * | %Signal Name | Method |
82 * |---------------------|----------------------------------|
83 * | transitionCompleted | @ref TransitionCompletedSignal() |
85 class DALI_TOOLKIT_API CubeTransitionEffect : public Control
90 * Create an uninitialized CubeTransitionEffect;
91 * this can be initialized by New function of its subclass
93 CubeTransitionEffect();
98 ~CubeTransitionEffect();
101 * @brief Downcast an Object handle to a CubeTransitionEffect handle.
103 * If handle points to a CubeTransitionEffect object the downcast produces
104 * a valid handle. If not the returned handle is left uninitialized.
106 * @param[in] handle A handle to an object
107 * @return A handle to a CubeTransitionEffect object or an uninitialized handle
109 static CubeTransitionEffect DownCast( BaseHandle handle );
112 * Set the duration of transition animation
113 * @param[in] duration The duration of transition animation
115 void SetTransitionDuration( float duration );
118 * Get the duration of transition animation
119 * @return duration The duration of transition animation
121 float GetTransitionDuration() const;
124 * Set the displacement of bouncing animation during cube's rotation
125 * @param[in] displacement The displacement of bouncing animation
127 void SetCubeDisplacement( float displacement );
130 * Get the displacement of bouncing animation during cube's rotation
131 * @return displacement The displacement of bouncing animation
133 float GetCubeDisplacement() const;
136 * Return the transition status
137 * @return True if the transition is under processing; false if finished
139 bool IsTransitioning();
142 * Set the current texture to transition from
143 * if using this same effect continually, only need to set once
144 * @param[in] texture The current texture
146 void SetCurrentTexture( Texture texture );
149 * Set the target texture to transit to
150 * @param[in] texture The new Texture showing on stage
152 void SetTargetTexture( Texture texture );
155 * Activate the transition animation with horizontally left/right panGesture
156 * @pre target image is set
157 * @param[in] toNextImage Horizontally left panGesture if true, horizontally right if false
159 void StartTransition( bool toNextImage = true );
162 * Activate the transition animation with specified panGesture
163 * @pre target image is set
164 * @param[in] panPosition The press down position of panGesture
165 * @param[in] panDisplacement The displacement vector of panGesture
167 void StartTransition( Vector2 panPosition, Vector2 panDisplacement );
170 * Pause the transition animation.
171 * It does nothing if the animation is not running.
173 void PauseTransition();
176 * Re-Activate the transition animation after it is paused by calling PauseTransition().
177 * It does nothing in other cases.
179 void ResumeTransition();
182 * Inactivate the transition animation if it is running.
183 * Also set the rotation and position of cubes, colors of tile to the same as the start state when the animation if finished completely
184 * It does nothing if the animation is not running.
186 void StopTransition();
190 //Transition animation completed signal
191 typedef Signal< void ( CubeTransitionEffect, Texture ) > TransitionCompletedSignalType;
194 * Signal emitted when the transition has completed animation
195 * A callback of the following type may be connected
197 * void YourCallbackName( CubeTransitionEffect cubeEffect, Texture currentTexture );
199 * @return The Signal to connect to.
201 TransitionCompletedSignalType& TransitionCompletedSignal();
203 public: // Not intended for developer use
206 * @brief Creates a handle using the Toolkit::Internal implementation.
208 * @param[in] implementation The Control implementation.
210 DALI_INTERNAL CubeTransitionEffect( Internal::CubeTransitionEffect& implementation );
213 * @brief Allows the creation of this Control from an Internal::CustomActor pointer.
215 * @param[in] internal A pointer to the internal CustomActor.
217 DALI_INTERNAL CubeTransitionEffect( Dali::Internal::CustomActor* internal );
219 }; //class CubeTransitionEffect
221 } // namespace Toolkit
225 #endif // DALI_TOOLKIT_CUBE_TRANSITION_EFFECT_H