/*
- * 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.
#include <dali-toolkit/internal/controls/renderers/renderer-factory-impl.h>
#include <dali-toolkit/internal/controls/renderers/renderer-factory-cache.h>
#include <dali-toolkit/internal/controls/renderers/control-renderer-data-impl.h>
+#include <dali-toolkit/internal/controls/renderers/renderer-string-constants.h>
#include <dali-toolkit/internal/controls/renderers/gradient/linear-gradient.h>
#include <dali-toolkit/internal/controls/renderers/gradient/radial-gradient.h>
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
: ControlRenderer( factoryCache ),
mGradientType( LINEAR )
{
+ mImpl->mFlags |= Impl::IS_PREMULTIPLIED_ALPHA;
}
GradientRenderer::~GradientRenderer()
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 )
for( unsigned int i=0; i<stops.Count(); i++ )
{
offsets.PushBack( stops[i].mOffset );
- colors.PushBack( stops[i].mStopColor );
+ if( EqualsZero(stops[i].mStopColor.a) )
+ {
+ colors.PushBack( Vector4::ZERO );
+ }
+ else
+ {
+ colors.PushBack( Vector4( stops[i].mStopColor.r / stops[i].mStopColor.a,
+ stops[i].mStopColor.g / stops[i].mStopColor.a,
+ stops[i].mStopColor.b / stops[i].mStopColor.a,
+ stops[i].mStopColor.a));
+ }
}
map.Insert( STOP_OFFSET_NAME, offsets );
//Set up the texture set
TextureSet textureSet = TextureSet::New();
- Dali::BufferImage lookupTexture = mGradient->GenerateLookupTexture();
- textureSet.SetImage( 0u, lookupTexture );
+ Dali::Texture lookupTexture = mGradient->GenerateLookupTexture();
+ textureSet.SetTexture( 0u, lookupTexture );
Dali::WrapMode::Type wrap = GetWrapMode( mGradient->GetSpreadMethod() );
Sampler sampler = Sampler::New();
sampler.SetWrapMode( wrap, wrap );
{
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++;
}
}
case Property::ARRAY:
{
Property::Array* offsetArray = value->GetArray();
- unsigned int numStop = offsetArray->Count();
- float offset;
- for( unsigned int i=0; i<numStop; i++ )
+ if( offsetArray )
{
- if( offsetArray->GetElementAt(i).Get(offset) )
+ unsigned int numStop = offsetArray->Count();
+ float offset;
+ for( unsigned int i=0; i<numStop; i++ )
{
- stopOffsets.PushBack( offset );
+ if( offsetArray->GetElementAt(i).Get(offset) )
+ {
+ stopOffsets.PushBack( offset );
+ }
}
}
break;