X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-base-data-impl.cpp;h=19c2c746884e208567175a739e7f14d453d7887e;hp=489dfb685fcd6b77c3fd87ff14d7d4dae123c91b;hb=5a2a5883422f4d114902ac57d57d7d1e973fbb2e;hpb=fb545906ceea3a2946c8a451f34ea7da283c4ffe diff --git a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp index 489dfb6..19c2c74 100644 --- a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -26,6 +26,7 @@ // INTERNAL INCLUDES #include +#include #include namespace Dali @@ -83,9 +84,13 @@ Dali::Vector2 PointToVector2( Toolkit::Align::Type point, Toolkit::Direction::Ty Internal::Visual::Base::Impl::Impl() : mCustomShader( NULL ), + mBlendSlotDelegate( NULL ), mTransform(), + mMixColor( Color::WHITE ), mControlSize( Vector2::ZERO ), mDepthIndex( 0.0f ), + mMixColorIndex( Property::INVALID_INDEX ), + mOpacityIndex( Property::INVALID_INDEX ), mFlags( 0 ) { } @@ -93,6 +98,7 @@ Internal::Visual::Base::Impl::Impl() Internal::Visual::Base::Impl::~Impl() { delete mCustomShader; + delete mBlendSlotDelegate; } Internal::Visual::Base::Impl::CustomShader::CustomShader( const Property::Map& map ) @@ -112,7 +118,7 @@ void Internal::Visual::Base::Impl::CustomShader::SetPropertyMap( const Property: Property::Value* vertexShaderValue = shaderMap.Find( Toolkit::Visual::Shader::Property::VERTEX_SHADER, CUSTOM_VERTEX_SHADER ); if( vertexShaderValue ) { - if( !vertexShaderValue->Get( mVertexShader ) ) + if( ! GetStringFromProperty( *vertexShaderValue, mVertexShader ) ) { DALI_LOG_ERROR( "'%s' parameter does not correctly specify a string\n", CUSTOM_VERTEX_SHADER ); } @@ -121,7 +127,7 @@ void Internal::Visual::Base::Impl::CustomShader::SetPropertyMap( const Property: Property::Value* fragmentShaderValue = shaderMap.Find( Toolkit::Visual::Shader::Property::FRAGMENT_SHADER, CUSTOM_FRAGMENT_SHADER ); if( fragmentShaderValue ) { - if( !fragmentShaderValue->Get( mFragmentShader ) ) + if( ! GetStringFromProperty( *fragmentShaderValue, mFragmentShader ) ) { DALI_LOG_ERROR( "'%s' parameter does not correctly specify a string\n", CUSTOM_FRAGMENT_SHADER ); } @@ -208,43 +214,82 @@ Internal::Visual::Base::Impl::Transform::Transform() void Internal::Visual::Base::Impl::Transform::SetPropertyMap( const Property::Map& map ) { - //Set default values + // Set default values mOffset = Vector2( 0.0f,0.0f ); mSize = Vector2( 1.0f,1.0f ); mOffsetSizeMode = Vector4( 0.0f,0.0f,0.0f,0.0f ); mOrigin = Toolkit::Align::CENTER; mAnchorPoint = Toolkit::Align::CENTER; + UpdatePropertyMap( map ); +} + +void Internal::Visual::Base::Impl::Transform::UpdatePropertyMap( const Property::Map& map ) +{ for( Property::Map::SizeType i(0); i( keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, align ) ) + switch( keyValue.first.indexKey ) { - mOrigin = align; + case Toolkit::DevelVisual::Transform::Property::OFFSET: + { + keyValue.second.Get( mOffset ); + break; + } + case Toolkit::DevelVisual::Transform::Property::SIZE: + { + keyValue.second.Get( mSize ); + break; + } + case Toolkit::DevelVisual::Transform::Property::ORIGIN: + { + Scripting::GetEnumerationProperty< Toolkit::Align::Type >( keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, mOrigin ); + break; + } + case Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT: + { + Scripting::GetEnumerationProperty< Toolkit::Align::Type >( keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, mAnchorPoint ); + break; + } + case Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE: + { + keyValue.second.Get( mOffsetSizeMode ); + break; + } } } - else if( keyValue.first == Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT ) + else // Key type is STRING { - Toolkit::Align::Type align(Toolkit::Align::CENTER); - if( Scripting::GetEnumerationProperty< Toolkit::Align::Type >( keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, align ) ) + if( keyValue.first == "offset" ) { - mAnchorPoint = align; + keyValue.second.Get( mOffset ); + } + else if( keyValue.first == "size" ) + { + keyValue.second.Get( mSize ); + } + else if( keyValue.first == "origin" ) + { + Toolkit::Align::Type align(Toolkit::Align::CENTER); + if( Scripting::GetEnumerationProperty< Toolkit::Align::Type >( keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, align ) ) + { + mOrigin = align; + } + } + else if( keyValue.first == "anchorPoint" ) + { + Toolkit::Align::Type align(Toolkit::Align::CENTER); + if( Scripting::GetEnumerationProperty< Toolkit::Align::Type >( keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, align ) ) + { + mAnchorPoint = align; + } + } + else if( keyValue.first == "offsetSizeMode" ) + { + keyValue.second.Get( mOffsetSizeMode ); } - } - else if( keyValue.first == Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE ) - { - keyValue.second.Get( mOffsetSizeMode ); } } }