+ map.Insert(Toolkit::Visual::Property::SHADER, customShader);
+ }
+}
+
+Internal::Visual::Base::Impl::Transform::Transform()
+: mOffset(0.0f, 0.0f),
+ mSize(1.0f, 1.0f),
+ mExtraSize(0.0f, 0.0f),
+ mOffsetSizeMode(0.0f, 0.0f, 0.0f, 0.0f),
+ mOrigin(Toolkit::Align::TOP_BEGIN),
+ mAnchorPoint(Toolkit::Align::TOP_BEGIN),
+ mOffsetIndex(Property::INVALID_INDEX),
+ mSizeIndex(Property::INVALID_INDEX)
+{
+}
+
+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);
+ mExtraSize = Vector2(0.0f, 0.0f);
+ mOffsetSizeMode = Vector4(0.0f, 0.0f, 0.0f, 0.0f);
+ mOrigin = Toolkit::Align::TOP_BEGIN;
+ mAnchorPoint = Toolkit::Align::TOP_BEGIN;
+
+ 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::Visual::Transform::Property::OFFSET:
+ {
+ keyValue.second.Get(mOffset);
+ break;
+ }
+ case Toolkit::Visual::Transform::Property::SIZE:
+ {
+ keyValue.second.Get(mSize);
+ break;
+ }
+ case Toolkit::Visual::Transform::Property::ORIGIN:
+ {
+ Scripting::GetEnumerationProperty<Toolkit::Align::Type>(keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, mOrigin);
+ break;
+ }
+ case Toolkit::Visual::Transform::Property::ANCHOR_POINT:
+ {
+ Scripting::GetEnumerationProperty<Toolkit::Align::Type>(keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, mAnchorPoint);
+ break;
+ }
+ case Toolkit::Visual::Transform::Property::OFFSET_POLICY:
+ {
+ Vector2 policy;
+ if(GetPolicyFromValue(keyValue.second, policy))
+ {
+ mOffsetSizeMode.x = policy.x;
+ mOffsetSizeMode.y = policy.y;
+ }
+ break;
+ }
+ case Toolkit::Visual::Transform::Property::SIZE_POLICY:
+ {
+ Vector2 policy;
+ if(GetPolicyFromValue(keyValue.second, policy))
+ {
+ mOffsetSizeMode.z = policy.x;
+ mOffsetSizeMode.w = policy.y;
+ }
+ break;
+ }
+ case Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE:
+ {
+ keyValue.second.Get(mExtraSize);
+ 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")
+ {
+ Scripting::GetEnumerationProperty<Toolkit::Align::Type>(keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, mOrigin);
+ }
+ else if(keyValue.first == "anchorPoint")
+ {
+ Scripting::GetEnumerationProperty<Toolkit::Align::Type>(keyValue.second, ALIGN_TABLE, ALIGN_TABLE_COUNT, mAnchorPoint);
+ }
+ else if(keyValue.first == "offsetPolicy")
+ {
+ Vector2 policy;
+ if(GetPolicyFromValue(keyValue.second, policy))
+ {
+ mOffsetSizeMode.x = policy.x;
+ mOffsetSizeMode.y = policy.y;
+ }
+ }
+ else if(keyValue.first == "sizePolicy")
+ {
+ Vector2 policy;
+ if(GetPolicyFromValue(keyValue.second, policy))
+ {
+ mOffsetSizeMode.z = policy.x;
+ mOffsetSizeMode.w = policy.y;
+ }
+ }
+ else if(keyValue.first == "extraSize")
+ {
+ keyValue.second.Get(mExtraSize);
+ }
+ }