X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fborder%2Fborder-renderer.cpp;h=ad46c2fb8daa70c6d9136d126f99479aeb4459a9;hb=refs%2Fchanges%2F40%2F49040%2F8;hp=423afc2fec9a4bf3b4d17a9d491915b81e4e87d0;hpb=959d2c624f92023a5167788ccf6f4b4af3f3d6d8;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp index 423afc2..ad46c2f 100644 --- a/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/border/border-renderer.cpp @@ -75,8 +75,8 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( ); } -BorderRenderer::BorderRenderer() -: ControlRenderer(), +BorderRenderer::BorderRenderer( RendererFactoryCache& factoryCache ) +: ControlRenderer( factoryCache ), mBorderColor( Color::TRANSPARENT ), mBorderSize( 0.f ), mBorderColorIndex( Property::INVALID_INDEX ), @@ -88,10 +88,8 @@ BorderRenderer::~BorderRenderer() { } -void BorderRenderer::Initialize( RendererFactoryCache& factoryCache, const Property::Map& propertyMap ) +void BorderRenderer::DoInitialize( const Property::Map& propertyMap ) { - Initialize( factoryCache ); - Property::Value* color = propertyMap.Find( COLOR_NAME ); if( !( color && color->Get(mBorderColor) ) ) { @@ -122,7 +120,7 @@ void BorderRenderer::DoSetOnStage( Actor& actor ) mBorderSizeIndex = (mImpl->mRenderer).RegisterProperty( SIZE_UNIFORM_NAME, mBorderSize ); } -void BorderRenderer::CreatePropertyMap( Property::Map& map ) const +void BorderRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); @@ -130,20 +128,35 @@ void BorderRenderer::CreatePropertyMap( Property::Map& map ) const map.Insert( SIZE_NAME, mBorderSize ); } -void BorderRenderer::Initialize( RendererFactoryCache& factoryCache) +void BorderRenderer::InitializeRenderer( Renderer& renderer ) { - mImpl->mGeometry = factoryCache.GetGeometry( RendererFactoryCache::BORDER_GEOMETRY ); - if( !(mImpl->mGeometry) ) + Geometry geometry = mFactoryCache.GetGeometry( RendererFactoryCache::BORDER_GEOMETRY ); + if( !geometry ) + { + geometry = CreateBorderGeometry(); + mFactoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, geometry ); + } + + Shader shader = mFactoryCache.GetShader( RendererFactoryCache::BORDER_SHADER ); + if( !shader ) { - mImpl->mGeometry = CreateBorderGeometry(); - factoryCache.SaveGeometry( RendererFactoryCache::QUAD_GEOMETRY, mImpl->mGeometry ); + shader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); + mFactoryCache.SaveShader( RendererFactoryCache::COLOR_SHADER, shader ); } - mImpl->mShader = factoryCache.GetShader( RendererFactoryCache::BORDER_SHADER ); - if( !(mImpl->mShader) ) + if( !renderer ) { - mImpl->mShader = Shader::New( VERTEX_SHADER, FRAGMENT_SHADER ); - factoryCache.SaveShader( RendererFactoryCache::COLOR_SHADER, mImpl->mShader ); + Material material = Material::New( shader ); + renderer = Renderer::New( geometry, material ); + } + else + { + mImpl->mRenderer.SetGeometry( geometry ); + Material material = mImpl->mRenderer.GetMaterial(); + if( material ) + { + material.SetShader( shader ); + } } } @@ -180,11 +193,11 @@ void BorderRenderer::SetBorderSize( float size ) * | /| /| /| * |/ |/ |/ | * 4--5--6--7 - * | /| | /| - * |/ | |/ | + * |\ | |\ | + * | \| | \| * 8--9--10-11 - * | /| /| /| - * |/ |/ |/ | + * | /| /|\ | + * |/ |/ | \| * 12-13-14-15 */ Geometry BorderRenderer::CreateBorderGeometry() @@ -222,19 +235,17 @@ Geometry BorderRenderer::CreateBorderGeometry() borderVertices.SetData(borderVertexData); // Create indices - unsigned int indexData[48] = { 0, 4, 1, 1, 4, 5, 1, 5, 2, 2, 5, 6, 2, 6,3, 3, 6, 7, - 4, 8, 5, 5, 8, 9, 6, 10, 7, 7, 10, 11, - 8, 12, 9, 9, 12, 13, 9, 13, 10, 10, 13, 14, 10, 11, 14, 11, 14, 15}; - + unsigned int indexData[24] = { 0,4,1,5,2,6,3,7,7,6,11,10,15,14,14,10,13,9,12,8,8,9,4,5 }; Property::Map indexFormat; indexFormat[INDEX_NAME] = Property::INTEGER; - PropertyBuffer indices = PropertyBuffer::New( indexFormat, 48 ); + PropertyBuffer indices = PropertyBuffer::New( indexFormat, 24 ); indices.SetData(indexData); // Create the geometry object Geometry geometry = Geometry::New(); geometry.AddVertexBuffer( borderVertices ); geometry.SetIndexBuffer( indices ); + geometry.SetGeometryType( Geometry::TRIANGLE_STRIP ); return geometry; }