X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fsvg%2Fsvg-rasterize-thread.cpp;h=24f9981e47dd09ae4cc5601ad49dea1abc51c0eb;hb=65c40fb2f2ea1c8b677be4ad1cee04d271869d0b;hp=aed445d42a8dc112a57eab5bb7b112df82266138;hpb=d52cfe949a764d4ab0584b99d1322f06c8acd92f;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp b/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp index aed445d..24f9981 100644 --- a/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.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. @@ -33,8 +33,8 @@ namespace Toolkit { namespace Internal { -RasterizingTask::RasterizingTask(SvgVisual* svgRenderer, VectorImageRenderer vectorRenderer, const VisualUrl& url, float dpi, unsigned int width, unsigned int height) -: mSvgVisual(svgRenderer), +RasterizingTask::RasterizingTask(SvgVisual* svgVisual, VectorImageRenderer vectorRenderer, const VisualUrl& url, float dpi, unsigned int width, unsigned int height) +: mSvgVisual(svgVisual), mVectorRenderer(vectorRenderer), mUrl(url), mDpi(dpi), @@ -50,62 +50,55 @@ RasterizingTask::~RasterizingTask() void RasterizingTask::Load() { - if(!mUrl.IsLocalResource()) + if(mVectorRenderer.IsLoaded()) { - Dali::Vector remoteBuffer; - if(!Dali::FileLoader::DownloadFileSynchronously(mUrl.GetUrl(), remoteBuffer)) - { - DALI_LOG_ERROR("RasterizingTask::Load: Failed to download file! [%s]\n", mUrl.GetUrl().c_str()); - return; - } + // Already loaded + mLoadSuccess = true; + return; + } - remoteBuffer.PushBack('\0'); + Dali::Vector buffer; - if(!mVectorRenderer.Load(remoteBuffer, mDpi)) + if(!mUrl.IsLocalResource()) + { + if(!Dali::FileLoader::DownloadFileSynchronously(mUrl.GetUrl(), buffer)) { - DALI_LOG_ERROR("RasterizingTask::Load:Failed to load data! [%s]\n", mUrl.GetUrl().c_str()); + DALI_LOG_ERROR("Failed to download file! [%s]\n", mUrl.GetUrl().c_str()); return; } - - mLoadSuccess = true; } else { - mLoadSuccess = true; + if(!Dali::FileLoader::ReadFile(mUrl.GetUrl(), buffer)) + { + DALI_LOG_ERROR("Failed to read file! [%s]\n", mUrl.GetUrl().c_str()); + return; + } } -} -void RasterizingTask::Rasterize() -{ - if(mWidth <= 0u || mHeight <= 0u) + buffer.PushBack('\0'); + + if(!mVectorRenderer.Load(buffer, mDpi)) { - DALI_LOG_ERROR("RasterizingTask::Rasterize: Size is zero!\n"); + DALI_LOG_ERROR("Failed to load data! [%s]\n", mUrl.GetUrl().c_str()); return; } - Devel::PixelBuffer pixelBuffer = Devel::PixelBuffer::New(mWidth, mHeight, Dali::Pixel::RGBA8888); - - uint32_t defaultWidth, defaultHeight; - mVectorRenderer.GetDefaultSize(defaultWidth, defaultHeight); - - float scaleX = static_cast(mWidth) / static_cast(defaultWidth); - float scaleY = static_cast(mHeight) / static_cast(defaultHeight); - float scale = scaleX < scaleY ? scaleX : scaleY; + mLoadSuccess = true; +} - if(!mVectorRenderer.Rasterize(pixelBuffer, scale)) +void RasterizingTask::Rasterize() +{ + Devel::PixelBuffer pixelBuffer = mVectorRenderer.Rasterize(mWidth, mHeight); + if(!pixelBuffer) { - DALI_LOG_ERROR("RasterizingTask::Rasterize: Rasterize is failed! [%s]\n", mUrl.GetUrl().c_str()); + DALI_LOG_ERROR("Rasterize is failed! [%s]\n", mUrl.GetUrl().c_str()); return; } mPixelData = Devel::PixelBuffer::Convert(pixelBuffer); } -VectorImageRenderer RasterizingTask::GetVectorRenderer() const -{ - return mVectorRenderer; -} - bool RasterizingTask::IsLoaded() const { return mLoadSuccess; @@ -272,7 +265,7 @@ void SvgRasterizeThread::ApplyRasterizedSVGToSampler() { while(RasterizingTaskPtr task = NextCompletedTask()) { - task->GetSvgVisual()->ApplyRasterizedImage(task->GetVectorRenderer(), task->GetPixelData(), task->IsLoaded()); + task->GetSvgVisual()->ApplyRasterizedImage(task->GetPixelData(), task->IsLoaded()); } UnregisterProcessor();