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-image-renderer.cpp;h=78252b851e332b22c4749e4c8b5f55bb5739ab3e;hp=cf276f4a6eb30a74b11e3e98da8f55b13af3351d;hb=558ac24b19d6a872e636fe45c41c497172b2945a;hpb=df0ba815340cb09f10cb3e84358718310ef0bffb 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 cf276f4..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 @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -30,13 +31,46 @@ namespace Internal { namespace Adaptor { +namespace +{ +Dali::Internal::Adaptor::VectorImageRenderer* gVectorImageRenderer = nullptr; + +/** + * @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) +{ + 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) { } @@ -46,6 +80,7 @@ public: bool Load(const Vector& data, float dpi) { + mLoadCount++; if(strncmp(reinterpret_cast(data.Begin()), "invalid", 7) == 0) { return false; @@ -54,9 +89,20 @@ 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 IsLoaded() const + { + return mLoadSuccess; + } + Dali::Devel::PixelBuffer Rasterize(uint32_t width, uint32_t height) { if(mRasterizeSuccess) @@ -74,9 +120,11 @@ public: } 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) @@ -105,6 +153,8 @@ VectorImageRenderer VectorImageRenderer::New() { Internal::Adaptor::VectorImageRenderer* imageRenderer = new Internal::Adaptor::VectorImageRenderer(); + Internal::Adaptor::gVectorImageRenderer = imageRenderer; + return VectorImageRenderer(imageRenderer); } @@ -126,6 +176,11 @@ bool VectorImageRenderer::Load(const Vector& data, float dpi) return Internal::Adaptor::GetImplementation(*this).Load(data, dpi); } +bool VectorImageRenderer::IsLoaded() const +{ + return Internal::Adaptor::GetImplementation(*this).IsLoaded(); +} + Dali::Devel::PixelBuffer VectorImageRenderer::Rasterize(uint32_t width, uint32_t height) { return Internal::Adaptor::GetImplementation(*this).Rasterize(width, height); @@ -137,3 +192,15 @@ void VectorImageRenderer::GetDefaultSize(uint32_t& width, uint32_t& height) cons } } // namespace Dali + +namespace Test +{ +namespace VectorImageRenderer +{ +uint32_t GetLoadCount() +{ + return Dali::Internal::Adaptor::gVectorImageRenderer->mLoadCount; +} + +} // namespace VectorImageRenderer +} // namespace Test