X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-vector-animation-renderer.cpp;h=4b6c5c8eece8a1b717d0059ea6b1137560229474;hp=2ccf2c1ed29037971923edefccf0ac5e8c41dc82;hb=23446c257d6ae1977bb69e53353fb1ccd5409432;hpb=a79b9acaf94aa703c82b6b39d2672d7cfd2999d9 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp old mode 100755 new mode 100644 index 2ccf2c1..4b6c5c8 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -15,50 +15,49 @@ * */ +#include #include #include #include -#include #include +#include +#include #include #include -#include namespace Dali { - namespace Internal { - namespace Adaptor { - namespace { Dali::Internal::Adaptor::VectorAnimationRenderer* gVectorAnimationRenderer = nullptr; } -class VectorAnimationRenderer: public Dali::BaseObject +class VectorAnimationRenderer : public Dali::BaseObject { public: - VectorAnimationRenderer() : mUrl(), mRenderer(), - mWidth( 0 ), - mHeight( 0 ), + mWidth(0), + mHeight(0), + mDefaultWidth(0), + mDefaultHeight(0), mTotalFrameNumber(VECTOR_ANIMATION_TOTAL_FRAME_NUMBER), - mPreviousFrame( 0 ), + mPreviousFrame(0), mDelayTime(0), mDroppedFrames(0), - mFrameRate( 60.0f ), + mFrameRate(60.0f), mTestFrameDrop(false), mNeedDroppedFrames(false), - mEventThreadCallback( new EventThreadCallback( MakeCallback( this, &VectorAnimationRenderer::OnTriggered ) ) ) + mEventThreadCallback(new EventThreadCallback(MakeCallback(this, &VectorAnimationRenderer::OnTriggered))) { mCount++; - if( mCount == 2 ) + if(mCount == 2) { mFrameRate = 0.1f; } @@ -74,66 +73,66 @@ public: mUrl = url; if(mUrl == "invalid.json") { + mLoadFailed = true; return false; } else if(mUrl == "framedrop.json") { // Change total frame number for test mTotalFrameNumber = 200; - mTestFrameDrop = true; + mTestFrameDrop = true; } + + mDefaultWidth = 100; + mDefaultHeight = 100; + return true; } - void SetRenderer( Dali::Renderer renderer ) + void SetRenderer(Dali::Renderer renderer) { mRenderer = renderer; - - if( mWidth != 0 && mHeight != 0 ) - { - Dali::TextureSet textureSet = mRenderer.GetTextures(); - Dali::Texture texture = Dali::Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, mWidth, mHeight ); - textureSet.SetTexture( 0, texture ); - mUploadCompletedSignal.Emit(); - } } - void SetSize( uint32_t width, uint32_t height ) + void SetSize(uint32_t width, uint32_t height) { - mWidth = width; + mWidth = width; mHeight = height; - if( mRenderer ) + if(!mLoadFailed) { - Dali::TextureSet textureSet = mRenderer.GetTextures(); - Dali::Texture texture = Dali::Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, mWidth, mHeight ); - textureSet.SetTexture( 0, texture ); - mUploadCompletedSignal.Emit(); + mNeedTrigger = true; + mResourceReady = false; } } - bool Render( uint32_t frameNumber ) + bool Render(uint32_t frameNumber) { + if(mWidth == 0 || mHeight == 0) + { + return false; + } + if(mTestFrameDrop) { std::this_thread::sleep_for(std::chrono::milliseconds(static_cast(mDelayTime))); - mTestFrameDrop = false; + mTestFrameDrop = false; mNeedDroppedFrames = true; } else if(mNeedDroppedFrames) { - mDroppedFrames = (frameNumber > mPreviousFrame) ? frameNumber - mPreviousFrame - 1: frameNumber + (mTotalFrameNumber - mPreviousFrame) - 1; - mNeedTrigger = true; + mDroppedFrames = (frameNumber > mPreviousFrame) ? frameNumber - mPreviousFrame - 1 : frameNumber + (mTotalFrameNumber - mPreviousFrame) - 1; + mNeedTrigger = true; mNeedDroppedFrames = false; } - if( mNeedTrigger ) + if(mNeedTrigger) { mEventThreadCallback->Trigger(); mNeedTrigger = false; } - if( frameNumber == 1 && mPreviousFrame != frameNumber ) + if(frameNumber == 1 && mPreviousFrame != frameNumber) { mPreviousFrame = frameNumber; // For test corverage @@ -153,23 +152,23 @@ public: return mFrameRate; } - void GetDefaultSize( uint32_t& width, uint32_t& height ) const + void GetDefaultSize(uint32_t& width, uint32_t& height) const { - width = 100; - height = 100; + width = mDefaultWidth; + height = mDefaultHeight; } - bool GetMarkerInfo( const std::string& marker, uint32_t& startFrame, uint32_t& endFrame ) const + bool GetMarkerInfo(const std::string& marker, uint32_t& startFrame, uint32_t& endFrame) const { - if( marker.compare( VECTOR_ANIMATION_MARKER_NAME_1 ) == 0 ) + if(marker.compare(VECTOR_ANIMATION_MARKER_NAME_1) == 0) { startFrame = VECTOR_ANIMATION_MARKER_START_FRAME_1; - endFrame = VECTOR_ANIMATION_MARKER_END_FRAME_1; + endFrame = VECTOR_ANIMATION_MARKER_END_FRAME_1; } - else if( marker.compare( VECTOR_ANIMATION_MARKER_NAME_2 ) == 0 ) + else if(marker.compare(VECTOR_ANIMATION_MARKER_NAME_2) == 0) { startFrame = VECTOR_ANIMATION_MARKER_START_FRAME_2; - endFrame = VECTOR_ANIMATION_MARKER_END_FRAME_2; + endFrame = VECTOR_ANIMATION_MARKER_END_FRAME_2; } else { @@ -178,6 +177,12 @@ public: return true; } + void InvalidateBuffer() + { + mNeedTrigger = true; + mResourceReady = false; + } + Dali::VectorAnimationRenderer::UploadCompletedSignalType& UploadCompletedSignal() { return mUploadCompletedSignal; @@ -185,50 +190,66 @@ public: void OnTriggered() { + if(!mResourceReady) + { + mResourceReady = true; + + Dali::TextureSet textureSet = mRenderer.GetTextures(); + Dali::Texture texture = Dali::Texture::New(TextureType::TEXTURE_2D, Pixel::RGBA8888, mWidth, mHeight); + textureSet.SetTexture(0, texture); + + Devel::PixelBuffer pixelBuffer = Devel::PixelBuffer::New(mWidth, mHeight, Pixel::RGBA8888); + Dali::PixelData pixelData = Devel::PixelBuffer::Convert(pixelBuffer); + texture.Upload(pixelData); + + mUploadCompletedSignal.Emit(); + } } public: - static uint32_t mCount; - static bool mNeedTrigger; - std::string mUrl; + std::string mUrl; Dali::Renderer mRenderer; - uint32_t mWidth; - uint32_t mHeight; - uint32_t mTotalFrameNumber; - uint32_t mPreviousFrame; - uint32_t mDelayTime; - uint32_t mDroppedFrames; - float mFrameRate; - bool mTestFrameDrop; - bool mNeedDroppedFrames; + uint32_t mWidth; + uint32_t mHeight; + uint32_t mDefaultWidth; + uint32_t mDefaultHeight; + uint32_t mTotalFrameNumber; + uint32_t mPreviousFrame; + uint32_t mDelayTime; + uint32_t mDroppedFrames; + float mFrameRate; + bool mTestFrameDrop; + bool mNeedDroppedFrames; + bool mLoadFailed{false}; + bool mResourceReady{false}; + bool mNeedTrigger{true}; + Dali::VectorAnimationRenderer::UploadCompletedSignalType mUploadCompletedSignal; - std::unique_ptr< EventThreadCallback > mEventThreadCallback; + std::unique_ptr mEventThreadCallback; }; uint32_t VectorAnimationRenderer::mCount = 0; -bool VectorAnimationRenderer::mNeedTrigger = true; -inline VectorAnimationRenderer& GetImplementation( Dali::VectorAnimationRenderer& renderer ) +inline VectorAnimationRenderer& GetImplementation(Dali::VectorAnimationRenderer& renderer) { - DALI_ASSERT_ALWAYS( renderer && "VectorAnimationRenderer handle is empty." ); + DALI_ASSERT_ALWAYS(renderer && "VectorAnimationRenderer handle is empty."); BaseObject& handle = renderer.GetBaseObject(); - return static_cast< Internal::Adaptor::VectorAnimationRenderer& >( handle ); + return static_cast(handle); } -inline const VectorAnimationRenderer& GetImplementation( const Dali::VectorAnimationRenderer& renderer ) +inline const VectorAnimationRenderer& GetImplementation(const Dali::VectorAnimationRenderer& renderer) { - DALI_ASSERT_ALWAYS( renderer && "VectorAnimationRenderer handle is empty." ); + DALI_ASSERT_ALWAYS(renderer && "VectorAnimationRenderer handle is empty."); const BaseObject& handle = renderer.GetBaseObject(); - return static_cast< const Internal::Adaptor::VectorAnimationRenderer& >( handle ); + return static_cast(handle); } } // namespace Adaptor } // namespace Internal - /********************************************************************************/ /********************************* PUBLIC CLASS *******************************/ /********************************************************************************/ @@ -239,7 +260,7 @@ VectorAnimationRenderer VectorAnimationRenderer::New() Internal::Adaptor::gVectorAnimationRenderer = animationRenderer; - return VectorAnimationRenderer( animationRenderer ); + return VectorAnimationRenderer(animationRenderer); } VectorAnimationRenderer::VectorAnimationRenderer() @@ -250,19 +271,19 @@ VectorAnimationRenderer::~VectorAnimationRenderer() { } -VectorAnimationRenderer::VectorAnimationRenderer( Internal::Adaptor::VectorAnimationRenderer* internal ) -: BaseHandle( internal ) +VectorAnimationRenderer::VectorAnimationRenderer(Internal::Adaptor::VectorAnimationRenderer* internal) +: BaseHandle(internal) { } -VectorAnimationRenderer::VectorAnimationRenderer( const VectorAnimationRenderer& handle ) -: BaseHandle( handle ) +VectorAnimationRenderer::VectorAnimationRenderer(const VectorAnimationRenderer& handle) +: BaseHandle(handle) { } -VectorAnimationRenderer& VectorAnimationRenderer::operator=( const VectorAnimationRenderer& rhs ) +VectorAnimationRenderer& VectorAnimationRenderer::operator=(const VectorAnimationRenderer& rhs) { - BaseHandle::operator=( rhs ); + BaseHandle::operator=(rhs); return *this; } @@ -272,51 +293,56 @@ void VectorAnimationRenderer::Finalize() bool VectorAnimationRenderer::Load(const std::string& url) { - return Internal::Adaptor::GetImplementation( *this ).Load(url); + return Internal::Adaptor::GetImplementation(*this).Load(url); } -void VectorAnimationRenderer::SetRenderer( Renderer renderer ) +void VectorAnimationRenderer::SetRenderer(Renderer renderer) { - Internal::Adaptor::GetImplementation( *this ).SetRenderer( renderer ); + Internal::Adaptor::GetImplementation(*this).SetRenderer(renderer); } -void VectorAnimationRenderer::SetSize( uint32_t width, uint32_t height ) +void VectorAnimationRenderer::SetSize(uint32_t width, uint32_t height) { - Internal::Adaptor::GetImplementation( *this ).SetSize( width, height ); + Internal::Adaptor::GetImplementation(*this).SetSize(width, height); } -bool VectorAnimationRenderer::Render( uint32_t frameNumber ) +bool VectorAnimationRenderer::Render(uint32_t frameNumber) { - return Internal::Adaptor::GetImplementation( *this ).Render( frameNumber ); + return Internal::Adaptor::GetImplementation(*this).Render(frameNumber); } uint32_t VectorAnimationRenderer::GetTotalFrameNumber() const { - return Internal::Adaptor::GetImplementation( *this ).GetTotalFrameNumber(); + return Internal::Adaptor::GetImplementation(*this).GetTotalFrameNumber(); } float VectorAnimationRenderer::GetFrameRate() const { - return Internal::Adaptor::GetImplementation( *this ).GetFrameRate(); + return Internal::Adaptor::GetImplementation(*this).GetFrameRate(); +} + +void VectorAnimationRenderer::GetDefaultSize(uint32_t& width, uint32_t& height) const +{ + Internal::Adaptor::GetImplementation(*this).GetDefaultSize(width, height); } -void VectorAnimationRenderer::GetDefaultSize( uint32_t& width, uint32_t& height ) const +void VectorAnimationRenderer::GetLayerInfo(Property::Map& map) const { - Internal::Adaptor::GetImplementation( *this ).GetDefaultSize( width, height ); } -void VectorAnimationRenderer::GetLayerInfo( Property::Map& map ) const +bool VectorAnimationRenderer::GetMarkerInfo(const std::string& marker, uint32_t& startFrame, uint32_t& endFrame) const { + return Internal::Adaptor::GetImplementation(*this).GetMarkerInfo(marker, startFrame, endFrame); } -bool VectorAnimationRenderer::GetMarkerInfo( const std::string& marker, uint32_t& startFrame, uint32_t& endFrame ) const +void VectorAnimationRenderer::InvalidateBuffer() { - return Internal::Adaptor::GetImplementation( *this ).GetMarkerInfo( marker, startFrame, endFrame ); + return Internal::Adaptor::GetImplementation(*this).InvalidateBuffer(); } VectorAnimationRenderer::UploadCompletedSignalType& VectorAnimationRenderer::UploadCompletedSignal() { - return Internal::Adaptor::GetImplementation( *this ).UploadCompletedSignal(); + return Internal::Adaptor::GetImplementation(*this).UploadCompletedSignal(); } } // namespace Dali @@ -325,12 +351,6 @@ namespace Test { namespace VectorAnimationRenderer { - -void RequestTrigger() -{ - Dali::Internal::Adaptor::VectorAnimationRenderer::mNeedTrigger = true; -} - void DelayRendering(uint32_t delay) { Dali::Internal::Adaptor::gVectorAnimationRenderer->mDelayTime = delay; @@ -341,6 +361,5 @@ uint32_t GetDroppedFrames() return Dali::Internal::Adaptor::gVectorAnimationRenderer->mDroppedFrames; } -} // VectorAnimationRenderer -} // Test - +} // namespace VectorAnimationRenderer +} // namespace Test