X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fsvg%2Fsvg-renderer.cpp;h=33c2b30cc832eed4d515de8b207593e3301770ad;hp=d3c128d14dac8475ccf437767b53f4d76a123bc3;hb=debc1fd9a7d6033c14e469d0812b4baccb57c7de;hpb=301d5a88d13f48dd5220fbcb21231ce4516f313f diff --git a/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp b/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp index d3c128d..33c2b30 100644 --- a/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/svg/svg-renderer.cpp @@ -23,26 +23,22 @@ #include #include #include +#include #include // INTERNAL INCLUDES -#include "nanosvg/nanosvg.h" -#include "svg-rasterize-thread.h" +#include +#include #include #include +#include #include namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("svg"); -const char * const IMAGE_URL_NAME("imageUrl"); const char * const UNITS("px"); -const std::string TEXTURE_UNIFORM_NAME = "sTexture"; -const std::string ATLAS_RECT_UNIFORM_NAME = "uAtlasRect"; - const Dali::Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f); } @@ -101,11 +97,12 @@ void SvgRenderer::DoSetOnStage( Actor& actor ) Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY ); if( !geometry ) { - geometry = mFactoryCache.CreateQuadGeometry(); + geometry = Geometry::QUAD(); mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry ); } - Material material = Material::New( shader ); - mImpl->mRenderer = Renderer::New( geometry, material ); + TextureSet textureSet = TextureSet::New(); + mImpl->mRenderer = Renderer::New( geometry, shader ); + mImpl->mRenderer.SetTextures( textureSet ); if( mImpl->mSize != Vector2::ZERO && mParsedImage ) { @@ -146,7 +143,7 @@ void SvgRenderer::SetSize( const Vector2& size ) void SvgRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, IMAGE_RENDERER ); if( !mImageUrl.empty() ) { map.Insert( IMAGE_URL_NAME, mImageUrl ); @@ -193,55 +190,48 @@ void SvgRenderer::AddRasterizationTask( const Vector2& size ) } } -void SvgRenderer::ApplyRasterizedImage( PixelDataPtr rasterizedPixelData ) +void SvgRenderer::ApplyRasterizedImage( PixelData rasterizedPixelData ) { if( GetIsOnStage() ) { - Material currentMaterial = mImpl->mRenderer.GetMaterial(); + TextureSet currentTextureSet = mImpl->mRenderer.GetTextures(); if( mAtlasRect != FULL_TEXTURE_RECT ) { - mAtlasManager.Remove( currentMaterial, mAtlasRect ); + mAtlasManager.Remove( currentTextureSet, mAtlasRect ); } Vector4 atlasRect; - Material material = mAtlasManager.Add(atlasRect, rasterizedPixelData ); - if( material ) // atlasing + TextureSet textureSet = mAtlasManager.Add(atlasRect, rasterizedPixelData ); + if( textureSet ) // atlasing { - if( material != currentMaterial ) + if( textureSet != currentTextureSet ) { - mImpl->mRenderer.SetMaterial( material ); + mImpl->mRenderer.SetTextures( textureSet ); } mImpl->mRenderer.RegisterProperty( ATLAS_RECT_UNIFORM_NAME, atlasRect ); mAtlasRect = atlasRect; } else // no atlasing { - Atlas texture = Atlas::New( rasterizedPixelData->GetWidth(), rasterizedPixelData->GetHeight() ); + Atlas texture = Atlas::New( rasterizedPixelData.GetWidth(), rasterizedPixelData.GetHeight() ); texture.Upload( rasterizedPixelData, 0, 0 ); if( mAtlasRect == FULL_TEXTURE_RECT ) { - material = currentMaterial; + textureSet = currentTextureSet; } else { - material = Material::New( ImageRenderer::GetImageShader( mFactoryCache ) ); - mImpl->mRenderer.SetMaterial( material ); + textureSet = TextureSet::New(); + mImpl->mRenderer.SetTextures( textureSet ); mImpl->mRenderer.RegisterProperty( ATLAS_RECT_UNIFORM_NAME, FULL_TEXTURE_RECT ); mAtlasRect = FULL_TEXTURE_RECT; } - if( material ) + if( textureSet ) { - int index = material.GetTextureIndex( TEXTURE_UNIFORM_NAME ); - if( index != -1 ) - { - material.SetTextureImage( index, texture ); - return; - } - - material.AddTexture( texture, TEXTURE_UNIFORM_NAME ); + TextureSetImage( textureSet, 0u, texture ); } } }