X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-vector-image-renderer.cpp;h=78252b851e332b22c4749e4c8b5f55bb5739ab3e;hb=4255529cd62def14c042f78edd30b6919fa591e1;hp=b0365ff1f4ec9ab2cb38855dd7cf3277af642579;hpb=8fea8f2ae64923690519e0de039ce4af51271d9f;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-image-renderer.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-image-renderer.cpp index b0365ff..78252b8 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-image-renderer.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-image-renderer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 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. @@ -18,29 +18,59 @@ #include #include #include +#include #include #include -#include +#include #include -#include +#include namespace Dali { - namespace Internal { - namespace Adaptor { +namespace +{ +Dali::Internal::Adaptor::VectorImageRenderer* gVectorImageRenderer = nullptr; -class VectorImageRenderer: public Dali::BaseObject +/** + * @brief Check whether the data contain keyword as substring or not. + * It can be used as Naive Check-up to determine vector image loaded successfully or not. + * + * @param[in] data Raw data + * @param[in] keyword Keyword to check data holded or not. + * @return True if data contain keyword. + */ +bool CheckKeywordExist(const Vector& data, std::string keyword) { -public: + std::string trimedString; + + // Remove useless character in data. + for(const uint8_t& it : data) + { + if(keyword.find(it) != std::string::npos) + { + trimedString.push_back(it); + } + } + if(trimedString.length() >= keyword.length()) + { + if(trimedString.find(keyword) != std::string::npos) + { + return true; + } + } + return false; +} +} // namespace + +class VectorImageRenderer : public Dali::BaseObject +{ +public: VectorImageRenderer() - : mWidth(0), - mHeight(0), - mRasterizeSuccess(true) { } @@ -50,6 +80,7 @@ public: bool Load(const Vector& data, float dpi) { + mLoadCount++; if(strncmp(reinterpret_cast(data.Begin()), "invalid", 7) == 0) { return false; @@ -58,46 +89,62 @@ public: { mRasterizeSuccess = false; } + // Naive check-up whether data is valid format or not. Currently we only check svg and tvg file format. + else if(!CheckKeywordExist(data, "") && !CheckKeywordExist(data, "ThorVG")) + { + return false; + } + mLoadSuccess = true; return true; } - bool Rasterize(Dali::Devel::PixelBuffer& buffer, float scale) + bool IsLoaded() const { - return mRasterizeSuccess; + return mLoadSuccess; + } + + Dali::Devel::PixelBuffer Rasterize(uint32_t width, uint32_t height) + { + if(mRasterizeSuccess) + { + Devel::PixelBuffer pixelBuffer = Devel::PixelBuffer::New(width, height, Dali::Pixel::RGBA8888); + return pixelBuffer; + } + return Dali::Devel::PixelBuffer(); } void GetDefaultSize(uint32_t& width, uint32_t& height) const { - width = 100; + width = 100; height = 100; } public: - - uint32_t mWidth; - uint32_t mHeight; - bool mRasterizeSuccess; + uint32_t mWidth{0}; + uint32_t mHeight{0}; + uint32_t mLoadCount{0}; + bool mLoadSuccess{false}; + bool mRasterizeSuccess{true}; }; -inline VectorImageRenderer& GetImplementation( Dali::VectorImageRenderer& renderer ) +inline VectorImageRenderer& GetImplementation(Dali::VectorImageRenderer& renderer) { - DALI_ASSERT_ALWAYS( renderer && "VectorImageRenderer handle is empty." ); + DALI_ASSERT_ALWAYS(renderer && "VectorImageRenderer handle is empty."); BaseObject& handle = renderer.GetBaseObject(); - return static_cast< Internal::Adaptor::VectorImageRenderer& >( handle ); + return static_cast(handle); } -inline const VectorImageRenderer& GetImplementation( const Dali::VectorImageRenderer& renderer ) +inline const VectorImageRenderer& GetImplementation(const Dali::VectorImageRenderer& renderer) { - DALI_ASSERT_ALWAYS( renderer && "VectorImageRenderer handle is empty." ); + DALI_ASSERT_ALWAYS(renderer && "VectorImageRenderer handle is empty."); const BaseObject& handle = renderer.GetBaseObject(); - return static_cast< const Internal::Adaptor::VectorImageRenderer& >( handle ); + return static_cast(handle); } } // namespace Adaptor } // namespace Internal - /********************************************************************************/ /********************************* PUBLIC CLASS *******************************/ /********************************************************************************/ @@ -106,7 +153,9 @@ VectorImageRenderer VectorImageRenderer::New() { Internal::Adaptor::VectorImageRenderer* imageRenderer = new Internal::Adaptor::VectorImageRenderer(); - return VectorImageRenderer( imageRenderer ); + Internal::Adaptor::gVectorImageRenderer = imageRenderer; + + return VectorImageRenderer(imageRenderer); } VectorImageRenderer::VectorImageRenderer() @@ -117,8 +166,8 @@ VectorImageRenderer::~VectorImageRenderer() { } -VectorImageRenderer::VectorImageRenderer( Internal::Adaptor::VectorImageRenderer* internal ) -: BaseHandle( internal ) +VectorImageRenderer::VectorImageRenderer(Internal::Adaptor::VectorImageRenderer* internal) +: BaseHandle(internal) { } @@ -127,14 +176,31 @@ bool VectorImageRenderer::Load(const Vector& data, float dpi) return Internal::Adaptor::GetImplementation(*this).Load(data, dpi); } -bool VectorImageRenderer::Rasterize(Dali::Devel::PixelBuffer& buffer, float scale) +bool VectorImageRenderer::IsLoaded() const { - return Internal::Adaptor::GetImplementation(*this).Rasterize(buffer, scale); + return Internal::Adaptor::GetImplementation(*this).IsLoaded(); } -void VectorImageRenderer::GetDefaultSize( uint32_t& width, uint32_t& height ) const +Dali::Devel::PixelBuffer VectorImageRenderer::Rasterize(uint32_t width, uint32_t height) { - Internal::Adaptor::GetImplementation( *this ).GetDefaultSize( width, height ); + return Internal::Adaptor::GetImplementation(*this).Rasterize(width, height); +} + +void VectorImageRenderer::GetDefaultSize(uint32_t& width, uint32_t& height) const +{ + Internal::Adaptor::GetImplementation(*this).GetDefaultSize(width, height); } } // namespace Dali + +namespace Test +{ +namespace VectorImageRenderer +{ +uint32_t GetLoadCount() +{ + return Dali::Internal::Adaptor::gVectorImageRenderer->mLoadCount; +} + +} // namespace VectorImageRenderer +} // namespace Test