X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fanimated-vector-image%2Fvector-rasterize-thread.h;h=e24a918905cee98adccd91c90abe03570c6ebcb4;hp=8ee52be28ef848605f1e253eb230ae16fca86a8a;hb=f75399560e8f2c0eff3fc3678da77df7517dd9fa;hpb=f558388c388bcdf4939ca7af098cbcfc1631ad89 diff --git a/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.h b/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.h index 8ee52be..e24a918 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.h +++ b/dali-toolkit/internal/visuals/animated-vector-image/vector-rasterize-thread.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_VECTOR_IMAGE_RASTERIZE_THREAD_H /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -18,17 +18,14 @@ */ // EXTERNAL INCLUDES -#include -#include +#include +#include #include -#include #include -#include -#include -#include +#include // INTERNAL INCLUDES -#include +#include namespace Dali { @@ -48,13 +45,8 @@ public: /** * @brief Constructor. - * - * @param[in] url The url of the vector animation file - * @param[in] renderer The renderer used to render the image - * @param[in] width The width of the content - * @param[in] height The height of the content */ - VectorRasterizeThread( const std::string& url, Renderer renderer, uint32_t width, uint32_t height ); + VectorRasterizeThread(); /** * @brief Destructor. @@ -62,63 +54,17 @@ public: virtual ~VectorRasterizeThread(); /** - * @brief Sets the target image size. - * - * @param[in] width The target image width - * @param[in] height The target image height - */ - void SetSize( uint32_t width, uint32_t height ); - - /** - * @brief Play the vector animation. - */ - void StartAnimation(); - - /** - * @brief Stop the vector animation. - */ - void StopAnimation(); - - /** - * @brief Pause the vector animation. - */ - void PauseAnimation(); - - /** - * @brief Render one frame. The current frame number will be increased. - */ - void RenderFrame(); - - /** - * @brief This callback is called after the first frame is ready. - * @param[in] callback The resource ready callback + * The callback is called from the rasterize thread after the rasterization is completed. + * @param[in] callBack The function to call. */ - void SetResourceReadyCallback( EventThreadCallback* callback ); + void SetCompletedCallback( CallbackBase* callback ); /** - * @brief This callback is called after the animation is finished. - * @param[in] callback The animation finished callback - */ - void SetAnimationFinishedCallback( EventThreadCallback* callback ); - - /** - * @brief Enable looping for 'count' repeats. -1 means to repeat forever. - * @param[in] count The number of times to loop - */ - void SetLoopCount( int16_t count ); - - /** - * @brief Set the playing range. - * @param[in] range Two values between [0,1] to specify minimum and maximum progress. - * The animation will play between those values. - */ - void SetPlayRange( Vector2 range ); - - /** - * @brief Get the play state - * @return The play state + * Add a task to rasterize. + * + * @param[in] task The task to rasterize */ - DevelImageVisual::PlayState GetPlayState(); + void AddTask( VectorAnimationTaskPtr task ); protected: @@ -131,21 +77,12 @@ protected: private: /** - * @brief Called by the rasterize thread which ensures a wait if required. - * @return false if the thread should stop. - */ - bool IsThreadReady(); - - /** - * @brief Start rendering - */ - bool StartRender(); - - /** - * @brief Rasterize the current frame. + * Rasterizes the tasks. */ void Rasterize(); +private: + // Undefined VectorRasterizeThread( const VectorRasterizeThread& thread ) = delete; @@ -154,26 +91,12 @@ private: private: - std::string mUrl; - VectorAnimationRenderer mVectorRenderer; - ConditionalWait mConditionalWait; - Dali::Mutex mMutex; - std::unique_ptr< EventThreadCallback > mResourceReadyTrigger; - std::unique_ptr< EventThreadCallback > mAnimationFinishedTrigger; - Vector2 mPlayRange; - DevelImageVisual::PlayState mPlayState; - uint32_t mCurrentFrame; - uint32_t mTotalFrame; - uint32_t mStartFrame; - uint32_t mEndFrame; - uint32_t mWidth; - uint32_t mHeight; - int16_t mLoopCount; - int16_t mCurrentLoop; - bool mNeedRender; - bool mDestroyThread; ///< Whether the thread be destroyed - bool mResourceReady; - const Dali::LogFactoryInterface& mLogFactory; ///< The log factory + std::vector< VectorAnimationTaskPtr > mRasterizeTasks; + ConditionalWait mConditionalWait; + std::unique_ptr< CallbackBase > mCompletedCallback; + bool mDestroyThread; ///< Whether the thread be destroyed + bool mIsThreadStarted; + const Dali::LogFactoryInterface& mLogFactory; ///< The log factory };