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/common/property-helper.h>
29 #include <dali/internal/update/nodes/node-declarations.h>
30 #include <dali/internal/update/nodes/node-messages.h>
32 using Dali::Internal::SceneGraph::AnimatableProperty;
33 using Dali::Internal::SceneGraph::Node;
34 using Dali::Internal::SceneGraph::PropertyBase;
40 namespace // unnamed namespace
48 DALI_ENUM_TO_STRING_TABLE_BEGIN_WITH_TYPE(AnchorValue, ANCHOR_CONSTANT)
49 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, TOP_LEFT)
50 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, TOP_CENTER)
51 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, TOP_RIGHT)
52 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, CENTER_LEFT)
53 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, CENTER)
54 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, CENTER_RIGHT)
55 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, BOTTOM_LEFT)
56 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, BOTTOM_CENTER)
57 DALI_ENUM_TO_STRING_WITH_SCOPE(AnchorPoint, BOTTOM_RIGHT)
58 DALI_ENUM_TO_STRING_TABLE_END(ANCHOR_CONSTANT)
60 DALI_ENUM_TO_STRING_TABLE_BEGIN(COLOR_MODE)
61 DALI_ENUM_TO_STRING(USE_OWN_COLOR)
62 DALI_ENUM_TO_STRING(USE_PARENT_COLOR)
63 DALI_ENUM_TO_STRING(USE_OWN_MULTIPLY_PARENT_COLOR)
64 DALI_ENUM_TO_STRING(USE_OWN_MULTIPLY_PARENT_ALPHA)
65 DALI_ENUM_TO_STRING_TABLE_END(COLOR_MODE)
67 DALI_ENUM_TO_STRING_TABLE_BEGIN(DRAW_MODE)
68 DALI_ENUM_TO_STRING_WITH_SCOPE(DrawMode, NORMAL)
69 DALI_ENUM_TO_STRING_WITH_SCOPE(DrawMode, OVERLAY_2D)
70 DALI_ENUM_TO_STRING_TABLE_END(DRAW_MODE)
72 DALI_ENUM_TO_STRING_TABLE_BEGIN(RESIZE_POLICY)
73 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, FIXED)
74 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, USE_NATURAL_SIZE)
75 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, FILL_TO_PARENT)
76 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, SIZE_RELATIVE_TO_PARENT)
77 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, SIZE_FIXED_OFFSET_FROM_PARENT)
78 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, FIT_TO_CHILDREN)
79 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, DIMENSION_DEPENDENCY)
80 DALI_ENUM_TO_STRING_WITH_SCOPE(ResizePolicy, USE_ASSIGNED_SIZE)
81 DALI_ENUM_TO_STRING_TABLE_END(RESIZE_POLICY)
83 DALI_ENUM_TO_STRING_TABLE_BEGIN(SIZE_SCALE_POLICY)
84 DALI_ENUM_TO_STRING_WITH_SCOPE(SizeScalePolicy, USE_SIZE_SET)
85 DALI_ENUM_TO_STRING_WITH_SCOPE(SizeScalePolicy, FIT_WITH_ASPECT_RATIO)
86 DALI_ENUM_TO_STRING_WITH_SCOPE(SizeScalePolicy, FILL_WITH_ASPECT_RATIO)
87 DALI_ENUM_TO_STRING_TABLE_END(SIZE_SCALE_POLICY)
89 DALI_ENUM_TO_STRING_TABLE_BEGIN(CLIPPING_MODE)
90 DALI_ENUM_TO_STRING_WITH_SCOPE(ClippingMode, DISABLED)
91 DALI_ENUM_TO_STRING_WITH_SCOPE(ClippingMode, CLIP_CHILDREN)
92 DALI_ENUM_TO_STRING_TABLE_END(CLIPPING_MODE)
94 DALI_ENUM_TO_STRING_TABLE_BEGIN(LAYOUT_DIRECTION)
95 DALI_ENUM_TO_STRING_WITH_SCOPE(LayoutDirection, LEFT_TO_RIGHT)
96 DALI_ENUM_TO_STRING_WITH_SCOPE(LayoutDirection, RIGHT_TO_LEFT)
97 DALI_ENUM_TO_STRING_TABLE_END(LAYOUT_DIRECTION)
99 bool GetAnchorPointConstant(const std::string& value, Vector3& anchor)
101 for(uint32_t i = 0; i < ANCHOR_CONSTANT_TABLE_COUNT; ++i)
103 uint32_t sizeIgnored = 0;
104 if(CompareTokens(value.c_str(), ANCHOR_CONSTANT_TABLE[i].name, sizeIgnored))
106 anchor = ANCHOR_CONSTANT_TABLE[i].value;
113 inline bool GetParentOriginConstant(const std::string& value, Vector3& parentOrigin)
115 // Values are the same so just use the same table as anchor-point
116 return GetAnchorPointConstant(value, parentOrigin);
119 } // unnamed namespace
121 void Actor::PropertyHandler::SetDefaultProperty(Internal::Actor& actor, Property::Index index, const Property::Value& property)
125 case Dali::Actor::Property::PARENT_ORIGIN:
127 Property::Type type = property.GetType();
128 if(type == Property::VECTOR3)
130 actor.SetParentOrigin(property.Get<Vector3>());
132 else if(type == Property::STRING)
134 std::string parentOriginString;
135 property.Get(parentOriginString);
136 Vector3 parentOrigin;
137 if(GetParentOriginConstant(parentOriginString, parentOrigin))
139 actor.SetParentOrigin(parentOrigin);
145 case Dali::Actor::Property::PARENT_ORIGIN_X:
147 const Vector3& current = actor.GetCurrentParentOrigin();
148 actor.SetParentOrigin(Vector3(property.Get<float>(), current.y, current.z));
152 case Dali::Actor::Property::PARENT_ORIGIN_Y:
154 const Vector3& current = actor.GetCurrentParentOrigin();
155 actor.SetParentOrigin(Vector3(current.x, property.Get<float>(), current.z));
159 case Dali::Actor::Property::PARENT_ORIGIN_Z:
161 const Vector3& current = actor.GetCurrentParentOrigin();
162 actor.SetParentOrigin(Vector3(current.x, current.y, property.Get<float>()));
166 case Dali::Actor::Property::ANCHOR_POINT:
168 Property::Type type = property.GetType();
169 if(type == Property::VECTOR3)
171 actor.SetAnchorPoint(property.Get<Vector3>());
173 else if(type == Property::STRING)
175 std::string anchorPointString;
176 property.Get(anchorPointString);
178 if(GetAnchorPointConstant(anchorPointString, anchor))
180 actor.SetAnchorPoint(anchor);
186 case Dali::Actor::Property::ANCHOR_POINT_X:
188 const Vector3& current = actor.GetCurrentAnchorPoint();
189 actor.SetAnchorPoint(Vector3(property.Get<float>(), current.y, current.z));
193 case Dali::Actor::Property::ANCHOR_POINT_Y:
195 const Vector3& current = actor.GetCurrentAnchorPoint();
196 actor.SetAnchorPoint(Vector3(current.x, property.Get<float>(), current.z));
200 case Dali::Actor::Property::ANCHOR_POINT_Z:
202 const Vector3& current = actor.GetCurrentAnchorPoint();
203 actor.SetAnchorPoint(Vector3(current.x, current.y, property.Get<float>()));
207 case Dali::Actor::Property::SIZE:
209 Property::Type type = property.GetType();
210 if(type == Property::VECTOR2)
212 actor.SetSize(property.Get<Vector2>());
214 else if(type == Property::VECTOR3)
216 actor.SetSize(property.Get<Vector3>());
221 case Dali::Actor::Property::SIZE_WIDTH:
223 actor.SetWidth(property.Get<float>());
227 case Dali::Actor::Property::SIZE_HEIGHT:
229 actor.SetHeight(property.Get<float>());
233 case Dali::Actor::Property::SIZE_DEPTH:
235 actor.SetDepth(property.Get<float>());
239 case Dali::Actor::Property::POSITION:
241 Property::Type type = property.GetType();
242 if(type == Property::VECTOR2)
244 Vector2 position = property.Get<Vector2>();
245 actor.SetPosition(Vector3(position.x, position.y, 0.0f));
247 else if(type == Property::VECTOR3)
249 actor.SetPosition(property.Get<Vector3>());
254 case Dali::Actor::Property::POSITION_X:
256 actor.SetX(property.Get<float>());
260 case Dali::Actor::Property::POSITION_Y:
262 actor.SetY(property.Get<float>());
266 case Dali::Actor::Property::POSITION_Z:
268 actor.SetZ(property.Get<float>());
272 case Dali::Actor::Property::ORIENTATION:
274 actor.SetOrientation(property.Get<Quaternion>());
278 case Dali::Actor::Property::SCALE:
280 Property::Type type = property.GetType();
281 if(type == Property::FLOAT)
283 float scale = property.Get<float>();
284 actor.SetScale(scale, scale, scale);
286 else if(type == Property::VECTOR3)
288 actor.SetScale(property.Get<Vector3>());
293 case Dali::Actor::Property::SCALE_X:
295 actor.SetScaleX(property.Get<float>());
299 case Dali::Actor::Property::SCALE_Y:
301 actor.SetScaleY(property.Get<float>());
305 case Dali::Actor::Property::SCALE_Z:
307 actor.SetScaleZ(property.Get<float>());
311 case Dali::Actor::Property::VISIBLE:
313 actor.SetVisible(property.Get<bool>());
317 case Dali::Actor::Property::COLOR:
319 Property::Type type = property.GetType();
320 if(type == Property::VECTOR3)
322 Vector3 color = property.Get<Vector3>();
323 actor.SetColor(Vector4(color.r, color.g, color.b, 1.0f));
325 else if(type == Property::VECTOR4)
327 actor.SetColor(property.Get<Vector4>());
332 case Dali::Actor::Property::COLOR_RED:
334 actor.SetColorRed(property.Get<float>());
338 case Dali::Actor::Property::COLOR_GREEN:
340 actor.SetColorGreen(property.Get<float>());
344 case Dali::Actor::Property::COLOR_BLUE:
346 actor.SetColorBlue(property.Get<float>());
350 case Dali::Actor::Property::COLOR_ALPHA:
351 case Dali::Actor::Property::OPACITY:
354 if(property.Get(value))
356 actor.SetOpacity(value);
361 case Dali::Actor::Property::NAME:
363 actor.SetName(property.Get<std::string>());
367 case Dali::Actor::Property::SENSITIVE:
369 actor.SetSensitive(property.Get<bool>());
373 case Dali::Actor::Property::LEAVE_REQUIRED:
375 actor.SetLeaveRequired(property.Get<bool>());
379 case Dali::Actor::Property::INHERIT_POSITION:
381 actor.SetInheritPosition(property.Get<bool>());
385 case Dali::Actor::Property::INHERIT_ORIENTATION:
387 actor.SetInheritOrientation(property.Get<bool>());
391 case Dali::Actor::Property::INHERIT_SCALE:
393 actor.SetInheritScale(property.Get<bool>());
397 case Dali::Actor::Property::COLOR_MODE:
399 ColorMode mode = actor.mColorMode;
400 if(Scripting::GetEnumerationProperty<ColorMode>(property, COLOR_MODE_TABLE, COLOR_MODE_TABLE_COUNT, mode))
402 actor.SetColorMode(mode);
407 case Dali::Actor::Property::DRAW_MODE:
409 DrawMode::Type mode = actor.mDrawMode;
410 if(Scripting::GetEnumerationProperty<DrawMode::Type>(property, DRAW_MODE_TABLE, DRAW_MODE_TABLE_COUNT, mode))
412 actor.SetDrawMode(mode);
417 case Dali::Actor::Property::SIZE_MODE_FACTOR:
419 actor.SetSizeModeFactor(property.Get<Vector3>());
423 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
425 ResizePolicy::Type type = actor.GetResizePolicy(Dimension::WIDTH);
426 if(Scripting::GetEnumerationProperty<ResizePolicy::Type>(property, RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT, type))
428 actor.SetResizePolicy(type, Dimension::WIDTH);
433 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
435 ResizePolicy::Type type = actor.GetResizePolicy(Dimension::HEIGHT);
436 if(Scripting::GetEnumerationProperty<ResizePolicy::Type>(property, RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT, type))
438 actor.SetResizePolicy(type, Dimension::HEIGHT);
443 case Dali::Actor::Property::SIZE_SCALE_POLICY:
445 SizeScalePolicy::Type type = actor.GetSizeScalePolicy();
446 if(Scripting::GetEnumerationProperty<SizeScalePolicy::Type>(property, SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT, type))
448 actor.SetSizeScalePolicy(type);
453 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
455 if(property.Get<bool>())
457 actor.SetResizePolicy(ResizePolicy::DIMENSION_DEPENDENCY, Dimension::WIDTH);
462 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
464 if(property.Get<bool>())
466 actor.SetResizePolicy(ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT);
471 case Dali::Actor::Property::PADDING:
473 Vector4 padding = property.Get<Vector4>();
474 actor.SetPadding(Vector2(padding.x, padding.y), Dimension::WIDTH);
475 actor.SetPadding(Vector2(padding.z, padding.w), Dimension::HEIGHT);
479 case Dali::Actor::Property::MINIMUM_SIZE:
481 Vector2 size = property.Get<Vector2>();
482 actor.SetMinimumSize(size.x, Dimension::WIDTH);
483 actor.SetMinimumSize(size.y, Dimension::HEIGHT);
487 case Dali::Actor::Property::MAXIMUM_SIZE:
489 Vector2 size = property.Get<Vector2>();
490 actor.SetMaximumSize(size.x, Dimension::WIDTH);
491 actor.SetMaximumSize(size.y, Dimension::HEIGHT);
495 case Dali::DevelActor::Property::SIBLING_ORDER:
499 if(property.Get(value))
501 Actor* parent = actor.GetParent();
504 parent->SetSiblingOrderOfChild(actor, value);
510 case Dali::Actor::Property::CLIPPING_MODE:
512 ClippingMode::Type convertedValue = actor.mClippingMode;
513 if(Scripting::GetEnumerationProperty<ClippingMode::Type>(property, CLIPPING_MODE_TABLE, CLIPPING_MODE_TABLE_COUNT, convertedValue))
515 actor.mClippingMode = convertedValue;
516 SetClippingModeMessage(actor.GetEventThreadServices(), actor.GetNode(), actor.mClippingMode);
521 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
524 if(property.Get(value) && value != actor.mPositionUsesAnchorPoint)
526 actor.mPositionUsesAnchorPoint = value;
527 SetPositionUsesAnchorPointMessage(actor.GetEventThreadServices(), actor.GetNode(), actor.mPositionUsesAnchorPoint);
532 case Dali::Actor::Property::LAYOUT_DIRECTION:
534 Dali::LayoutDirection::Type direction = actor.mLayoutDirection;
535 actor.mInheritLayoutDirection = false;
537 if(Scripting::GetEnumerationProperty<LayoutDirection::Type>(property, LAYOUT_DIRECTION_TABLE, LAYOUT_DIRECTION_TABLE_COUNT, direction))
539 actor.mParentImpl.InheritLayoutDirectionRecursively(direction, true);
544 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
547 if(property.Get(value))
549 actor.SetInheritLayoutDirection(value);
554 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
557 if(property.Get(value))
559 actor.SetKeyboardFocusable(value);
564 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
566 actor.SetUpdateSizeHint(property.Get<Vector2>());
570 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
572 bool boolValue = false;
573 if(property.Get(boolValue))
575 actor.mCaptureAllTouchAfterStart = boolValue;
580 case Dali::DevelActor::Property::TOUCH_AREA_OFFSET:
583 if(property.Get(rectValue))
585 actor.SetTouchAreaOffset(rectValue);
590 case Dali::DevelActor::Property::BLEND_EQUATION:
593 if(property.Get(value))
595 actor.SetBlendEquation(static_cast<DevelBlendEquation::Type>(value));
600 case Dali::DevelActor::Property::TOUCH_FOCUSABLE:
603 if(property.Get(value))
605 actor.SetTouchFocusable(value);
610 case Dali::DevelActor::Property::KEYBOARD_FOCUSABLE_CHILDREN:
613 if(property.Get(value))
615 actor.SetKeyboardFocusableChildren(value);
622 // this can happen in the case of a non-animatable default property so just do nothing
628 void Actor::PropertyHandler::SetSceneGraphProperty(
629 Property::Index index,
630 const PropertyMetadata& entry,
631 const Property::Value& value,
632 EventThreadServices& eventThreadServices,
633 const SceneGraph::Node& node)
635 switch(entry.GetType())
637 case Property::BOOLEAN:
639 const AnimatableProperty<bool>* property = dynamic_cast<const AnimatableProperty<bool>*>(entry.GetSceneGraphProperty());
640 DALI_ASSERT_DEBUG(NULL != property);
642 // property is being used in a separate thread; queue a message to set the property
643 SceneGraph::NodePropertyMessage<bool>::Send(eventThreadServices, &node, property, &AnimatableProperty<bool>::Bake, value.Get<bool>());
648 case Property::INTEGER:
650 const AnimatableProperty<int>* property = dynamic_cast<const AnimatableProperty<int>*>(entry.GetSceneGraphProperty());
651 DALI_ASSERT_DEBUG(NULL != property);
653 // property is being used in a separate thread; queue a message to set the property
654 SceneGraph::NodePropertyMessage<int>::Send(eventThreadServices, &node, property, &AnimatableProperty<int>::Bake, value.Get<int>());
659 case Property::FLOAT:
661 const AnimatableProperty<float>* property = dynamic_cast<const AnimatableProperty<float>*>(entry.GetSceneGraphProperty());
662 DALI_ASSERT_DEBUG(NULL != property);
664 // property is being used in a separate thread; queue a message to set the property
665 SceneGraph::NodePropertyMessage<float>::Send(eventThreadServices, &node, property, &AnimatableProperty<float>::Bake, value.Get<float>());
670 case Property::VECTOR2:
672 const AnimatableProperty<Vector2>* property = dynamic_cast<const AnimatableProperty<Vector2>*>(entry.GetSceneGraphProperty());
673 DALI_ASSERT_DEBUG(NULL != property);
675 // property is being used in a separate thread; queue a message to set the property
676 if(entry.componentIndex == 0)
678 SceneGraph::NodePropertyComponentMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeX, value.Get<float>());
680 else if(entry.componentIndex == 1)
682 SceneGraph::NodePropertyComponentMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeY, value.Get<float>());
686 SceneGraph::NodePropertyMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::Bake, value.Get<Vector2>());
692 case Property::VECTOR3:
694 const AnimatableProperty<Vector3>* property = dynamic_cast<const AnimatableProperty<Vector3>*>(entry.GetSceneGraphProperty());
695 DALI_ASSERT_DEBUG(NULL != property);
697 // property is being used in a separate thread; queue a message to set the property
698 if(entry.componentIndex == 0)
700 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeX, value.Get<float>());
702 else if(entry.componentIndex == 1)
704 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeY, value.Get<float>());
706 else if(entry.componentIndex == 2)
708 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeZ, value.Get<float>());
712 SceneGraph::NodePropertyMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::Bake, value.Get<Vector3>());
718 case Property::VECTOR4:
720 const AnimatableProperty<Vector4>* property = dynamic_cast<const AnimatableProperty<Vector4>*>(entry.GetSceneGraphProperty());
721 DALI_ASSERT_DEBUG(NULL != property);
723 // property is being used in a separate thread; queue a message to set the property
724 if(entry.componentIndex == 0)
726 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeX, value.Get<float>());
728 else if(entry.componentIndex == 1)
730 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeY, value.Get<float>());
732 else if(entry.componentIndex == 2)
734 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeZ, value.Get<float>());
736 else if(entry.componentIndex == 3)
738 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeW, value.Get<float>());
742 SceneGraph::NodePropertyMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::Bake, value.Get<Vector4>());
748 case Property::ROTATION:
750 const AnimatableProperty<Quaternion>* property = dynamic_cast<const AnimatableProperty<Quaternion>*>(entry.GetSceneGraphProperty());
751 DALI_ASSERT_DEBUG(NULL != property);
753 // property is being used in a separate thread; queue a message to set the property
754 SceneGraph::NodePropertyMessage<Quaternion>::Send(eventThreadServices, &node, property, &AnimatableProperty<Quaternion>::Bake, value.Get<Quaternion>());
759 case Property::MATRIX:
761 const AnimatableProperty<Matrix>* property = dynamic_cast<const AnimatableProperty<Matrix>*>(entry.GetSceneGraphProperty());
762 DALI_ASSERT_DEBUG(NULL != property);
764 // property is being used in a separate thread; queue a message to set the property
765 SceneGraph::NodePropertyMessage<Matrix>::Send(eventThreadServices, &node, property, &AnimatableProperty<Matrix>::Bake, value.Get<Matrix>());
770 case Property::MATRIX3:
772 const AnimatableProperty<Matrix3>* property = dynamic_cast<const AnimatableProperty<Matrix3>*>(entry.GetSceneGraphProperty());
773 DALI_ASSERT_DEBUG(NULL != property);
775 // property is being used in a separate thread; queue a message to set the property
776 SceneGraph::NodePropertyMessage<Matrix3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Matrix3>::Bake, value.Get<Matrix3>());
783 // nothing to do for other types
788 void Actor::PropertyHandler::OnNotifyDefaultPropertyAnimation(Internal::Actor& actor, Animation& animation, Property::Index index, const Property::Value& value, Animation::Type animationType)
790 switch(animationType)
793 case Animation::BETWEEN:
797 case Dali::Actor::Property::SIZE:
799 if(value.Get(actor.mTargetSize))
801 actor.mAnimatedSize = actor.mTargetSize;
802 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
804 // Notify deriving classes
805 actor.OnSizeAnimation(animation, actor.mTargetSize);
810 case Dali::Actor::Property::SIZE_WIDTH:
812 if(value.Get(actor.mTargetSize.width))
814 actor.mAnimatedSize.width = actor.mTargetSize.width;
815 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
817 // Notify deriving classes
818 actor.OnSizeAnimation(animation, actor.mTargetSize);
823 case Dali::Actor::Property::SIZE_HEIGHT:
825 if(value.Get(actor.mTargetSize.height))
827 actor.mAnimatedSize.height = actor.mTargetSize.height;
828 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
830 // Notify deriving classes
831 actor.OnSizeAnimation(animation, actor.mTargetSize);
836 case Dali::Actor::Property::SIZE_DEPTH:
838 if(value.Get(actor.mTargetSize.depth))
840 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
841 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
843 // Notify deriving classes
844 actor.OnSizeAnimation(animation, actor.mTargetSize);
849 case Dali::Actor::Property::POSITION:
851 value.Get(actor.mTargetPosition);
855 case Dali::Actor::Property::POSITION_X:
857 value.Get(actor.mTargetPosition.x);
861 case Dali::Actor::Property::POSITION_Y:
863 value.Get(actor.mTargetPosition.y);
867 case Dali::Actor::Property::POSITION_Z:
869 value.Get(actor.mTargetPosition.z);
873 case Dali::Actor::Property::ORIENTATION:
875 value.Get(actor.mTargetOrientation);
879 case Dali::Actor::Property::SCALE:
881 value.Get(actor.mTargetScale);
885 case Dali::Actor::Property::SCALE_X:
887 value.Get(actor.mTargetScale.x);
891 case Dali::Actor::Property::SCALE_Y:
893 value.Get(actor.mTargetScale.y);
897 case Dali::Actor::Property::SCALE_Z:
899 value.Get(actor.mTargetScale.z);
903 case Dali::Actor::Property::VISIBLE:
905 actor.SetVisibleInternal(value.Get<bool>(), SendMessage::FALSE);
909 case Dali::Actor::Property::COLOR:
911 value.Get(actor.mTargetColor);
915 case Dali::Actor::Property::COLOR_RED:
917 value.Get(actor.mTargetColor.r);
921 case Dali::Actor::Property::COLOR_GREEN:
923 value.Get(actor.mTargetColor.g);
927 case Dali::Actor::Property::COLOR_BLUE:
929 value.Get(actor.mTargetColor.b);
933 case Dali::Actor::Property::COLOR_ALPHA:
934 case Dali::Actor::Property::OPACITY:
936 value.Get(actor.mTargetColor.a);
942 // Not an animatable property. Do nothing.
953 case Dali::Actor::Property::SIZE:
955 if(AdjustValue<Vector3>(actor.mTargetSize, value))
957 actor.mAnimatedSize = actor.mTargetSize;
958 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
960 // Notify deriving classes
961 actor.OnSizeAnimation(animation, actor.mTargetSize);
966 case Dali::Actor::Property::SIZE_WIDTH:
968 if(AdjustValue<float>(actor.mTargetSize.width, value))
970 actor.mAnimatedSize.width = actor.mTargetSize.width;
971 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
973 // Notify deriving classes
974 actor.OnSizeAnimation(animation, actor.mTargetSize);
979 case Dali::Actor::Property::SIZE_HEIGHT:
981 if(AdjustValue<float>(actor.mTargetSize.height, value))
983 actor.mAnimatedSize.height = actor.mTargetSize.height;
984 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
986 // Notify deriving classes
987 actor.OnSizeAnimation(animation, actor.mTargetSize);
992 case Dali::Actor::Property::SIZE_DEPTH:
994 if(AdjustValue<float>(actor.mTargetSize.depth, value))
996 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
997 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
999 // Notify deriving classes
1000 actor.OnSizeAnimation(animation, actor.mTargetSize);
1005 case Dali::Actor::Property::POSITION:
1007 AdjustValue<Vector3>(actor.mTargetPosition, value);
1011 case Dali::Actor::Property::POSITION_X:
1013 AdjustValue<float>(actor.mTargetPosition.x, value);
1017 case Dali::Actor::Property::POSITION_Y:
1019 AdjustValue<float>(actor.mTargetPosition.y, value);
1023 case Dali::Actor::Property::POSITION_Z:
1025 AdjustValue<float>(actor.mTargetPosition.z, value);
1029 case Dali::Actor::Property::ORIENTATION:
1031 Quaternion relativeValue;
1032 if(value.Get(relativeValue))
1034 actor.mTargetOrientation *= relativeValue;
1039 case Dali::Actor::Property::SCALE:
1041 AdjustValue<Vector3>(actor.mTargetScale, value);
1045 case Dali::Actor::Property::SCALE_X:
1047 AdjustValue<float>(actor.mTargetScale.x, value);
1051 case Dali::Actor::Property::SCALE_Y:
1053 AdjustValue<float>(actor.mTargetScale.y, value);
1057 case Dali::Actor::Property::SCALE_Z:
1059 AdjustValue<float>(actor.mTargetScale.z, value);
1063 case Dali::Actor::Property::VISIBLE:
1065 bool relativeValue = false;
1066 if(value.Get(relativeValue))
1068 bool visible = actor.mVisible || relativeValue;
1069 actor.SetVisibleInternal(visible, SendMessage::FALSE);
1074 case Dali::Actor::Property::COLOR:
1076 AdjustValue<Vector4>(actor.mTargetColor, value);
1080 case Dali::Actor::Property::COLOR_RED:
1082 AdjustValue<float>(actor.mTargetColor.r, value);
1086 case Dali::Actor::Property::COLOR_GREEN:
1088 AdjustValue<float>(actor.mTargetColor.g, value);
1092 case Dali::Actor::Property::COLOR_BLUE:
1094 AdjustValue<float>(actor.mTargetColor.b, value);
1098 case Dali::Actor::Property::COLOR_ALPHA:
1099 case Dali::Actor::Property::OPACITY:
1101 AdjustValue<float>(actor.mTargetColor.a, value);
1107 // Not an animatable property. Do nothing.
1116 const PropertyBase* Actor::PropertyHandler::GetSceneObjectAnimatableProperty(Property::Index index, const SceneGraph::Node& node)
1118 const PropertyBase* property(nullptr);
1122 case Dali::Actor::Property::SIZE: // FALLTHROUGH
1123 case Dali::Actor::Property::SIZE_WIDTH: // FALLTHROUGH
1124 case Dali::Actor::Property::SIZE_HEIGHT: // FALLTHROUGH
1125 case Dali::Actor::Property::SIZE_DEPTH:
1127 property = &node.mSize;
1130 case Dali::Actor::Property::POSITION: // FALLTHROUGH
1131 case Dali::Actor::Property::POSITION_X: // FALLTHROUGH
1132 case Dali::Actor::Property::POSITION_Y: // FALLTHROUGH
1133 case Dali::Actor::Property::POSITION_Z:
1135 property = &node.mPosition;
1138 case Dali::Actor::Property::ORIENTATION:
1140 property = &node.mOrientation;
1143 case Dali::Actor::Property::SCALE: // FALLTHROUGH
1144 case Dali::Actor::Property::SCALE_X: // FALLTHROUGH
1145 case Dali::Actor::Property::SCALE_Y: // FALLTHROUGH
1146 case Dali::Actor::Property::SCALE_Z:
1148 property = &node.mScale;
1151 case Dali::Actor::Property::VISIBLE:
1153 property = &node.mVisible;
1156 case Dali::Actor::Property::COLOR: // FALLTHROUGH
1157 case Dali::Actor::Property::COLOR_RED: // FALLTHROUGH
1158 case Dali::Actor::Property::COLOR_GREEN: // FALLTHROUGH
1159 case Dali::Actor::Property::COLOR_BLUE: // FALLTHROUGH
1160 case Dali::Actor::Property::COLOR_ALPHA: // FALLTHROUGH
1161 case Dali::Actor::Property::OPACITY:
1163 property = &node.mColor;
1175 const PropertyInputImpl* Actor::PropertyHandler::GetSceneObjectInputProperty(Property::Index index, const SceneGraph::Node& node)
1177 const PropertyInputImpl* property(nullptr);
1181 case Dali::Actor::Property::PARENT_ORIGIN: // FALLTHROUGH
1182 case Dali::Actor::Property::PARENT_ORIGIN_X: // FALLTHROUGH
1183 case Dali::Actor::Property::PARENT_ORIGIN_Y: // FALLTHROUGH
1184 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1186 property = &node.mParentOrigin;
1189 case Dali::Actor::Property::ANCHOR_POINT: // FALLTHROUGH
1190 case Dali::Actor::Property::ANCHOR_POINT_X: // FALLTHROUGH
1191 case Dali::Actor::Property::ANCHOR_POINT_Y: // FALLTHROUGH
1192 case Dali::Actor::Property::ANCHOR_POINT_Z:
1194 property = &node.mAnchorPoint;
1197 case Dali::Actor::Property::WORLD_POSITION: // FALLTHROUGH
1198 case Dali::Actor::Property::WORLD_POSITION_X: // FALLTHROUGH
1199 case Dali::Actor::Property::WORLD_POSITION_Y: // FALLTHROUGH
1200 case Dali::Actor::Property::WORLD_POSITION_Z:
1202 property = &node.mWorldPosition;
1205 case Dali::Actor::Property::WORLD_ORIENTATION:
1207 property = &node.mWorldOrientation;
1210 case Dali::Actor::Property::WORLD_SCALE:
1212 property = &node.mWorldScale;
1215 case Dali::Actor::Property::WORLD_COLOR:
1217 property = &node.mWorldColor;
1220 case Dali::Actor::Property::WORLD_MATRIX:
1222 property = &node.mWorldMatrix;
1225 case Dali::Actor::Property::CULLED:
1227 property = &node.mCulled;
1239 int32_t Actor::PropertyHandler::GetPropertyComponentIndex(Property::Index index)
1241 int32_t componentIndex = Property::INVALID_COMPONENT_INDEX;
1245 case Dali::Actor::Property::PARENT_ORIGIN_X:
1246 case Dali::Actor::Property::ANCHOR_POINT_X:
1247 case Dali::Actor::Property::SIZE_WIDTH:
1248 case Dali::Actor::Property::POSITION_X:
1249 case Dali::Actor::Property::WORLD_POSITION_X:
1250 case Dali::Actor::Property::SCALE_X:
1251 case Dali::Actor::Property::COLOR_RED:
1257 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1258 case Dali::Actor::Property::ANCHOR_POINT_Y:
1259 case Dali::Actor::Property::SIZE_HEIGHT:
1260 case Dali::Actor::Property::POSITION_Y:
1261 case Dali::Actor::Property::WORLD_POSITION_Y:
1262 case Dali::Actor::Property::SCALE_Y:
1263 case Dali::Actor::Property::COLOR_GREEN:
1269 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1270 case Dali::Actor::Property::ANCHOR_POINT_Z:
1271 case Dali::Actor::Property::SIZE_DEPTH:
1272 case Dali::Actor::Property::POSITION_Z:
1273 case Dali::Actor::Property::WORLD_POSITION_Z:
1274 case Dali::Actor::Property::SCALE_Z:
1275 case Dali::Actor::Property::COLOR_BLUE:
1281 case Dali::Actor::Property::COLOR_ALPHA:
1282 case Dali::Actor::Property::OPACITY:
1295 return componentIndex;
1298 bool Actor::PropertyHandler::GetCachedPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1300 bool valueSet = true;
1304 case Dali::Actor::Property::PARENT_ORIGIN:
1306 value = actor.GetCurrentParentOrigin();
1310 case Dali::Actor::Property::PARENT_ORIGIN_X:
1312 value = actor.GetCurrentParentOrigin().x;
1316 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1318 value = actor.GetCurrentParentOrigin().y;
1322 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1324 value = actor.GetCurrentParentOrigin().z;
1328 case Dali::Actor::Property::ANCHOR_POINT:
1330 value = actor.GetCurrentAnchorPoint();
1334 case Dali::Actor::Property::ANCHOR_POINT_X:
1336 value = actor.GetCurrentAnchorPoint().x;
1340 case Dali::Actor::Property::ANCHOR_POINT_Y:
1342 value = actor.GetCurrentAnchorPoint().y;
1346 case Dali::Actor::Property::ANCHOR_POINT_Z:
1348 value = actor.GetCurrentAnchorPoint().z;
1352 case Dali::Actor::Property::SIZE:
1354 value = actor.GetTargetSize();
1358 case Dali::Actor::Property::SIZE_WIDTH:
1360 value = actor.GetTargetSize().width;
1364 case Dali::Actor::Property::SIZE_HEIGHT:
1366 value = actor.GetTargetSize().height;
1370 case Dali::Actor::Property::SIZE_DEPTH:
1372 value = actor.GetTargetSize().depth;
1376 case Dali::Actor::Property::POSITION:
1378 value = actor.GetTargetPosition();
1382 case Dali::Actor::Property::POSITION_X:
1384 value = actor.GetTargetPosition().x;
1388 case Dali::Actor::Property::POSITION_Y:
1390 value = actor.GetTargetPosition().y;
1394 case Dali::Actor::Property::POSITION_Z:
1396 value = actor.GetTargetPosition().z;
1400 case Dali::Actor::Property::ORIENTATION:
1402 value = actor.mTargetOrientation;
1406 case Dali::Actor::Property::SCALE:
1408 value = actor.mTargetScale;
1412 case Dali::Actor::Property::SCALE_X:
1414 value = actor.mTargetScale.x;
1418 case Dali::Actor::Property::SCALE_Y:
1420 value = actor.mTargetScale.y;
1424 case Dali::Actor::Property::SCALE_Z:
1426 value = actor.mTargetScale.z;
1430 case Dali::Actor::Property::VISIBLE:
1432 value = actor.mVisible;
1436 case Dali::Actor::Property::COLOR:
1438 value = actor.mTargetColor;
1442 case Dali::Actor::Property::COLOR_RED:
1444 value = actor.mTargetColor.r;
1448 case Dali::Actor::Property::COLOR_GREEN:
1450 value = actor.mTargetColor.g;
1454 case Dali::Actor::Property::COLOR_BLUE:
1456 value = actor.mTargetColor.b;
1460 case Dali::Actor::Property::COLOR_ALPHA:
1461 case Dali::Actor::Property::OPACITY:
1463 value = actor.mTargetColor.a;
1467 case Dali::Actor::Property::NAME:
1469 value = std::string(actor.GetName());
1473 case Dali::Actor::Property::SENSITIVE:
1475 value = actor.IsSensitive();
1479 case Dali::Actor::Property::LEAVE_REQUIRED:
1481 value = actor.GetLeaveRequired();
1485 case Dali::Actor::Property::INHERIT_POSITION:
1487 value = actor.IsPositionInherited();
1491 case Dali::Actor::Property::INHERIT_ORIENTATION:
1493 value = actor.IsOrientationInherited();
1497 case Dali::Actor::Property::INHERIT_SCALE:
1499 value = actor.IsScaleInherited();
1503 case Dali::Actor::Property::COLOR_MODE:
1505 value = actor.GetColorMode();
1509 case Dali::Actor::Property::DRAW_MODE:
1511 value = actor.GetDrawMode();
1515 case Dali::Actor::Property::SIZE_MODE_FACTOR:
1517 value = actor.GetSizeModeFactor();
1521 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
1523 value = Scripting::GetLinearEnumerationName<ResizePolicy::Type>(actor.GetResizePolicy(Dimension::WIDTH), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT);
1527 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
1529 value = Scripting::GetLinearEnumerationName<ResizePolicy::Type>(actor.GetResizePolicy(Dimension::HEIGHT), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT);
1533 case Dali::Actor::Property::SIZE_SCALE_POLICY:
1535 value = actor.GetSizeScalePolicy();
1539 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
1541 value = (actor.GetResizePolicy(Dimension::WIDTH) == ResizePolicy::DIMENSION_DEPENDENCY) && (actor.GetDimensionDependency(Dimension::WIDTH) == Dimension::HEIGHT);
1545 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
1547 value = (actor.GetResizePolicy(Dimension::HEIGHT) == ResizePolicy::DIMENSION_DEPENDENCY) && (actor.GetDimensionDependency(Dimension::HEIGHT) == Dimension::WIDTH);
1551 case Dali::Actor::Property::PADDING:
1553 Vector2 widthPadding = actor.GetPadding(Dimension::WIDTH);
1554 Vector2 heightPadding = actor.GetPadding(Dimension::HEIGHT);
1555 value = Vector4(widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y);
1559 case Dali::Actor::Property::MINIMUM_SIZE:
1561 value = Vector2(actor.GetMinimumSize(Dimension::WIDTH), actor.GetMinimumSize(Dimension::HEIGHT));
1565 case Dali::Actor::Property::MAXIMUM_SIZE:
1567 value = Vector2(actor.GetMaximumSize(Dimension::WIDTH), actor.GetMaximumSize(Dimension::HEIGHT));
1571 case Dali::Actor::Property::CLIPPING_MODE:
1573 value = actor.mClippingMode;
1577 case Dali::DevelActor::Property::SIBLING_ORDER:
1579 Actor* parent = actor.GetParent();
1582 value = static_cast<int>(parent->GetSiblingOrderOfChild(actor));
1591 case Dali::Actor::Property::SCREEN_POSITION:
1593 value = actor.GetCurrentScreenPosition();
1597 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
1599 value = actor.mPositionUsesAnchorPoint;
1603 case Dali::Actor::Property::LAYOUT_DIRECTION:
1605 value = actor.mLayoutDirection;
1609 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
1611 value = actor.IsLayoutDirectionInherited();
1615 case Dali::Actor::Property::ID:
1617 value = static_cast<int>(actor.GetId());
1621 case Dali::Actor::Property::HIERARCHY_DEPTH:
1623 value = actor.GetHierarchyDepth();
1627 case Dali::Actor::Property::IS_ROOT:
1629 value = actor.IsRoot();
1633 case Dali::Actor::Property::IS_LAYER:
1635 value = actor.IsLayer();
1639 case Dali::Actor::Property::CONNECTED_TO_SCENE:
1641 value = actor.OnScene();
1645 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
1647 value = actor.IsKeyboardFocusable();
1651 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
1653 value = actor.mCaptureAllTouchAfterStart;
1657 case Dali::DevelActor::Property::TOUCH_AREA_OFFSET:
1659 value = actor.GetTouchAreaOffset();
1663 case Dali::DevelActor::Property::BLEND_EQUATION:
1665 value = actor.GetBlendEquation();
1669 case Dali::DevelActor::Property::TOUCH_FOCUSABLE:
1671 value = actor.IsTouchFocusable();
1675 case Dali::DevelActor::Property::KEYBOARD_FOCUSABLE_CHILDREN:
1677 value = actor.AreChildrenKeyBoardFocusable();
1683 // Must be a scene-graph only property
1692 bool Actor::PropertyHandler::GetCurrentPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1694 bool valueSet = true;
1698 case Dali::Actor::Property::SIZE:
1700 value = actor.GetCurrentSize();
1704 case Dali::Actor::Property::SIZE_WIDTH:
1706 value = actor.GetCurrentSize().width;
1710 case Dali::Actor::Property::SIZE_HEIGHT:
1712 value = actor.GetCurrentSize().height;
1716 case Dali::Actor::Property::SIZE_DEPTH:
1718 value = actor.GetCurrentSize().depth;
1722 case Dali::Actor::Property::POSITION:
1724 value = actor.GetCurrentPosition();
1728 case Dali::Actor::Property::POSITION_X:
1730 value = actor.GetCurrentPosition().x;
1734 case Dali::Actor::Property::POSITION_Y:
1736 value = actor.GetCurrentPosition().y;
1740 case Dali::Actor::Property::POSITION_Z:
1742 value = actor.GetCurrentPosition().z;
1746 case Dali::Actor::Property::WORLD_POSITION:
1748 value = actor.GetCurrentWorldPosition();
1752 case Dali::Actor::Property::WORLD_POSITION_X:
1754 value = actor.GetCurrentWorldPosition().x;
1758 case Dali::Actor::Property::WORLD_POSITION_Y:
1760 value = actor.GetCurrentWorldPosition().y;
1764 case Dali::Actor::Property::WORLD_POSITION_Z:
1766 value = actor.GetCurrentWorldPosition().z;
1770 case Dali::Actor::Property::ORIENTATION:
1772 value = actor.GetCurrentOrientation();
1776 case Dali::Actor::Property::WORLD_ORIENTATION:
1778 value = actor.GetCurrentWorldOrientation();
1782 case Dali::Actor::Property::SCALE:
1784 value = actor.GetCurrentScale();
1788 case Dali::Actor::Property::SCALE_X:
1790 value = actor.GetCurrentScale().x;
1794 case Dali::Actor::Property::SCALE_Y:
1796 value = actor.GetCurrentScale().y;
1800 case Dali::Actor::Property::SCALE_Z:
1802 value = actor.GetCurrentScale().z;
1806 case Dali::Actor::Property::WORLD_SCALE:
1808 value = actor.GetCurrentWorldScale();
1812 case Dali::Actor::Property::COLOR:
1814 value = actor.GetCurrentColor();
1818 case Dali::Actor::Property::COLOR_RED:
1820 value = actor.GetCurrentColor().r;
1824 case Dali::Actor::Property::COLOR_GREEN:
1826 value = actor.GetCurrentColor().g;
1830 case Dali::Actor::Property::COLOR_BLUE:
1832 value = actor.GetCurrentColor().b;
1836 case Dali::Actor::Property::COLOR_ALPHA:
1837 case Dali::Actor::Property::OPACITY:
1839 value = actor.GetCurrentColor().a;
1843 case Dali::Actor::Property::WORLD_COLOR:
1845 value = actor.GetCurrentWorldColor();
1849 case Dali::Actor::Property::WORLD_MATRIX:
1851 value = actor.GetCurrentWorldMatrix();
1855 case Dali::Actor::Property::VISIBLE:
1857 value = actor.IsVisible();
1861 case Dali::Actor::Property::CULLED:
1863 value = actor.GetNode().IsCulled(actor.GetEventThreadServices().GetEventBufferIndex());
1867 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
1869 // node is being used in a separate thread, the value from the previous update is the same, set by user
1870 value = Vector2(actor.GetNode().GetUpdateSizeHint());
1876 // Must be an event-side only property
1885 } // namespace Internal