X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Fgradient%2Fgradient-renderer.cpp;h=f64ad61a11b6084834611848b42f19c1e557bf57;hp=e11f3ffa4828d3e1cf573e473f356980dcaa965f;hb=36ac338ff7e9c299ce45818d77aa8f71c63a45aa;hpb=8e902a37f200809376dc5746e0bcb9d40dd79049 diff --git a/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp b/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp index e11f3ff..f64ad61 100644 --- a/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp +++ b/dali-toolkit/internal/controls/renderers/gradient/gradient-renderer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -43,9 +44,6 @@ namespace Internal namespace { -const char * const RENDERER_TYPE("rendererType"); -const char * const RENDERER_TYPE_VALUE("gradient"); - // properties: linear gradient const char * const START_POSITION_NAME("startPosition"); // Property::VECTOR2 const char * const END_POSITION_NAME("endPosition"); // Property::VECTOR2 @@ -69,7 +67,6 @@ const char * const SPREAD_REPEAT("repeat"); // uniform names const char * const UNIFORM_ALIGNMENT_MATRIX_NAME( "uAlignmentMatrix" ); -const char * const UNIFORM_TEXTULRE_NAME("sTexture"); // default offset value const unsigned int DEFAULT_OFFSET_MINIMUM = 0.0f; @@ -186,6 +183,7 @@ GradientRenderer::GradientRenderer( RendererFactoryCache& factoryCache ) : ControlRenderer( factoryCache ), mGradientType( LINEAR ) { + mImpl->mFlags |= Impl::IS_PREMULTIPLIED_ALPHA; } GradientRenderer::~GradientRenderer() @@ -246,7 +244,7 @@ void GradientRenderer::DoSetOnStage( Actor& actor ) void GradientRenderer::DoCreatePropertyMap( Property::Map& map ) const { map.Clear(); - map.Insert( RENDERER_TYPE, RENDERER_TYPE_VALUE ); + map.Insert( RENDERER_TYPE, GRADIENT_RENDERER ); Gradient::GradientUnits units = mGradient->GetGradientUnits(); if( units == Gradient::USER_SPACE_ON_USE ) @@ -278,7 +276,17 @@ void GradientRenderer::DoCreatePropertyMap( Property::Map& map ) const for( unsigned int i=0; imRenderer = Renderer::New( geometry, material ); - - Dali::BufferImage lookupTexture = mGradient->GenerateLookupTexture(); - Sampler sampler = Sampler::New(); + //Set up the texture set + TextureSet textureSet = TextureSet::New(); + Dali::Texture lookupTexture = mGradient->GenerateLookupTexture(); + textureSet.SetTexture( 0u, lookupTexture ); Dali::WrapMode::Type wrap = GetWrapMode( mGradient->GetSpreadMethod() ); + Sampler sampler = Sampler::New(); sampler.SetWrapMode( wrap, wrap ); + textureSet.SetSampler( 0u, sampler ); - material.AddTexture( lookupTexture, UNIFORM_TEXTULRE_NAME, sampler ); + mImpl->mRenderer = Renderer::New( geometry, shader ); + mImpl->mRenderer.SetTextures( textureSet ); mImpl->mRenderer.RegisterProperty( UNIFORM_ALIGNMENT_MATRIX_NAME, mGradientTransform ); } @@ -383,7 +392,7 @@ bool GradientRenderer::NewGradient(Type gradientType, const Property::Map& prope { if( (colorArray->GetElementAt(i)).Get(color) ) { - mGradient->AddStop( offsetArray[i], color); + mGradient->AddStop( offsetArray[i], Vector4(color.r*color.a, color.g*color.a, color.b*color.a, color.a)); numValidStop++; } } @@ -451,13 +460,16 @@ void GradientRenderer::GetStopOffsets(const Property::Value* value, VectorGetArray(); - unsigned int numStop = offsetArray->Count(); - float offset; - for( unsigned int i=0; iGetElementAt(i).Get(offset) ) + unsigned int numStop = offsetArray->Count(); + float offset; + for( unsigned int i=0; iGetElementAt(i).Get(offset) ) + { + stopOffsets.PushBack( offset ); + } } } break;