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=9a4746298941744a62043b5f8dd69bda28ccb265;hp=5d1fff16cacbf2f79c9a6809fb2a6f624332dfc7;hb=24e9ef34e2b4283a03e2d62f4782fccb5a72d67d;hpb=e0153ec76a05d1c37fbaff8301dc7596443416ac diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index 5d1fff1..9a47462 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) 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. @@ -39,6 +39,8 @@ namespace Internal { namespace { +const int CUSTOM_PROPERTY_COUNT(6); // atlas + corner/border + // property name const Dali::Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f); @@ -84,9 +86,10 @@ SvgVisual::~SvgVisual() void SvgVisual::OnInitialize() { - Shader shader = GenerateShader(); + Shader shader = GenerateShader(); Geometry geometry = mFactoryCache.GetGeometry(VisualFactoryCache::QUAD_GEOMETRY); - mImpl->mRenderer = Renderer::New(geometry, shader); + mImpl->mRenderer = VisualRenderer::New(geometry, shader); + mImpl->mRenderer.ReserveCustomProperties(CUSTOM_PROPERTY_COUNT); } void SvgVisual::DoSetProperties(const Property::Map& propertyMap) @@ -148,7 +151,7 @@ void SvgVisual::DoSetOnScene(Actor& actor) mImpl->mRenderer.SetTextures(textureSet); // Register transform properties - mImpl->mTransform.RegisterUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); + mImpl->mTransform.SetUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); // Defer the rasterisation task until we get given a size (by Size Negotiation algorithm) @@ -158,7 +161,7 @@ void SvgVisual::DoSetOnScene(Actor& actor) if(mLoadFailed) { Vector2 imageSize = Vector2::ZERO; - imageSize = actor.GetProperty(Actor::Property::SIZE).Get(); + imageSize = actor.GetProperty(Actor::Property::SIZE).Get(); mFactoryCache.UpdateBrokenImageRenderer(mImpl->mRenderer, imageSize); actor.AddRenderer(mImpl->mRenderer); @@ -205,6 +208,15 @@ void SvgVisual::DoCreateInstancePropertyMap(Property::Map& map) const // Do nothing } +void SvgVisual::EnablePreMultipliedAlpha(bool preMultiplied) +{ + // Make always enable pre multiplied alpha whether preMultiplied value is false. + if(!preMultiplied) + { + DALI_LOG_WARNING("Note : SvgVisual cannot disable PreMultipliedAlpha\n"); + } +} + void SvgVisual::Load() { // load remote resource on svg rasterize thread. @@ -328,7 +340,7 @@ void SvgVisual::ApplyRasterizedImage(VectorImageRenderer vectorRenderer, PixelDa if(actor) { Vector2 imageSize = Vector2::ZERO; - imageSize = actor.GetProperty(Actor::Property::SIZE).Get(); + imageSize = actor.GetProperty(Actor::Property::SIZE).Get(); mFactoryCache.UpdateBrokenImageRenderer(mImpl->mRenderer, imageSize); actor.AddRenderer(mImpl->mRenderer); } @@ -352,16 +364,10 @@ void SvgVisual::OnSetTransform() if(mImpl->mRenderer) { - mImpl->mTransform.RegisterUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); + mImpl->mTransform.SetUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); } } -bool SvgVisual::IsResourceReady() const -{ - return (mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::READY || - mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::FAILED); -} - void SvgVisual::UpdateShader() { if(mImpl->mRenderer) @@ -378,11 +384,10 @@ Shader SvgVisual::GenerateShader() const { shader = mImageVisualShaderFactory.GetShader( mFactoryCache, - mAttemptAtlasing ? TextureAtlas::ENABLED : TextureAtlas::DISABLED, - DefaultTextureWrapMode::APPLY, - IsRoundedCornerRequired() ? RoundedCorner::ENABLED : RoundedCorner::DISABLED, - IsBorderlineRequired() ? Borderline::ENABLED : Borderline::DISABLED - ); + ImageVisualShaderFeature::FeatureBuilder() + .EnableTextureAtlas(mAttemptAtlasing) + .EnableRoundedCorner(IsRoundedCornerRequired()) + .EnableBorderline(IsBorderlineRequired())); } else {