X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fcolor%2Fcolor-renderer.cpp;h=4ca785dd9257df7b234e4c299b81ecf3a6955145;hb=refs%2Fchanges%2F40%2F49040%2F8;hp=0da8112e91a6bd8af8e20cd6cb4f3b83b514c353;hpb=959d2c624f92023a5167788ccf6f4b4af3f3d6d8;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp b/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp index 0da8112..4ca785d 100644 --- a/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/color/color-renderer.cpp @@ -67,8 +67,8 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( ); } -ColorRenderer::ColorRenderer() -: ControlRenderer(), +ColorRenderer::ColorRenderer( RendererFactoryCache& factoryCache ) +: ControlRenderer( factoryCache ), mBlendColorIndex( Property::INVALID_INDEX ) { } @@ -77,10 +77,8 @@ ColorRenderer::~ColorRenderer() { } -void ColorRenderer::Initialize( RendererFactoryCache& factoryCache, const Property::Map& propertyMap ) +void ColorRenderer::DoInitialize( const Property::Map& propertyMap ) { - Initialize( factoryCache ); - Property::Value* color = propertyMap.Find( COLOR_NAME ); if( !( color && color->Get(mBlendColor) ) ) { @@ -107,36 +105,48 @@ void ColorRenderer::SetOffset( const Vector2& offset ) //ToDo: renderer applies the offset } -void ColorRenderer::CreatePropertyMap( Property::Map& map ) const +void ColorRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); map.Insert( COLOR_NAME, mBlendColor ); } -void ColorRenderer::DoSetOnStage( Actor& actor ) +void ColorRenderer::InitializeRenderer( Renderer& renderer ) { - mBlendColorIndex = (mImpl->mRenderer).RegisterProperty( COLOR_UNIFORM_NAME, mBlendColor ); - if( mBlendColor.a < 1.f ) + Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY ); + if( !geometry ) { - (mImpl->mRenderer).GetMaterial().SetBlendMode( BlendingMode::ON ); + geometry = RendererFactoryCache::CreateQuadGeometry(); + mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry ); } -} -void ColorRenderer::Initialize( RendererFactoryCache& factoryCache) -{ - mImpl->mGeometry = factoryCache.GetGeometry( RendererFactoryCache::QUAD_GEOMETRY ); - if( !(mImpl->mGeometry) ) + Shader shader = mFactoryCache.GetShader( RendererFactoryCache::COLOR_SHADER ); + if( !shader ) + { + shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); + mFactoryCache.SaveShader( RendererFactoryCache::COLOR_SHADER, shader ); + } + + if( !renderer ) + { + Material material = Material::New( shader ); + renderer = Renderer::New( geometry, material ); + } + else { - mImpl->mGeometry = RendererFactoryCache::CreateQuadGeometry(); - factoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, mImpl->mGeometry ); + mImpl->mRenderer.SetGeometry( geometry ); + Material material = mImpl->mRenderer.GetMaterial(); + if( material ) + { + material.SetShader( shader ); + } } - mImpl->mShader = factoryCache.GetShader( RendererFactoryCache::COLOR_SHADER ); - if( !(mImpl->mShader) ) + mBlendColorIndex = renderer.RegisterProperty( COLOR_UNIFORM_NAME, mBlendColor ); + if( mBlendColor.a < 1.f ) { - mImpl->mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); - factoryCache.SaveShader( RendererFactoryCache::COLOR_SHADER, mImpl->mShader ); + renderer.GetMaterial().SetBlendMode( BlendingMode::ON ); } }