From 23f8cfc197e2941fb5e25f7cd00ce3617476181e Mon Sep 17 00:00:00 2001 From: "huiyu.eun" Date: Mon, 30 Dec 2019 12:39:00 +0900 Subject: [PATCH] Revert "[Tizen] Download remote svg file" This reverts commit 658c7cbfb9373e2ec8eb028b9c90d619b466326b. Change-Id: I455420101ede8c2b85748ddcb31fedeb97c106f3 --- .../utc-Dali-DebugRendering.cpp | 3 -- .../src/dali-toolkit/utc-Dali-Visual.cpp | 22 -------- .../internal/visuals/svg/svg-rasterize-thread.cpp | 55 ++------------------ .../internal/visuals/svg/svg-rasterize-thread.h | 23 ++------- dali-toolkit/internal/visuals/svg/svg-visual.cpp | 59 ++++++++++++++-------- dali-toolkit/internal/visuals/svg/svg-visual.h | 14 +++-- .../internal/visuals/visual-factory-cache.cpp | 2 +- 7 files changed, 60 insertions(+), 118 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp index 05de93d..8b119d4 100755 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-DebugRendering.cpp @@ -16,7 +16,6 @@ */ #include -#include #include #include #include @@ -148,8 +147,6 @@ int UtcDaliDebugRenderingGetVisual1(void) propertyMap5.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG ); propertyMap5.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ); Visual::Base svgVisual = factory.CreateVisual( propertyMap5 ); - - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); DALI_TEST_CHECK( svgVisual ); TestDebugVisual( svgVisual, Visual::SVG, Vector2(100.f, 100.f) ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index 1f18c02..374afe0 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -347,8 +347,6 @@ int UtcDaliVisualSize(void) // svg visual Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() ); svgVisual.SetTransformAndSize(DefaultTransform(), controlSize ); - - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); svgVisual.GetNaturalSize(naturalSize); // TEST_SVG_FILE: // @@ -358,9 +356,6 @@ int UtcDaliVisualSize(void) // svg visual with a size Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) ); - svgVisual.SetTransformAndSize(DefaultTransform(), controlSize ); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); - svgVisual2.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100 @@ -3579,20 +3574,3 @@ int UtcDaliSvgVisualCustomShader(void) END_TEST; } - -int UtcDaliSvgVisualDownloadRemoteFile(void) -{ - ToolkitTestApplication application; - tet_infoline( "Download svg file from remote" ); - - VisualFactory factory = VisualFactory::Get(); // svg visual - Visual::Base svgVisual1 = factory.CreateVisual( "http://bar.org/foobar.svg", ImageDimensions() ); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); - DALI_TEST_CHECK( svgVisual1 ); - - Visual::Base svgVisual2 = factory.CreateVisual( "http://bar.org/wrong_name.svg", ImageDimensions() ); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); - DALI_TEST_CHECK( svgVisual2 ); - END_TEST; -} - diff --git a/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp b/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp index 7cb6734..13140a7 100644 --- a/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.cpp @@ -18,14 +18,10 @@ // CLASS HEADER #include "svg-rasterize-thread.h" -// EXTERNAL INCLUDES -#include -#include -#include - // INTERNAL INCLUDES #include #include +#include namespace Dali { @@ -35,56 +31,21 @@ namespace Toolkit namespace Internal { -const char * const UNITS("px"); -RasterizingTask::RasterizingTask( SvgVisual* svgRenderer, NSVGimage* parsedSvg, const VisualUrl& url, float dpi, unsigned int width, unsigned int height) +RasterizingTask::RasterizingTask( SvgVisual* svgRenderer, NSVGimage* parsedSvg, unsigned int width, unsigned int height ) : mSvgVisual( svgRenderer ), mParsedSvg( parsedSvg ), - mUrl( url ), - mDpi( dpi ), mWidth( width ), mHeight( height ) { } -void RasterizingTask::Load() -{ - if( mParsedSvg != NULL) - { - return; - } - - if( mUrl.IsLocalResource() ) - { - Dali::Vector buffer; - if ( !Dali::FileLoader::ReadFile( mUrl.GetUrl(), buffer ) ) - { - DALI_LOG_ERROR("Failed to read file!\n"); - return; - } - - mParsedSvg = nsvgParse( buffer.begin(), UNITS, mDpi ); - } - else - { - Dali::Vector remoteBuffer; - - if( !Dali::FileLoader::DownloadFileSynchronously( mUrl.GetUrl(), remoteBuffer )) - { - DALI_LOG_ERROR("Failed to download file!\n"); - return; - } - - mParsedSvg = nsvgParse( reinterpret_cast(remoteBuffer.begin()), UNITS, mDpi ); - } -} - void RasterizingTask::Rasterize( NSVGrasterizer* rasterizer ) { - if( mParsedSvg != NULL && mWidth > 0u && mHeight > 0u ) + if( mWidth > 0u && mHeight > 0u ) { - float scaleX = static_cast( mWidth ) / mParsedSvg->width; - float scaleY = static_cast( mHeight ) / mParsedSvg->height; + float scaleX = static_cast( mWidth ) / mParsedSvg->width; + float scaleY = static_cast( mHeight ) / mParsedSvg->height; float scale = scaleX < scaleY ? scaleX : scaleY; unsigned int bufferStride = mWidth*Pixel::GetBytesPerPixel( Pixel::RGBA8888 ); unsigned int bufferSize = bufferStride * mHeight; @@ -98,11 +59,6 @@ void RasterizingTask::Rasterize( NSVGrasterizer* rasterizer ) } } -NSVGimage* RasterizingTask::GetParsedImage() const -{ - return mParsedSvg; -} - SvgVisual* RasterizingTask::GetSvgVisual() const { return mSvgVisual.Get(); @@ -269,7 +225,6 @@ void SvgRasterizeThread::Run() SetThreadName( "SVGThread" ); while( RasterizingTaskPtr task = NextTaskToProcess() ) { - task->Load( ); task->Rasterize( mRasterizer ); AddCompletedTask( task ); } diff --git a/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.h b/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.h index 1c94ca9..f30c459 100644 --- a/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.h +++ b/dali-toolkit/internal/visuals/svg/svg-rasterize-thread.h @@ -28,7 +28,6 @@ #include #include #include -#include struct NSVGimage; struct NSVGrasterizer; @@ -66,11 +65,10 @@ public: * @param[in] parsedSvg The parsed svg for rasterizing. * Note, after the task is added to the worker thread, the worker thread takes over the ownership. * When the image is to be deleted, delete it in the worker thread by calling SvgRasterizeThread::DeleteImage( parsedSvg ). - * @param[in] url The URL to svg resource to use. * @param[in] width The rasterization width. * @param[in] height The rasterization height. */ - RasterizingTask( SvgVisual* svgRenderer, NSVGimage* parsedSvg, const VisualUrl& url, float dpi, unsigned int width, unsigned int height ); + RasterizingTask( SvgVisual* svgRenderer, NSVGimage* parsedSvg, unsigned int width, unsigned int height ); /** * Do the rasterization with the given rasterizer. @@ -89,18 +87,8 @@ public: */ PixelData GetPixelData() const; - /** - * Get the parsed data. - * @return parsed image data. - */ - NSVGimage* GetParsedImage() const; - - /** - * Load svg file - */ - void Load(); - private: + // Undefined RasterizingTask( const RasterizingTask& task ); @@ -108,15 +96,14 @@ private: RasterizingTask& operator=( const RasterizingTask& task ); private: - SvgVisualPtr mSvgVisual; - NSVGimage* mParsedSvg; - VisualUrl mUrl; + SvgVisualPtr mSvgVisual; PixelData mPixelData; - float mDpi; + NSVGimage* mParsedSvg; unsigned int mWidth; unsigned int mHeight; }; + /** * The worker thread for SVG rasterization. */ diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index cc7b660..a3d3685 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-visual.cpp @@ -18,19 +18,29 @@ // CLASS HEADER #include "svg-visual.h" +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include +#include + // INTERNAL INCLUDES +#include +#include #include #include #include +#include #include #include #include -// EXTERNAL INCLUDES -#include - namespace { +const char * const UNITS("px"); + // property name const char * const IMAGE_ATLASING( "atlasing" ); @@ -48,7 +58,8 @@ namespace Internal SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, const Property::Map& properties ) { - SvgVisualPtr svgVisual( new SvgVisual( factoryCache, shaderFactory, imageUrl ) ); + SvgVisualPtr svgVisual( new SvgVisual( factoryCache, shaderFactory ) ); + svgVisual->ParseFromUrl( imageUrl ); svgVisual->SetProperties( properties ); return svgVisual; @@ -56,16 +67,17 @@ SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShader SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl ) { - SvgVisualPtr svgVisual( new SvgVisual( factoryCache, shaderFactory, imageUrl ) ); + SvgVisualPtr svgVisual( new SvgVisual( factoryCache, shaderFactory ) ); + svgVisual->ParseFromUrl( imageUrl ); return svgVisual; } -SvgVisual::SvgVisual( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl ) +SvgVisual::SvgVisual( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory ) : Visual::Base( factoryCache, Visual::FittingMode::FILL ), mImageVisualShaderFactory( shaderFactory ), mAtlasRect( FULL_TEXTURE_RECT ), - mImageUrl( imageUrl ), + mImageUrl( ), mParsedImage( NULL ), mPlacementActor(), mVisualSize(Vector2::ZERO), @@ -186,29 +198,36 @@ void SvgVisual::DoCreateInstancePropertyMap( Property::Map& map ) const // Do nothing } -void SvgVisual::AddRasterizationTask( const Vector2& size ) +void SvgVisual::ParseFromUrl( const VisualUrl& imageUrl ) { - if( mImpl->mRenderer ) + mImageUrl = imageUrl; + if( mImageUrl.IsLocalResource() ) { - unsigned int width = static_cast(size.width); - unsigned int height = static_cast( size.height ); - Vector2 dpi = Stage::GetCurrent().GetDpi(); float meanDpi = ( dpi.height + dpi.width ) * 0.5f; - - RasterizingTaskPtr newTask = new RasterizingTask( this, mParsedImage, mImageUrl, meanDpi, width, height ); - mFactoryCache.GetSVGRasterizationThread()->AddTask( newTask ); + Dali::Vector buffer; + if ( Dali::FileLoader::ReadFile( mImageUrl.GetUrl(), buffer ) ) + { + mParsedImage = nsvgParse( buffer.Begin(), UNITS, meanDpi ); + } } } -void SvgVisual::ApplyRasterizedImage( NSVGimage* parsedSvg, PixelData rasterizedPixelData ) +void SvgVisual::AddRasterizationTask( const Vector2& size ) { - if( mParsedImage == NULL) + if( mImpl->mRenderer && mParsedImage ) { - mParsedImage = parsedSvg; + unsigned int width = static_cast(size.width); + unsigned int height = static_cast( size.height ); + + RasterizingTaskPtr newTask = new RasterizingTask( this, mParsedImage, width, height ); + mFactoryCache.GetSVGRasterizationThread()->AddTask( newTask ); } +} - if( IsOnStage() ) +void SvgVisual::ApplyRasterizedImage( PixelData rasterizedPixelData ) +{ + if( IsOnStage() ) { TextureSet currentTextureSet = mImpl->mRenderer.GetTextures(); if( mImpl->mFlags |= Impl::IS_ATLASING_APPLIED ) @@ -278,7 +297,7 @@ void SvgVisual::OnSetTransform() { Vector2 visualSize = mImpl->mTransform.GetVisualSize( mImpl->mControlSize ); - if( IsOnStage() ) + if( mParsedImage && IsOnStage() ) { if( visualSize != mVisualSize ) { diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.h b/dali-toolkit/internal/visuals/svg/svg-visual.h index 9947376..8fc2ad8 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.h +++ b/dali-toolkit/internal/visuals/svg/svg-visual.h @@ -106,9 +106,8 @@ protected: * * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object * @param[in] shaderFactory The ImageVisualShaderFactory object - * @param[in] imageUrl The URL to svg resource to use */ - SvgVisual( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl ); + SvgVisual( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory ); /** * @brief A reference counted object may only be deleted by calling Unreference(). @@ -140,14 +139,20 @@ public: /** * @bried Apply the rasterized image to the visual. * - * @param[in] parsedSvg The data of parsed image. * @param[in] rasterizedPixelData The pixel buffer with the rasterized pixels */ - void ApplyRasterizedImage( NSVGimage* parsedSvg, PixelData rasterizedPixelData ); + void ApplyRasterizedImage( PixelData rasterizedPixelData ); private: /** + * @brief Parses the SVG Image from the set URL. + * + * @param[in] imageUrl The URL of the image to parse the SVG from. + */ + void ParseFromUrl( const VisualUrl& imageUrl ); + + /** * @bried Rasterize the svg with the given size, and add it to the visual. * * @param[in] size The target size of the SVG rasterization. @@ -161,6 +166,7 @@ private: */ void DoSetProperty( Property::Index index, const Property::Value& value ); + // Undefined SvgVisual( const SvgVisual& svgRenderer ); diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.cpp b/dali-toolkit/internal/visuals/visual-factory-cache.cpp index 594c12f..3852361 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-cache.cpp @@ -150,7 +150,7 @@ void VisualFactoryCache::ApplyRasterizedSVGToSampler() { while( RasterizingTaskPtr task = mSvgRasterizeThread->NextCompletedTask() ) { - task->GetSvgVisual()->ApplyRasterizedImage( task->GetParsedImage(), task->GetPixelData() ); + task->GetSvgVisual()->ApplyRasterizedImage( task->GetPixelData() ); } } -- 2.7.4