X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fsvg%2Fsvg-visual.cpp;h=55ada4acb018ff39f80181557ba430e7d8e45e23;hb=refs%2Fchanges%2F20%2F238520%2F3;hp=45566bc60f69da1806f93edd91199f326263e2d8;hpb=c02f801e5fd89a14e2f49f36ff1513248eead35d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index 45566bc..55ada4a 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-visual.cpp @@ -20,6 +20,7 @@ // INTERNAL INCLUDES #include +#include #include #include #include @@ -28,7 +29,8 @@ #include // EXTERNAL INCLUDES -#include +#include +#include namespace Dali { @@ -44,9 +46,8 @@ namespace // property name const char * const UNITS("px"); -const char * const IMAGE_ATLASING( "atlasing" ); - const Dali::Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f); + } SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, const Property::Map& properties ) @@ -67,7 +68,7 @@ SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShader } SvgVisual::SvgVisual( VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl ) -: Visual::Base( factoryCache, Visual::FittingMode::FILL ), +: Visual::Base( factoryCache, Visual::FittingMode::FILL, Toolkit::Visual::SVG ), mImageVisualShaderFactory( shaderFactory ), mAtlasRect( FULL_TEXTURE_RECT ), mImageUrl( imageUrl ), @@ -102,6 +103,10 @@ void SvgVisual::DoSetProperties( const Property::Map& propertyMap ) { DoSetProperty( Toolkit::ImageVisual::Property::ATLASING, keyValue.second ); } + else if( keyValue.first == SYNCHRONOUS_LOADING ) + { + DoSetProperty( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, keyValue.second ); + } } } @@ -114,6 +119,26 @@ void SvgVisual::DoSetProperty( Property::Index index, const Property::Value& val value.Get( mAttemptAtlasing ); break; } + case Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING: + { + bool sync = false; + if( value.Get( sync ) ) + { + if( sync ) + { + mImpl->mFlags |= Impl::IS_SYNCHRONOUS_RESOURCE_LOADING; + } + else + { + mImpl->mFlags &= ~Impl::IS_SYNCHRONOUS_RESOURCE_LOADING; + } + } + else + { + DALI_LOG_ERROR("ImageVisual: synchronousLoading property has incorrect type\n"); + } + break; + } } } @@ -122,7 +147,7 @@ void SvgVisual::DoSetOnStage( Actor& actor ) Shader shader; if( !mImpl->mCustomShader ) { - shader = mImageVisualShaderFactory.GetShader( mFactoryCache, mAttemptAtlasing, true ); + shader = mImageVisualShaderFactory.GetShader( mFactoryCache, mAttemptAtlasing, true, false ); } else { @@ -218,7 +243,15 @@ void SvgVisual::AddRasterizationTask( const Vector2& size ) float meanDpi = ( dpi.height + dpi.width ) * 0.5f; RasterizingTaskPtr newTask = new RasterizingTask( this, mParsedImage, mImageUrl, meanDpi, width, height ); - mFactoryCache.GetSVGRasterizationThread()->AddTask( newTask ); + if ( IsSynchronousLoadingRequired() ) + { + newTask->Rasterize(); + ApplyRasterizedImage( newTask->GetParsedImage(), newTask->GetPixelData() ); + } + else + { + mFactoryCache.GetSVGRasterizationThread()->AddTask( newTask ); + } } }