X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fsvg%2Fsvg-visual.cpp;h=8ccb63b0ba72e60ae4541e9e2c4d8715ee84f4aa;hp=bce5c2731826a5d4e2522db85bab46021d634482;hb=ab447436de92a2e8bc8cd1393f4807f19ef6b316;hpb=893ca7b6b58b59ed4671daf867c4a319d8c9a770 diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index bce5c27..8ccb63b 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-visual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -52,6 +52,7 @@ SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShader SvgVisualPtr svgVisual( new SvgVisual( factoryCache, shaderFactory, imageUrl ) ); svgVisual->Load(); svgVisual->SetProperties(properties); + svgVisual->Initialize(); return svgVisual; } @@ -59,6 +60,7 @@ SvgVisualPtr SvgVisual::New( VisualFactoryCache& factoryCache, ImageVisualShader { SvgVisualPtr svgVisual( new SvgVisual( factoryCache, shaderFactory, imageUrl ) ); svgVisual->Load(); + svgVisual->Initialize(); return svgVisual; } @@ -83,6 +85,26 @@ SvgVisual::~SvgVisual() { } +void SvgVisual::OnInitialize() +{ + Shader shader; + if(!mImpl->mCustomShader) + { + shader = mImageVisualShaderFactory.GetShader(mFactoryCache, mAttemptAtlasing, true, IsRoundedCornerRequired()); + } + else + { + shader = Shader::New(mImpl->mCustomShader->mVertexShader.empty() ? mImageVisualShaderFactory.GetVertexShaderSource().data() : mImpl->mCustomShader->mVertexShader, + mImpl->mCustomShader->mFragmentShader.empty() ? mImageVisualShaderFactory.GetFragmentShaderSource().data() : mImpl->mCustomShader->mFragmentShader, + mImpl->mCustomShader->mHints); + + shader.RegisterProperty(PIXEL_AREA_UNIFORM_NAME, FULL_TEXTURE_RECT); + } + + Geometry geometry = mFactoryCache.GetGeometry(VisualFactoryCache::QUAD_GEOMETRY); + mImpl->mRenderer = Renderer::New(geometry, shader); +} + void SvgVisual::DoSetProperties( const Property::Map& propertyMap ) { // url already passed in from constructor @@ -138,23 +160,7 @@ void SvgVisual::DoSetProperty( Property::Index index, const Property::Value& val void SvgVisual::DoSetOnScene( Actor& actor ) { - Shader shader; - if( !mImpl->mCustomShader ) - { - shader = mImageVisualShaderFactory.GetShader( mFactoryCache, mAttemptAtlasing, true, IsRoundedCornerRequired() ); - } - else - { - shader = Shader::New( mImpl->mCustomShader->mVertexShader.empty() ? mImageVisualShaderFactory.GetVertexShaderSource().data() : mImpl->mCustomShader->mVertexShader, - mImpl->mCustomShader->mFragmentShader.empty() ? mImageVisualShaderFactory.GetFragmentShaderSource().data() : mImpl->mCustomShader->mFragmentShader, - mImpl->mCustomShader->mHints ); - - shader.RegisterProperty( PIXEL_AREA_UNIFORM_NAME, FULL_TEXTURE_RECT ); - } - - Geometry geometry = mFactoryCache.GetGeometry( VisualFactoryCache::QUAD_GEOMETRY ); TextureSet textureSet = TextureSet::New(); - mImpl->mRenderer = Renderer::New( geometry, shader ); mImpl->mRenderer.SetTextures( textureSet ); // Register transform properties @@ -174,7 +180,6 @@ void SvgVisual::DoSetOffScene( Actor& actor ) mFactoryCache.GetSVGRasterizationThread()->RemoveTask( this ); actor.RemoveRenderer( mImpl->mRenderer ); - mImpl->mRenderer.Reset(); mPlacementActor.Reset(); // Reset the visual size to zero so that when adding the actor back to stage the SVG rasterization is forced