2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/internal/event/actors/actor-property-handler.h>
22 #include <dali/public-api/math/vector2.h>
23 #include <dali/public-api/math/vector3.h>
25 #include <dali/devel-api/actors/actor-devel.h>
27 #include <dali/internal/event/actors/actor-impl.h>
28 #include <dali/internal/event/actors/actor-relayouter.h>
29 #include <dali/internal/event/common/property-helper.h>
30 #include <dali/internal/update/nodes/node-declarations.h>
31 #include <dali/internal/update/nodes/node-messages.h>
33 using Dali::Internal::SceneGraph::AnimatableProperty;
34 using Dali::Internal::SceneGraph::Node;
35 using Dali::Internal::SceneGraph::PropertyBase;
41 namespace // unnamed namespace
49 DALI_ENUM_TO_STRING_TABLE_BEGIN_WITH_TYPE(AnchorValue, ANCHOR_CONSTANT)
50 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, TOP_LEFT)
51 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, TOP_CENTER)
52 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, TOP_RIGHT)
53 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, CENTER_LEFT)
54 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, CENTER)
55 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, CENTER_RIGHT)
56 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, BOTTOM_LEFT)
57 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, BOTTOM_CENTER)
58 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, BOTTOM_RIGHT)
59 DALI_ENUM_TO_STRING_TABLE_END(ANCHOR_CONSTANT)
61 DALI_ENUM_TO_STRING_TABLE_BEGIN(COLOR_MODE)
62 DALI_ENUM_TO_STRING(USE_OWN_COLOR)
63 DALI_ENUM_TO_STRING(USE_PARENT_COLOR)
64 DALI_ENUM_TO_STRING(USE_OWN_MULTIPLY_PARENT_COLOR)
65 DALI_ENUM_TO_STRING(USE_OWN_MULTIPLY_PARENT_ALPHA)
66 DALI_ENUM_TO_STRING_TABLE_END(COLOR_MODE)
68 DALI_ENUM_TO_STRING_TABLE_BEGIN(DRAW_MODE)
69 DALI_ENUM_TO_STRING_WITH_SCOPE(DrawMode, NORMAL)
70 DALI_ENUM_TO_STRING_WITH_SCOPE(DrawMode, OVERLAY_2D)
71 DALI_ENUM_TO_STRING_TABLE_END(DRAW_MODE)
73 DALI_ENUM_TO_STRING_TABLE_BEGIN(RESIZE_POLICY)
74 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, FIXED)
75 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, USE_NATURAL_SIZE)
76 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, FILL_TO_PARENT)
77 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, SIZE_RELATIVE_TO_PARENT)
78 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, SIZE_FIXED_OFFSET_FROM_PARENT)
79 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, FIT_TO_CHILDREN)
80 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, DIMENSION_DEPENDENCY)
81 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, USE_ASSIGNED_SIZE)
82 DALI_ENUM_TO_STRING_TABLE_END(RESIZE_POLICY)
84 DALI_ENUM_TO_STRING_TABLE_BEGIN(SIZE_SCALE_POLICY)
85 DALI_ENUM_TO_STRING_WITH_SCOPE(SizeScalePolicy, USE_SIZE_SET)
86 DALI_ENUM_TO_STRING_WITH_SCOPE(SizeScalePolicy, FIT_WITH_ASPECT_RATIO)
87 DALI_ENUM_TO_STRING_WITH_SCOPE(SizeScalePolicy, FILL_WITH_ASPECT_RATIO)
88 DALI_ENUM_TO_STRING_TABLE_END(SIZE_SCALE_POLICY)
90 DALI_ENUM_TO_STRING_TABLE_BEGIN(CLIPPING_MODE)
91 DALI_ENUM_TO_STRING_WITH_SCOPE(ClippingMode, DISABLED)
92 DALI_ENUM_TO_STRING_WITH_SCOPE(ClippingMode, CLIP_CHILDREN)
93 DALI_ENUM_TO_STRING_TABLE_END(CLIPPING_MODE)
95 DALI_ENUM_TO_STRING_TABLE_BEGIN(LAYOUT_DIRECTION)
96 DALI_ENUM_TO_STRING_WITH_SCOPE(LayoutDirection, LEFT_TO_RIGHT)
97 DALI_ENUM_TO_STRING_WITH_SCOPE(LayoutDirection, RIGHT_TO_LEFT)
98 DALI_ENUM_TO_STRING_TABLE_END(LAYOUT_DIRECTION)
100 bool GetAnchorPointConstant(const std::string& value, Vector3& anchor)
102 for(uint32_t i = 0; i < ANCHOR_CONSTANT_TABLE_COUNT; ++i)
104 uint32_t sizeIgnored = 0;
105 if(CompareTokens(value.c_str(), ANCHOR_CONSTANT_TABLE[i].name, sizeIgnored))
107 anchor = ANCHOR_CONSTANT_TABLE[i].value;
114 inline bool GetParentOriginConstant(const std::string& value, Vector3& parentOrigin)
116 // Values are the same so just use the same table as anchor-point
117 return GetAnchorPointConstant(value, parentOrigin);
120 } // unnamed namespace
122 void Actor::PropertyHandler::SetDefaultProperty(Internal::Actor& actor, Property::Index index, const Property::Value& property)
126 case Dali::Actor::Property::PARENT_ORIGIN:
128 Property::Type type = property.GetType();
129 if(type == Property::VECTOR3)
131 actor.SetParentOrigin(property.Get<Vector3>());
133 else if(type == Property::STRING)
135 std::string parentOriginString;
136 property.Get(parentOriginString);
137 Vector3 parentOrigin;
138 if(GetParentOriginConstant(parentOriginString, parentOrigin))
140 actor.SetParentOrigin(parentOrigin);
146 case Dali::Actor::Property::PARENT_ORIGIN_X:
148 const Vector3& current = actor.GetCurrentParentOrigin();
149 actor.SetParentOrigin(Vector3(property.Get<float>(), current.y, current.z));
153 case Dali::Actor::Property::PARENT_ORIGIN_Y:
155 const Vector3& current = actor.GetCurrentParentOrigin();
156 actor.SetParentOrigin(Vector3(current.x, property.Get<float>(), current.z));
160 case Dali::Actor::Property::PARENT_ORIGIN_Z:
162 const Vector3& current = actor.GetCurrentParentOrigin();
163 actor.SetParentOrigin(Vector3(current.x, current.y, property.Get<float>()));
167 case Dali::Actor::Property::ANCHOR_POINT:
169 Property::Type type = property.GetType();
170 if(type == Property::VECTOR3)
172 actor.SetAnchorPoint(property.Get<Vector3>());
174 else if(type == Property::STRING)
176 std::string anchorPointString;
177 property.Get(anchorPointString);
179 if(GetAnchorPointConstant(anchorPointString, anchor))
181 actor.SetAnchorPoint(anchor);
187 case Dali::Actor::Property::ANCHOR_POINT_X:
189 const Vector3& current = actor.GetCurrentAnchorPoint();
190 actor.SetAnchorPoint(Vector3(property.Get<float>(), current.y, current.z));
194 case Dali::Actor::Property::ANCHOR_POINT_Y:
196 const Vector3& current = actor.GetCurrentAnchorPoint();
197 actor.SetAnchorPoint(Vector3(current.x, property.Get<float>(), current.z));
201 case Dali::Actor::Property::ANCHOR_POINT_Z:
203 const Vector3& current = actor.GetCurrentAnchorPoint();
204 actor.SetAnchorPoint(Vector3(current.x, current.y, property.Get<float>()));
208 case Dali::Actor::Property::SIZE:
210 Property::Type type = property.GetType();
211 if(type == Property::VECTOR2)
213 actor.SetSize(property.Get<Vector2>());
215 else if(type == Property::VECTOR3)
217 actor.SetSize(property.Get<Vector3>());
222 case Dali::Actor::Property::SIZE_WIDTH:
224 actor.SetWidth(property.Get<float>());
228 case Dali::Actor::Property::SIZE_HEIGHT:
230 actor.SetHeight(property.Get<float>());
234 case Dali::Actor::Property::SIZE_DEPTH:
236 actor.SetDepth(property.Get<float>());
240 case Dali::Actor::Property::POSITION:
242 Property::Type type = property.GetType();
243 if(type == Property::VECTOR2)
245 Vector2 position = property.Get<Vector2>();
246 actor.SetPosition(Vector3(position.x, position.y, 0.0f));
248 else if(type == Property::VECTOR3)
250 actor.SetPosition(property.Get<Vector3>());
255 case Dali::Actor::Property::POSITION_X:
257 actor.SetX(property.Get<float>());
261 case Dali::Actor::Property::POSITION_Y:
263 actor.SetY(property.Get<float>());
267 case Dali::Actor::Property::POSITION_Z:
269 actor.SetZ(property.Get<float>());
273 case Dali::Actor::Property::ORIENTATION:
275 actor.SetOrientation(property.Get<Quaternion>());
279 case Dali::Actor::Property::SCALE:
281 Property::Type type = property.GetType();
282 if(type == Property::FLOAT)
284 float scale = property.Get<float>();
285 actor.SetScale(scale, scale, scale);
287 else if(type == Property::VECTOR3)
289 actor.SetScale(property.Get<Vector3>());
294 case Dali::Actor::Property::SCALE_X:
296 actor.SetScaleX(property.Get<float>());
300 case Dali::Actor::Property::SCALE_Y:
302 actor.SetScaleY(property.Get<float>());
306 case Dali::Actor::Property::SCALE_Z:
308 actor.SetScaleZ(property.Get<float>());
312 case Dali::Actor::Property::VISIBLE:
314 actor.SetVisible(property.Get<bool>());
318 case Dali::Actor::Property::COLOR:
320 Property::Type type = property.GetType();
321 if(type == Property::VECTOR3)
323 Vector3 color = property.Get<Vector3>();
324 actor.SetColor(Vector4(color.r, color.g, color.b, 1.0f));
326 else if(type == Property::VECTOR4)
328 actor.SetColor(property.Get<Vector4>());
333 case Dali::Actor::Property::COLOR_RED:
335 actor.SetColorRed(property.Get<float>());
339 case Dali::Actor::Property::COLOR_GREEN:
341 actor.SetColorGreen(property.Get<float>());
345 case Dali::Actor::Property::COLOR_BLUE:
347 actor.SetColorBlue(property.Get<float>());
351 case Dali::Actor::Property::COLOR_ALPHA:
352 case Dali::Actor::Property::OPACITY:
355 if(property.Get(value))
357 actor.SetOpacity(value);
362 case Dali::Actor::Property::NAME:
364 actor.SetName(property.Get<std::string>());
368 case Dali::Actor::Property::SENSITIVE:
370 actor.SetSensitive(property.Get<bool>());
374 case Dali::Actor::Property::LEAVE_REQUIRED:
376 actor.SetLeaveRequired(property.Get<bool>());
380 case Dali::Actor::Property::INHERIT_POSITION:
382 actor.SetInheritPosition(property.Get<bool>());
386 case Dali::Actor::Property::INHERIT_ORIENTATION:
388 actor.SetInheritOrientation(property.Get<bool>());
392 case Dali::Actor::Property::INHERIT_SCALE:
394 actor.SetInheritScale(property.Get<bool>());
398 case Dali::Actor::Property::COLOR_MODE:
400 ColorMode mode = actor.mColorMode;
401 if(Scripting::GetEnumerationProperty<ColorMode>(property, COLOR_MODE_TABLE, COLOR_MODE_TABLE_COUNT, mode))
403 actor.SetColorMode(mode);
408 case Dali::Actor::Property::DRAW_MODE:
410 DrawMode::Type mode = actor.mDrawMode;
411 if(Scripting::GetEnumerationProperty<DrawMode::Type>(property, DRAW_MODE_TABLE, DRAW_MODE_TABLE_COUNT, mode))
413 actor.SetDrawMode(mode);
418 case Dali::Actor::Property::SIZE_MODE_FACTOR:
420 actor.SetSizeModeFactor(property.Get<Vector3>());
424 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
426 ResizePolicy::Type type = actor.GetResizePolicy(Dimension::WIDTH);
427 if(Scripting::GetEnumerationProperty<ResizePolicy::Type>(property, RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT, type))
429 actor.SetResizePolicy(type, Dimension::WIDTH);
434 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
436 ResizePolicy::Type type = actor.GetResizePolicy(Dimension::HEIGHT);
437 if(Scripting::GetEnumerationProperty<ResizePolicy::Type>(property, RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT, type))
439 actor.SetResizePolicy(type, Dimension::HEIGHT);
444 case Dali::Actor::Property::SIZE_SCALE_POLICY:
446 SizeScalePolicy::Type type = actor.GetSizeScalePolicy();
447 if(Scripting::GetEnumerationProperty<SizeScalePolicy::Type>(property, SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT, type))
449 actor.SetSizeScalePolicy(type);
454 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
456 if(property.Get<bool>())
458 actor.SetResizePolicy(ResizePolicy::DIMENSION_DEPENDENCY, Dimension::WIDTH);
463 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
465 if(property.Get<bool>())
467 actor.SetResizePolicy(ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT);
472 case Dali::Actor::Property::PADDING:
474 Vector4 padding = property.Get<Vector4>();
475 actor.SetPadding(Vector2(padding.x, padding.y), Dimension::WIDTH);
476 actor.SetPadding(Vector2(padding.z, padding.w), Dimension::HEIGHT);
480 case Dali::Actor::Property::MINIMUM_SIZE:
482 Vector2 size = property.Get<Vector2>();
483 actor.SetMinimumSize(size.x, Dimension::WIDTH);
484 actor.SetMinimumSize(size.y, Dimension::HEIGHT);
488 case Dali::Actor::Property::MAXIMUM_SIZE:
490 Vector2 size = property.Get<Vector2>();
491 actor.SetMaximumSize(size.x, Dimension::WIDTH);
492 actor.SetMaximumSize(size.y, Dimension::HEIGHT);
496 case Dali::DevelActor::Property::SIBLING_ORDER:
500 if(property.Get(value))
502 Actor* parent = actor.GetParent();
505 parent->SetSiblingOrderOfChild(actor, value);
511 case Dali::Actor::Property::CLIPPING_MODE:
513 ClippingMode::Type convertedValue = actor.mClippingMode;
514 if(Scripting::GetEnumerationProperty<ClippingMode::Type>(property, CLIPPING_MODE_TABLE, CLIPPING_MODE_TABLE_COUNT, convertedValue))
516 actor.mClippingMode = convertedValue;
517 SetClippingModeMessage(actor.GetEventThreadServices(), actor.GetNode(), actor.mClippingMode);
522 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
525 if(property.Get(value) && value != actor.mPositionUsesAnchorPoint)
527 actor.mPositionUsesAnchorPoint = value;
528 SetPositionUsesAnchorPointMessage(actor.GetEventThreadServices(), actor.GetNode(), actor.mPositionUsesAnchorPoint);
533 case Dali::Actor::Property::LAYOUT_DIRECTION:
535 Dali::LayoutDirection::Type direction = actor.mLayoutDirection;
536 actor.mInheritLayoutDirection = false;
538 if(Scripting::GetEnumerationProperty<LayoutDirection::Type>(property, LAYOUT_DIRECTION_TABLE, LAYOUT_DIRECTION_TABLE_COUNT, direction))
540 actor.mParentImpl.InheritLayoutDirectionRecursively(direction, true);
545 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
548 if(property.Get(value))
550 actor.SetInheritLayoutDirection(value);
555 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
558 if(property.Get(value))
560 actor.SetKeyboardFocusable(value);
565 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
567 actor.SetUpdateSizeHint(property.Get<Vector2>());
571 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
573 bool boolValue = false;
574 if(property.Get(boolValue))
576 actor.mCaptureAllTouchAfterStart = boolValue;
581 case Dali::DevelActor::Property::TOUCH_AREA_OFFSET:
584 if(property.Get(rectValue))
586 actor.SetTouchAreaOffset(rectValue);
591 case Dali::DevelActor::Property::BLEND_EQUATION:
594 if(property.Get(value))
596 actor.SetBlendEquation(static_cast<DevelBlendEquation::Type>(value));
601 case Dali::DevelActor::Property::TOUCH_FOCUSABLE:
604 if(property.Get(value))
606 actor.SetTouchFocusable(value);
611 case Dali::DevelActor::Property::KEYBOARD_FOCUSABLE_CHILDREN:
614 if(property.Get(value))
616 actor.SetKeyboardFocusableChildren(value);
623 // this can happen in the case of a non-animatable default property so just do nothing
629 void Actor::PropertyHandler::SetSceneGraphProperty(
630 Property::Index index,
631 const PropertyMetadata& entry,
632 const Property::Value& value,
633 EventThreadServices& eventThreadServices,
634 const SceneGraph::Node& node)
636 switch(entry.GetType())
638 case Property::BOOLEAN:
640 const AnimatableProperty<bool>* property = dynamic_cast<const AnimatableProperty<bool>*>(entry.GetSceneGraphProperty());
641 DALI_ASSERT_DEBUG(NULL != property);
643 // property is being used in a separate thread; queue a message to set the property
644 SceneGraph::NodePropertyMessage<bool>::Send(eventThreadServices, &node, property, &AnimatableProperty<bool>::Bake, value.Get<bool>());
649 case Property::INTEGER:
651 const AnimatableProperty<int>* property = dynamic_cast<const AnimatableProperty<int>*>(entry.GetSceneGraphProperty());
652 DALI_ASSERT_DEBUG(NULL != property);
654 // property is being used in a separate thread; queue a message to set the property
655 SceneGraph::NodePropertyMessage<int>::Send(eventThreadServices, &node, property, &AnimatableProperty<int>::Bake, value.Get<int>());
660 case Property::FLOAT:
662 const AnimatableProperty<float>* property = dynamic_cast<const AnimatableProperty<float>*>(entry.GetSceneGraphProperty());
663 DALI_ASSERT_DEBUG(NULL != property);
665 // property is being used in a separate thread; queue a message to set the property
666 SceneGraph::NodePropertyMessage<float>::Send(eventThreadServices, &node, property, &AnimatableProperty<float>::Bake, value.Get<float>());
671 case Property::VECTOR2:
673 const AnimatableProperty<Vector2>* property = dynamic_cast<const AnimatableProperty<Vector2>*>(entry.GetSceneGraphProperty());
674 DALI_ASSERT_DEBUG(NULL != property);
676 // property is being used in a separate thread; queue a message to set the property
677 if(entry.componentIndex == 0)
679 SceneGraph::NodePropertyComponentMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeX, value.Get<float>());
681 else if(entry.componentIndex == 1)
683 SceneGraph::NodePropertyComponentMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeY, value.Get<float>());
687 SceneGraph::NodePropertyMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::Bake, value.Get<Vector2>());
693 case Property::VECTOR3:
695 const AnimatableProperty<Vector3>* property = dynamic_cast<const AnimatableProperty<Vector3>*>(entry.GetSceneGraphProperty());
696 DALI_ASSERT_DEBUG(NULL != property);
698 // property is being used in a separate thread; queue a message to set the property
699 if(entry.componentIndex == 0)
701 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeX, value.Get<float>());
703 else if(entry.componentIndex == 1)
705 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeY, value.Get<float>());
707 else if(entry.componentIndex == 2)
709 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeZ, value.Get<float>());
713 SceneGraph::NodePropertyMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::Bake, value.Get<Vector3>());
719 case Property::VECTOR4:
721 const AnimatableProperty<Vector4>* property = dynamic_cast<const AnimatableProperty<Vector4>*>(entry.GetSceneGraphProperty());
722 DALI_ASSERT_DEBUG(NULL != property);
724 // property is being used in a separate thread; queue a message to set the property
725 if(entry.componentIndex == 0)
727 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeX, value.Get<float>());
729 else if(entry.componentIndex == 1)
731 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeY, value.Get<float>());
733 else if(entry.componentIndex == 2)
735 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeZ, value.Get<float>());
737 else if(entry.componentIndex == 3)
739 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeW, value.Get<float>());
743 SceneGraph::NodePropertyMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::Bake, value.Get<Vector4>());
749 case Property::ROTATION:
751 const AnimatableProperty<Quaternion>* property = dynamic_cast<const AnimatableProperty<Quaternion>*>(entry.GetSceneGraphProperty());
752 DALI_ASSERT_DEBUG(NULL != property);
754 // property is being used in a separate thread; queue a message to set the property
755 SceneGraph::NodePropertyMessage<Quaternion>::Send(eventThreadServices, &node, property, &AnimatableProperty<Quaternion>::Bake, value.Get<Quaternion>());
760 case Property::MATRIX:
762 const AnimatableProperty<Matrix>* property = dynamic_cast<const AnimatableProperty<Matrix>*>(entry.GetSceneGraphProperty());
763 DALI_ASSERT_DEBUG(NULL != property);
765 // property is being used in a separate thread; queue a message to set the property
766 SceneGraph::NodePropertyMessage<Matrix>::Send(eventThreadServices, &node, property, &AnimatableProperty<Matrix>::Bake, value.Get<Matrix>());
771 case Property::MATRIX3:
773 const AnimatableProperty<Matrix3>* property = dynamic_cast<const AnimatableProperty<Matrix3>*>(entry.GetSceneGraphProperty());
774 DALI_ASSERT_DEBUG(NULL != property);
776 // property is being used in a separate thread; queue a message to set the property
777 SceneGraph::NodePropertyMessage<Matrix3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Matrix3>::Bake, value.Get<Matrix3>());
784 // nothing to do for other types
789 void Actor::PropertyHandler::OnNotifyDefaultPropertyAnimation(Internal::Actor& actor, Animation& animation, Property::Index index, const Property::Value& value, Animation::Type animationType)
791 switch(animationType)
794 case Animation::BETWEEN:
798 case Dali::Actor::Property::SIZE:
800 if(value.Get(actor.mTargetSize))
802 actor.mAnimatedSize = actor.mTargetSize;
803 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
805 if(actor.mRelayoutData && !actor.mRelayoutData->relayoutRequested)
807 actor.mRelayoutData->preferredSize.width = actor.mAnimatedSize.width;
808 actor.mRelayoutData->preferredSize.height = actor.mAnimatedSize.height;
811 // Notify deriving classes
812 actor.OnSizeAnimation(animation, actor.mTargetSize);
817 case Dali::Actor::Property::SIZE_WIDTH:
819 if(value.Get(actor.mTargetSize.width))
821 actor.mAnimatedSize.width = actor.mTargetSize.width;
822 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
824 if(actor.mRelayoutData && !actor.mRelayoutData->relayoutRequested)
826 actor.mRelayoutData->preferredSize.width = actor.mAnimatedSize.width;
829 // Notify deriving classes
830 actor.OnSizeAnimation(animation, actor.mTargetSize);
835 case Dali::Actor::Property::SIZE_HEIGHT:
837 if(value.Get(actor.mTargetSize.height))
839 actor.mAnimatedSize.height = actor.mTargetSize.height;
840 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
842 if(actor.mRelayoutData && !actor.mRelayoutData->relayoutRequested)
844 actor.mRelayoutData->preferredSize.height = actor.mAnimatedSize.height;
847 // Notify deriving classes
848 actor.OnSizeAnimation(animation, actor.mTargetSize);
853 case Dali::Actor::Property::SIZE_DEPTH:
855 if(value.Get(actor.mTargetSize.depth))
857 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
858 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
860 // Notify deriving classes
861 actor.OnSizeAnimation(animation, actor.mTargetSize);
866 case Dali::Actor::Property::POSITION:
868 value.Get(actor.mTargetPosition);
872 case Dali::Actor::Property::POSITION_X:
874 value.Get(actor.mTargetPosition.x);
878 case Dali::Actor::Property::POSITION_Y:
880 value.Get(actor.mTargetPosition.y);
884 case Dali::Actor::Property::POSITION_Z:
886 value.Get(actor.mTargetPosition.z);
890 case Dali::Actor::Property::ORIENTATION:
892 value.Get(actor.mTargetOrientation);
896 case Dali::Actor::Property::SCALE:
898 value.Get(actor.mTargetScale);
902 case Dali::Actor::Property::SCALE_X:
904 value.Get(actor.mTargetScale.x);
908 case Dali::Actor::Property::SCALE_Y:
910 value.Get(actor.mTargetScale.y);
914 case Dali::Actor::Property::SCALE_Z:
916 value.Get(actor.mTargetScale.z);
920 case Dali::Actor::Property::VISIBLE:
922 actor.SetVisibleInternal(value.Get<bool>(), SendMessage::FALSE);
926 case Dali::Actor::Property::COLOR:
928 value.Get(actor.mTargetColor);
932 case Dali::Actor::Property::COLOR_RED:
934 value.Get(actor.mTargetColor.r);
938 case Dali::Actor::Property::COLOR_GREEN:
940 value.Get(actor.mTargetColor.g);
944 case Dali::Actor::Property::COLOR_BLUE:
946 value.Get(actor.mTargetColor.b);
950 case Dali::Actor::Property::COLOR_ALPHA:
951 case Dali::Actor::Property::OPACITY:
953 value.Get(actor.mTargetColor.a);
959 // Not an animatable property. Do nothing.
970 case Dali::Actor::Property::SIZE:
972 if(AdjustValue<Vector3>(actor.mTargetSize, value))
974 actor.mAnimatedSize = actor.mTargetSize;
975 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
977 if(actor.mRelayoutData && !actor.mRelayoutData->relayoutRequested)
979 actor.mRelayoutData->preferredSize.width = actor.mAnimatedSize.width;
980 actor.mRelayoutData->preferredSize.height = actor.mAnimatedSize.height;
983 // Notify deriving classes
984 actor.OnSizeAnimation(animation, actor.mTargetSize);
989 case Dali::Actor::Property::SIZE_WIDTH:
991 if(AdjustValue<float>(actor.mTargetSize.width, value))
993 actor.mAnimatedSize.width = actor.mTargetSize.width;
994 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
996 if(actor.mRelayoutData && !actor.mRelayoutData->relayoutRequested)
998 actor.mRelayoutData->preferredSize.width = actor.mAnimatedSize.width;
1001 // Notify deriving classes
1002 actor.OnSizeAnimation(animation, actor.mTargetSize);
1007 case Dali::Actor::Property::SIZE_HEIGHT:
1009 if(AdjustValue<float>(actor.mTargetSize.height, value))
1011 actor.mAnimatedSize.height = actor.mTargetSize.height;
1012 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
1014 if(actor.mRelayoutData && !actor.mRelayoutData->relayoutRequested)
1016 actor.mRelayoutData->preferredSize.height = actor.mAnimatedSize.height;
1019 // Notify deriving classes
1020 actor.OnSizeAnimation(animation, actor.mTargetSize);
1025 case Dali::Actor::Property::SIZE_DEPTH:
1027 if(AdjustValue<float>(actor.mTargetSize.depth, value))
1029 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
1030 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
1032 // Notify deriving classes
1033 actor.OnSizeAnimation(animation, actor.mTargetSize);
1038 case Dali::Actor::Property::POSITION:
1040 AdjustValue<Vector3>(actor.mTargetPosition, value);
1044 case Dali::Actor::Property::POSITION_X:
1046 AdjustValue<float>(actor.mTargetPosition.x, value);
1050 case Dali::Actor::Property::POSITION_Y:
1052 AdjustValue<float>(actor.mTargetPosition.y, value);
1056 case Dali::Actor::Property::POSITION_Z:
1058 AdjustValue<float>(actor.mTargetPosition.z, value);
1062 case Dali::Actor::Property::ORIENTATION:
1064 Quaternion relativeValue;
1065 if(value.Get(relativeValue))
1067 actor.mTargetOrientation *= relativeValue;
1072 case Dali::Actor::Property::SCALE:
1074 AdjustValue<Vector3>(actor.mTargetScale, value);
1078 case Dali::Actor::Property::SCALE_X:
1080 AdjustValue<float>(actor.mTargetScale.x, value);
1084 case Dali::Actor::Property::SCALE_Y:
1086 AdjustValue<float>(actor.mTargetScale.y, value);
1090 case Dali::Actor::Property::SCALE_Z:
1092 AdjustValue<float>(actor.mTargetScale.z, value);
1096 case Dali::Actor::Property::VISIBLE:
1098 bool relativeValue = false;
1099 if(value.Get(relativeValue))
1101 bool visible = actor.mVisible || relativeValue;
1102 actor.SetVisibleInternal(visible, SendMessage::FALSE);
1107 case Dali::Actor::Property::COLOR:
1109 AdjustValue<Vector4>(actor.mTargetColor, value);
1113 case Dali::Actor::Property::COLOR_RED:
1115 AdjustValue<float>(actor.mTargetColor.r, value);
1119 case Dali::Actor::Property::COLOR_GREEN:
1121 AdjustValue<float>(actor.mTargetColor.g, value);
1125 case Dali::Actor::Property::COLOR_BLUE:
1127 AdjustValue<float>(actor.mTargetColor.b, value);
1131 case Dali::Actor::Property::COLOR_ALPHA:
1132 case Dali::Actor::Property::OPACITY:
1134 AdjustValue<float>(actor.mTargetColor.a, value);
1140 // Not an animatable property. Do nothing.
1149 const PropertyBase* Actor::PropertyHandler::GetSceneObjectAnimatableProperty(Property::Index index, const SceneGraph::Node& node)
1151 const PropertyBase* property(nullptr);
1155 case Dali::Actor::Property::SIZE: // FALLTHROUGH
1156 case Dali::Actor::Property::SIZE_WIDTH: // FALLTHROUGH
1157 case Dali::Actor::Property::SIZE_HEIGHT: // FALLTHROUGH
1158 case Dali::Actor::Property::SIZE_DEPTH:
1160 property = &node.mSize;
1163 case Dali::Actor::Property::POSITION: // FALLTHROUGH
1164 case Dali::Actor::Property::POSITION_X: // FALLTHROUGH
1165 case Dali::Actor::Property::POSITION_Y: // FALLTHROUGH
1166 case Dali::Actor::Property::POSITION_Z:
1168 property = &node.mPosition;
1171 case Dali::Actor::Property::ORIENTATION:
1173 property = &node.mOrientation;
1176 case Dali::Actor::Property::SCALE: // FALLTHROUGH
1177 case Dali::Actor::Property::SCALE_X: // FALLTHROUGH
1178 case Dali::Actor::Property::SCALE_Y: // FALLTHROUGH
1179 case Dali::Actor::Property::SCALE_Z:
1181 property = &node.mScale;
1184 case Dali::Actor::Property::VISIBLE:
1186 property = &node.mVisible;
1189 case Dali::Actor::Property::COLOR: // FALLTHROUGH
1190 case Dali::Actor::Property::COLOR_RED: // FALLTHROUGH
1191 case Dali::Actor::Property::COLOR_GREEN: // FALLTHROUGH
1192 case Dali::Actor::Property::COLOR_BLUE: // FALLTHROUGH
1193 case Dali::Actor::Property::COLOR_ALPHA: // FALLTHROUGH
1194 case Dali::Actor::Property::OPACITY:
1196 property = &node.mColor;
1208 const PropertyInputImpl* Actor::PropertyHandler::GetSceneObjectInputProperty(Property::Index index, const SceneGraph::Node& node)
1210 const PropertyInputImpl* property(nullptr);
1214 case Dali::Actor::Property::PARENT_ORIGIN: // FALLTHROUGH
1215 case Dali::Actor::Property::PARENT_ORIGIN_X: // FALLTHROUGH
1216 case Dali::Actor::Property::PARENT_ORIGIN_Y: // FALLTHROUGH
1217 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1219 property = &node.mParentOrigin;
1222 case Dali::Actor::Property::ANCHOR_POINT: // FALLTHROUGH
1223 case Dali::Actor::Property::ANCHOR_POINT_X: // FALLTHROUGH
1224 case Dali::Actor::Property::ANCHOR_POINT_Y: // FALLTHROUGH
1225 case Dali::Actor::Property::ANCHOR_POINT_Z:
1227 property = &node.mAnchorPoint;
1230 case Dali::Actor::Property::WORLD_POSITION: // FALLTHROUGH
1231 case Dali::Actor::Property::WORLD_POSITION_X: // FALLTHROUGH
1232 case Dali::Actor::Property::WORLD_POSITION_Y: // FALLTHROUGH
1233 case Dali::Actor::Property::WORLD_POSITION_Z:
1235 property = &node.mWorldPosition;
1238 case Dali::Actor::Property::WORLD_ORIENTATION:
1240 property = &node.mWorldOrientation;
1243 case Dali::Actor::Property::WORLD_SCALE:
1245 property = &node.mWorldScale;
1248 case Dali::Actor::Property::WORLD_COLOR:
1250 property = &node.mWorldColor;
1253 case Dali::Actor::Property::WORLD_MATRIX:
1255 property = &node.mWorldMatrix;
1258 case Dali::Actor::Property::CULLED:
1260 property = &node.mCulled;
1272 int32_t Actor::PropertyHandler::GetPropertyComponentIndex(Property::Index index)
1274 int32_t componentIndex = Property::INVALID_COMPONENT_INDEX;
1278 case Dali::Actor::Property::PARENT_ORIGIN_X:
1279 case Dali::Actor::Property::ANCHOR_POINT_X:
1280 case Dali::Actor::Property::SIZE_WIDTH:
1281 case Dali::Actor::Property::POSITION_X:
1282 case Dali::Actor::Property::WORLD_POSITION_X:
1283 case Dali::Actor::Property::SCALE_X:
1284 case Dali::Actor::Property::COLOR_RED:
1290 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1291 case Dali::Actor::Property::ANCHOR_POINT_Y:
1292 case Dali::Actor::Property::SIZE_HEIGHT:
1293 case Dali::Actor::Property::POSITION_Y:
1294 case Dali::Actor::Property::WORLD_POSITION_Y:
1295 case Dali::Actor::Property::SCALE_Y:
1296 case Dali::Actor::Property::COLOR_GREEN:
1302 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1303 case Dali::Actor::Property::ANCHOR_POINT_Z:
1304 case Dali::Actor::Property::SIZE_DEPTH:
1305 case Dali::Actor::Property::POSITION_Z:
1306 case Dali::Actor::Property::WORLD_POSITION_Z:
1307 case Dali::Actor::Property::SCALE_Z:
1308 case Dali::Actor::Property::COLOR_BLUE:
1314 case Dali::Actor::Property::COLOR_ALPHA:
1315 case Dali::Actor::Property::OPACITY:
1328 return componentIndex;
1331 bool Actor::PropertyHandler::GetCachedPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1333 bool valueSet = true;
1337 case Dali::Actor::Property::PARENT_ORIGIN:
1339 value = actor.GetCurrentParentOrigin();
1343 case Dali::Actor::Property::PARENT_ORIGIN_X:
1345 value = actor.GetCurrentParentOrigin().x;
1349 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1351 value = actor.GetCurrentParentOrigin().y;
1355 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1357 value = actor.GetCurrentParentOrigin().z;
1361 case Dali::Actor::Property::ANCHOR_POINT:
1363 value = actor.GetCurrentAnchorPoint();
1367 case Dali::Actor::Property::ANCHOR_POINT_X:
1369 value = actor.GetCurrentAnchorPoint().x;
1373 case Dali::Actor::Property::ANCHOR_POINT_Y:
1375 value = actor.GetCurrentAnchorPoint().y;
1379 case Dali::Actor::Property::ANCHOR_POINT_Z:
1381 value = actor.GetCurrentAnchorPoint().z;
1385 case Dali::Actor::Property::SIZE:
1387 value = actor.GetTargetSize();
1391 case Dali::Actor::Property::SIZE_WIDTH:
1393 value = actor.GetTargetSize().width;
1397 case Dali::Actor::Property::SIZE_HEIGHT:
1399 value = actor.GetTargetSize().height;
1403 case Dali::Actor::Property::SIZE_DEPTH:
1405 value = actor.GetTargetSize().depth;
1409 case Dali::Actor::Property::POSITION:
1411 value = actor.GetTargetPosition();
1415 case Dali::Actor::Property::POSITION_X:
1417 value = actor.GetTargetPosition().x;
1421 case Dali::Actor::Property::POSITION_Y:
1423 value = actor.GetTargetPosition().y;
1427 case Dali::Actor::Property::POSITION_Z:
1429 value = actor.GetTargetPosition().z;
1433 case Dali::Actor::Property::ORIENTATION:
1435 value = actor.mTargetOrientation;
1439 case Dali::Actor::Property::SCALE:
1441 value = actor.mTargetScale;
1445 case Dali::Actor::Property::SCALE_X:
1447 value = actor.mTargetScale.x;
1451 case Dali::Actor::Property::SCALE_Y:
1453 value = actor.mTargetScale.y;
1457 case Dali::Actor::Property::SCALE_Z:
1459 value = actor.mTargetScale.z;
1463 case Dali::Actor::Property::VISIBLE:
1465 value = actor.mVisible;
1469 case Dali::Actor::Property::COLOR:
1471 value = actor.mTargetColor;
1475 case Dali::Actor::Property::COLOR_RED:
1477 value = actor.mTargetColor.r;
1481 case Dali::Actor::Property::COLOR_GREEN:
1483 value = actor.mTargetColor.g;
1487 case Dali::Actor::Property::COLOR_BLUE:
1489 value = actor.mTargetColor.b;
1493 case Dali::Actor::Property::COLOR_ALPHA:
1494 case Dali::Actor::Property::OPACITY:
1496 value = actor.mTargetColor.a;
1500 case Dali::Actor::Property::NAME:
1502 value = std::string(actor.GetName());
1506 case Dali::Actor::Property::SENSITIVE:
1508 value = actor.IsSensitive();
1512 case Dali::Actor::Property::LEAVE_REQUIRED:
1514 value = actor.GetLeaveRequired();
1518 case Dali::Actor::Property::INHERIT_POSITION:
1520 value = actor.IsPositionInherited();
1524 case Dali::Actor::Property::INHERIT_ORIENTATION:
1526 value = actor.IsOrientationInherited();
1530 case Dali::Actor::Property::INHERIT_SCALE:
1532 value = actor.IsScaleInherited();
1536 case Dali::Actor::Property::COLOR_MODE:
1538 value = actor.GetColorMode();
1542 case Dali::Actor::Property::DRAW_MODE:
1544 value = actor.GetDrawMode();
1548 case Dali::Actor::Property::SIZE_MODE_FACTOR:
1550 value = actor.GetSizeModeFactor();
1554 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
1556 value = Scripting::GetLinearEnumerationName<ResizePolicy::Type>(actor.GetResizePolicy(Dimension::WIDTH), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT);
1560 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
1562 value = Scripting::GetLinearEnumerationName<ResizePolicy::Type>(actor.GetResizePolicy(Dimension::HEIGHT), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT);
1566 case Dali::Actor::Property::SIZE_SCALE_POLICY:
1568 value = actor.GetSizeScalePolicy();
1572 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
1574 value = (actor.GetResizePolicy(Dimension::WIDTH) == ResizePolicy::DIMENSION_DEPENDENCY) && (actor.GetDimensionDependency(Dimension::WIDTH) == Dimension::HEIGHT);
1578 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
1580 value = (actor.GetResizePolicy(Dimension::HEIGHT) == ResizePolicy::DIMENSION_DEPENDENCY) && (actor.GetDimensionDependency(Dimension::HEIGHT) == Dimension::WIDTH);
1584 case Dali::Actor::Property::PADDING:
1586 Vector2 widthPadding = actor.GetPadding(Dimension::WIDTH);
1587 Vector2 heightPadding = actor.GetPadding(Dimension::HEIGHT);
1588 value = Vector4(widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y);
1592 case Dali::Actor::Property::MINIMUM_SIZE:
1594 value = Vector2(actor.GetMinimumSize(Dimension::WIDTH), actor.GetMinimumSize(Dimension::HEIGHT));
1598 case Dali::Actor::Property::MAXIMUM_SIZE:
1600 value = Vector2(actor.GetMaximumSize(Dimension::WIDTH), actor.GetMaximumSize(Dimension::HEIGHT));
1604 case Dali::Actor::Property::CLIPPING_MODE:
1606 value = actor.mClippingMode;
1610 case Dali::DevelActor::Property::SIBLING_ORDER:
1612 Actor* parent = actor.GetParent();
1615 value = static_cast<int>(parent->GetSiblingOrderOfChild(actor));
1624 case Dali::Actor::Property::SCREEN_POSITION:
1626 value = actor.GetCurrentScreenPosition();
1630 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
1632 value = actor.mPositionUsesAnchorPoint;
1636 case Dali::Actor::Property::LAYOUT_DIRECTION:
1638 value = actor.mLayoutDirection;
1642 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
1644 value = actor.IsLayoutDirectionInherited();
1648 case Dali::Actor::Property::ID:
1650 value = static_cast<int>(actor.GetId());
1654 case Dali::Actor::Property::HIERARCHY_DEPTH:
1656 value = actor.GetHierarchyDepth();
1660 case Dali::Actor::Property::IS_ROOT:
1662 value = actor.IsRoot();
1666 case Dali::Actor::Property::IS_LAYER:
1668 value = actor.IsLayer();
1672 case Dali::Actor::Property::CONNECTED_TO_SCENE:
1674 value = actor.OnScene();
1678 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
1680 value = actor.IsKeyboardFocusable();
1684 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
1686 value = actor.mCaptureAllTouchAfterStart;
1690 case Dali::DevelActor::Property::TOUCH_AREA_OFFSET:
1692 value = actor.GetTouchAreaOffset();
1696 case Dali::DevelActor::Property::BLEND_EQUATION:
1698 value = actor.GetBlendEquation();
1702 case Dali::DevelActor::Property::TOUCH_FOCUSABLE:
1704 value = actor.IsTouchFocusable();
1708 case Dali::DevelActor::Property::KEYBOARD_FOCUSABLE_CHILDREN:
1710 value = actor.AreChildrenKeyBoardFocusable();
1716 // Must be a scene-graph only property
1725 bool Actor::PropertyHandler::GetCurrentPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1727 bool valueSet = true;
1731 case Dali::Actor::Property::SIZE:
1733 value = actor.GetCurrentSize();
1737 case Dali::Actor::Property::SIZE_WIDTH:
1739 value = actor.GetCurrentSize().width;
1743 case Dali::Actor::Property::SIZE_HEIGHT:
1745 value = actor.GetCurrentSize().height;
1749 case Dali::Actor::Property::SIZE_DEPTH:
1751 value = actor.GetCurrentSize().depth;
1755 case Dali::Actor::Property::POSITION:
1757 value = actor.GetCurrentPosition();
1761 case Dali::Actor::Property::POSITION_X:
1763 value = actor.GetCurrentPosition().x;
1767 case Dali::Actor::Property::POSITION_Y:
1769 value = actor.GetCurrentPosition().y;
1773 case Dali::Actor::Property::POSITION_Z:
1775 value = actor.GetCurrentPosition().z;
1779 case Dali::Actor::Property::WORLD_POSITION:
1781 value = actor.GetCurrentWorldPosition();
1785 case Dali::Actor::Property::WORLD_POSITION_X:
1787 value = actor.GetCurrentWorldPosition().x;
1791 case Dali::Actor::Property::WORLD_POSITION_Y:
1793 value = actor.GetCurrentWorldPosition().y;
1797 case Dali::Actor::Property::WORLD_POSITION_Z:
1799 value = actor.GetCurrentWorldPosition().z;
1803 case Dali::Actor::Property::ORIENTATION:
1805 value = actor.GetCurrentOrientation();
1809 case Dali::Actor::Property::WORLD_ORIENTATION:
1811 value = actor.GetCurrentWorldOrientation();
1815 case Dali::Actor::Property::SCALE:
1817 value = actor.GetCurrentScale();
1821 case Dali::Actor::Property::SCALE_X:
1823 value = actor.GetCurrentScale().x;
1827 case Dali::Actor::Property::SCALE_Y:
1829 value = actor.GetCurrentScale().y;
1833 case Dali::Actor::Property::SCALE_Z:
1835 value = actor.GetCurrentScale().z;
1839 case Dali::Actor::Property::WORLD_SCALE:
1841 value = actor.GetCurrentWorldScale();
1845 case Dali::Actor::Property::COLOR:
1847 value = actor.GetCurrentColor();
1851 case Dali::Actor::Property::COLOR_RED:
1853 value = actor.GetCurrentColor().r;
1857 case Dali::Actor::Property::COLOR_GREEN:
1859 value = actor.GetCurrentColor().g;
1863 case Dali::Actor::Property::COLOR_BLUE:
1865 value = actor.GetCurrentColor().b;
1869 case Dali::Actor::Property::COLOR_ALPHA:
1870 case Dali::Actor::Property::OPACITY:
1872 value = actor.GetCurrentColor().a;
1876 case Dali::Actor::Property::WORLD_COLOR:
1878 value = actor.GetCurrentWorldColor();
1882 case Dali::Actor::Property::WORLD_MATRIX:
1884 value = actor.GetCurrentWorldMatrix();
1888 case Dali::Actor::Property::VISIBLE:
1890 value = actor.IsVisible();
1894 case Dali::Actor::Property::CULLED:
1896 value = actor.GetNode().IsCulled(actor.GetEventThreadServices().GetEventBufferIndex());
1900 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
1902 // node is being used in a separate thread, the value from the previous update is the same, set by user
1903 value = Vector2(actor.GetNode().GetUpdateSizeHint());
1909 // Must be an event-side only property
1918 } // namespace Internal