X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fanimation%2Fanimation-playlist.h;h=c31c11dfd047a9c035a9d68a516fd1f7369a00d7;hb=0c17fedc6fae9c4ca443b1eda9eab846215ca518;hp=56cdeba98072d5c4cc5f991b2dd4fb7f05cbb9bd;hpb=4aa4d0477ff2212aa51afb1b7aa5a65f4b01d065;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/animation/animation-playlist.h b/dali/internal/event/animation/animation-playlist.h index 56cdeba..c31c11d 100644 --- a/dali/internal/event/animation/animation-playlist.h +++ b/dali/internal/event/animation/animation-playlist.h @@ -1,27 +1,30 @@ -#ifndef __DALI_INTERNAL_ANIMATION_PLAYLIST_H__ -#define __DALI_INTERNAL_ANIMATION_PLAYLIST_H__ - -// -// Copyright (c) 2014 Samsung Electronics Co., Ltd. -// -// Licensed under the Flora License, Version 1.0 (the License); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://floralicense.org/license/ -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an AS IS BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +#ifndef DALI_INTERNAL_ANIMATION_PLAYLIST_H +#define DALI_INTERNAL_ANIMATION_PLAYLIST_H + +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ // INTERNAL INCLUDES #include -#include +#include +#include #include -#include +#include +#include namespace Dali { @@ -35,7 +38,7 @@ class Animation; * AnimationPlaylist provides notifications to applications when animations are finished. * It reference-counts playing animations, to allow "fire and forget" behaviour. */ -class AnimationPlaylist : public AnimationFinishedNotifier +class AnimationPlaylist : public CompleteNotificationInterface { public: @@ -73,11 +76,25 @@ public: void OnClear( Animation& animation ); /** - * From AnimationFinishedNotifier; emit "Finished" signal on any animations that have finished. - * This method should be called in the event-thread; the update-thread must use AnimationFinishedMessage. - * @post The "Finished" animations will no longer be referenced by AnimationPlaylist. + * @brief Notify that an animation has reached a progress marker + * @param[in] sceneGraphAnimation scene graph animation that has reached progress + */ + void NotifyProgressReached( const SceneGraph::Animation* sceneGraphAnimation ); + + /** + * @brief Retrive the number of Animations. + * + * @return The number of Animations. */ - void NotifyFinishedAnimations(); + uint32_t GetAnimationCount(); + + /** + * @brief Retrieve an Animation by index. + * + * @param[in] index The index of the Animation to retrieve + * @return The Dali::Animation for the given index or empty handle + */ + Dali::Animation GetAnimationAt( uint32_t index ); private: @@ -92,16 +109,33 @@ private: // Undefined AnimationPlaylist& operator=(const AnimationPlaylist& rhs); +private: // from CompleteNotificationInterface + + /** + * @copydoc CompleteNotificationInterface::NotifyCompleted() + */ + virtual void NotifyCompleted(); + private: - std::set< Animation* > mAnimations; ///< All existing animations (not referenced) + Dali::Vector< Animation* > mAnimations; ///< All existing animations (not owned) + std::vector< Dali::Animation > mPlaylist; ///< The currently playing animations (owned through handle) - std::set< Dali::Animation > mPlaylist; ///< The currently playing animations (reference counted) }; +/** + * Called when an animation reaches a progress marker + * + * Note animationPlaylist is of type CompleteNotificationInterface because of updateManager only knowing about the interface not actual playlist + */ +inline MessageBase* NotifyProgressReachedMessage( CompleteNotificationInterface& animationPlaylist, const SceneGraph::Animation* animation ) +{ + return new MessageValue1< AnimationPlaylist, const SceneGraph::Animation* >( static_cast(&animationPlaylist), &AnimationPlaylist::NotifyProgressReached, animation ); +} + } // namespace Internal } // namespace Dali -#endif // __DALI_INTERNAL_NOTIFICATION_MANAGER_H__ +#endif // DALI_INTERNAL_ANIMATION_PLAYLIST_H