+ map.Insert( Toolkit::DevelVisual::Property::SHADER, customShader );
+ }
+}
+
+Internal::Visual::Base::Impl::Transform::Transform()
+: mOffset( 0.0f,0.0f ),
+ mSize( 1.0f,1.0f ),
+ mOffsetSizeMode( 0.0f,0.0f,0.0f,0.0f ),
+ mOrigin( Toolkit::Align::CENTER ),
+ mAnchorPoint( Toolkit::Align::CENTER )
+{
+}
+
+void Internal::Visual::Base::Impl::Transform::SetPropertyMap( const Property::Map& map )
+{
+ // 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<map.Count(); ++i )
+ {
+ KeyValuePair keyValue = map.GetKeyValue( i );
+ if( keyValue.first.type == Property::Key::INDEX )
+ {
+ switch( keyValue.first.indexKey )
+ {
+ 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 // Key type is STRING
+ {
+ if( keyValue.first == "offset" )
+ {
+ 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 );
+ }
+ }