X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fbuilder%2Fbuilder-actor.cpp;h=fbe8c335e272e60786cb7c3cce55944efd799a9a;hb=610da2945e1b56e09b12466b1c23b90aa348abdd;hp=a57129fcc4f9561387ea31e1656f5725f71498c5;hpb=e2e00e5c207b546067d57a0a747f4803a18c27bd;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/builder/builder-actor.cpp b/dali-toolkit/internal/builder/builder-actor.cpp index a57129f..fbe8c33 100644 --- a/dali-toolkit/internal/builder/builder-actor.cpp +++ b/dali-toolkit/internal/builder/builder-actor.cpp @@ -1,26 +1,28 @@ -// -// Copyright (c) 2014 Samsung Electronics Co., Ltd. -// -// Licensed under the Flora License, Version 1.0 (the License); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://floralicense.org/license/ -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an AS IS BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * Copyright (c) 2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ // EXTERNAL INCLUDES #include #include -#include +#include // INTERNAL INCLUDES -#include +#include +#include namespace Dali { @@ -32,12 +34,13 @@ namespace Internal { using namespace Dali::Scripting; +extern bool SetPropertyFromNode( const TreeNode& node, Property::Value& value, const Replacement& constant ); /* * Handles special case actor configuration (anything thats not already a property) * */ -Actor SetupActor( const TreeNode& child, Actor& actor ) +Actor SetupActor( const TreeNode& child, Actor& actor, const Replacement& constant ) { DALI_ASSERT_ALWAYS( actor && "Empty actor handle" ); @@ -46,11 +49,11 @@ Actor SetupActor( const TreeNode& child, Actor& actor ) // this has already been set as a generic property. if( !IsVector3( child, "parent-origin") ) { - if( OptionalVector3 v = IsVector3(child, "parent-origin") ) + if( OptionalVector3 v = constant.IsVector3( IsChild(child, "parent-origin") ) ) { actor.SetParentOrigin( *v ); } - else if( OptionalString origin = IsString(child, "parent-origin") ) + else if( OptionalString origin = constant.IsString( IsChild(child, "parent-origin") ) ) { actor.SetParentOrigin( GetAnchorConstant(*origin) ); } @@ -58,16 +61,42 @@ Actor SetupActor( const TreeNode& child, Actor& actor ) if( !IsVector3(child, "anchor-point") ) { - if( OptionalVector3 v = IsVector3(child, "anchor-point") ) + if( OptionalVector3 v = constant.IsVector3( IsChild(child, "anchor-point") ) ) { actor.SetAnchorPoint( *v ); } - else if( OptionalString anchor = IsString(child, "anchor-point") ) + else if( OptionalString anchor = constant.IsString( IsChild(child, "anchor-point") ) ) { actor.SetAnchorPoint( GetAnchorConstant(*anchor) ); } } + // Add custom properties + if( OptionalChild customPropertiesChild = IsChild(child, "custom-properties") ) + { + const TreeNode& customPropertiesNode = *customPropertiesChild; + const TreeConstIter endIter = customPropertiesNode.CEnd(); + for( TreeConstIter iter = customPropertiesNode.CBegin(); endIter != iter; ++iter ) + { + const TreeNode::KeyNodePair& keyChild = *iter; + std::string key( keyChild.first ); + + Property::Index index = actor.GetPropertyIndex( key ); + Property::Value value; + if( SetPropertyFromNode( keyChild.second, value, constant )) + { + if( Property::INVALID_INDEX == index ) + { + actor.RegisterProperty( key, value, Property::READ_WRITE ); + } + else + { + actor.SetProperty( index, value ); + } + } + } + } + return actor; }