2 * Copyright (c) 2020 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.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:
583 if(property.Get(vec2Value))
585 actor.SetTouchArea(vec2Value);
590 case Dali::DevelActor::Property::BLEND_EQUATION:
593 if(property.Get(value))
595 actor.SetBlendEquation(static_cast<DevelBlendEquation::Type>(value));
602 // this can happen in the case of a non-animatable default property so just do nothing
608 void Actor::PropertyHandler::SetSceneGraphProperty(
609 Property::Index index,
610 const PropertyMetadata& entry,
611 const Property::Value& value,
612 EventThreadServices& eventThreadServices,
613 const SceneGraph::Node& node)
615 switch(entry.GetType())
617 case Property::BOOLEAN:
619 const AnimatableProperty<bool>* property = dynamic_cast<const AnimatableProperty<bool>*>(entry.GetSceneGraphProperty());
620 DALI_ASSERT_DEBUG(NULL != property);
622 // property is being used in a separate thread; queue a message to set the property
623 SceneGraph::NodePropertyMessage<bool>::Send(eventThreadServices, &node, property, &AnimatableProperty<bool>::Bake, value.Get<bool>());
628 case Property::INTEGER:
630 const AnimatableProperty<int>* property = dynamic_cast<const AnimatableProperty<int>*>(entry.GetSceneGraphProperty());
631 DALI_ASSERT_DEBUG(NULL != property);
633 // property is being used in a separate thread; queue a message to set the property
634 SceneGraph::NodePropertyMessage<int>::Send(eventThreadServices, &node, property, &AnimatableProperty<int>::Bake, value.Get<int>());
639 case Property::FLOAT:
641 const AnimatableProperty<float>* property = dynamic_cast<const AnimatableProperty<float>*>(entry.GetSceneGraphProperty());
642 DALI_ASSERT_DEBUG(NULL != property);
644 // property is being used in a separate thread; queue a message to set the property
645 SceneGraph::NodePropertyMessage<float>::Send(eventThreadServices, &node, property, &AnimatableProperty<float>::Bake, value.Get<float>());
650 case Property::VECTOR2:
652 const AnimatableProperty<Vector2>* property = dynamic_cast<const AnimatableProperty<Vector2>*>(entry.GetSceneGraphProperty());
653 DALI_ASSERT_DEBUG(NULL != property);
655 // property is being used in a separate thread; queue a message to set the property
656 if(entry.componentIndex == 0)
658 SceneGraph::NodePropertyComponentMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeX, value.Get<float>());
660 else if(entry.componentIndex == 1)
662 SceneGraph::NodePropertyComponentMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeY, value.Get<float>());
666 SceneGraph::NodePropertyMessage<Vector2>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector2>::Bake, value.Get<Vector2>());
672 case Property::VECTOR3:
674 const AnimatableProperty<Vector3>* property = dynamic_cast<const AnimatableProperty<Vector3>*>(entry.GetSceneGraphProperty());
675 DALI_ASSERT_DEBUG(NULL != property);
677 // property is being used in a separate thread; queue a message to set the property
678 if(entry.componentIndex == 0)
680 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeX, value.Get<float>());
682 else if(entry.componentIndex == 1)
684 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeY, value.Get<float>());
686 else if(entry.componentIndex == 2)
688 SceneGraph::NodePropertyComponentMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeZ, value.Get<float>());
692 SceneGraph::NodePropertyMessage<Vector3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector3>::Bake, value.Get<Vector3>());
698 case Property::VECTOR4:
700 const AnimatableProperty<Vector4>* property = dynamic_cast<const AnimatableProperty<Vector4>*>(entry.GetSceneGraphProperty());
701 DALI_ASSERT_DEBUG(NULL != property);
703 // property is being used in a separate thread; queue a message to set the property
704 if(entry.componentIndex == 0)
706 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeX, value.Get<float>());
708 else if(entry.componentIndex == 1)
710 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeY, value.Get<float>());
712 else if(entry.componentIndex == 2)
714 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeZ, value.Get<float>());
716 else if(entry.componentIndex == 3)
718 SceneGraph::NodePropertyComponentMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeW, value.Get<float>());
722 SceneGraph::NodePropertyMessage<Vector4>::Send(eventThreadServices, &node, property, &AnimatableProperty<Vector4>::Bake, value.Get<Vector4>());
728 case Property::ROTATION:
730 const AnimatableProperty<Quaternion>* property = dynamic_cast<const AnimatableProperty<Quaternion>*>(entry.GetSceneGraphProperty());
731 DALI_ASSERT_DEBUG(NULL != property);
733 // property is being used in a separate thread; queue a message to set the property
734 SceneGraph::NodePropertyMessage<Quaternion>::Send(eventThreadServices, &node, property, &AnimatableProperty<Quaternion>::Bake, value.Get<Quaternion>());
739 case Property::MATRIX:
741 const AnimatableProperty<Matrix>* property = dynamic_cast<const AnimatableProperty<Matrix>*>(entry.GetSceneGraphProperty());
742 DALI_ASSERT_DEBUG(NULL != property);
744 // property is being used in a separate thread; queue a message to set the property
745 SceneGraph::NodePropertyMessage<Matrix>::Send(eventThreadServices, &node, property, &AnimatableProperty<Matrix>::Bake, value.Get<Matrix>());
750 case Property::MATRIX3:
752 const AnimatableProperty<Matrix3>* property = dynamic_cast<const AnimatableProperty<Matrix3>*>(entry.GetSceneGraphProperty());
753 DALI_ASSERT_DEBUG(NULL != property);
755 // property is being used in a separate thread; queue a message to set the property
756 SceneGraph::NodePropertyMessage<Matrix3>::Send(eventThreadServices, &node, property, &AnimatableProperty<Matrix3>::Bake, value.Get<Matrix3>());
763 // nothing to do for other types
768 void Actor::PropertyHandler::OnNotifyDefaultPropertyAnimation(Internal::Actor& actor, Animation& animation, Property::Index index, const Property::Value& value, Animation::Type animationType)
770 switch(animationType)
773 case Animation::BETWEEN:
777 case Dali::Actor::Property::SIZE:
779 if(value.Get(actor.mTargetSize))
781 actor.mAnimatedSize = actor.mTargetSize;
782 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
784 // Notify deriving classes
785 actor.OnSizeAnimation(animation, actor.mTargetSize);
790 case Dali::Actor::Property::SIZE_WIDTH:
792 if(value.Get(actor.mTargetSize.width))
794 actor.mAnimatedSize.width = actor.mTargetSize.width;
795 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
797 // Notify deriving classes
798 actor.OnSizeAnimation(animation, actor.mTargetSize);
803 case Dali::Actor::Property::SIZE_HEIGHT:
805 if(value.Get(actor.mTargetSize.height))
807 actor.mAnimatedSize.height = actor.mTargetSize.height;
808 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
810 // Notify deriving classes
811 actor.OnSizeAnimation(animation, actor.mTargetSize);
816 case Dali::Actor::Property::SIZE_DEPTH:
818 if(value.Get(actor.mTargetSize.depth))
820 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
821 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
823 // Notify deriving classes
824 actor.OnSizeAnimation(animation, actor.mTargetSize);
829 case Dali::Actor::Property::POSITION:
831 value.Get(actor.mTargetPosition);
835 case Dali::Actor::Property::POSITION_X:
837 value.Get(actor.mTargetPosition.x);
841 case Dali::Actor::Property::POSITION_Y:
843 value.Get(actor.mTargetPosition.y);
847 case Dali::Actor::Property::POSITION_Z:
849 value.Get(actor.mTargetPosition.z);
853 case Dali::Actor::Property::ORIENTATION:
855 value.Get(actor.mTargetOrientation);
859 case Dali::Actor::Property::SCALE:
861 value.Get(actor.mTargetScale);
865 case Dali::Actor::Property::SCALE_X:
867 value.Get(actor.mTargetScale.x);
871 case Dali::Actor::Property::SCALE_Y:
873 value.Get(actor.mTargetScale.y);
877 case Dali::Actor::Property::SCALE_Z:
879 value.Get(actor.mTargetScale.z);
883 case Dali::Actor::Property::VISIBLE:
885 actor.SetVisibleInternal(value.Get<bool>(), SendMessage::FALSE);
889 case Dali::Actor::Property::COLOR:
891 value.Get(actor.mTargetColor);
895 case Dali::Actor::Property::COLOR_RED:
897 value.Get(actor.mTargetColor.r);
901 case Dali::Actor::Property::COLOR_GREEN:
903 value.Get(actor.mTargetColor.g);
907 case Dali::Actor::Property::COLOR_BLUE:
909 value.Get(actor.mTargetColor.b);
913 case Dali::Actor::Property::COLOR_ALPHA:
914 case Dali::Actor::Property::OPACITY:
916 value.Get(actor.mTargetColor.a);
922 // Not an animatable property. Do nothing.
933 case Dali::Actor::Property::SIZE:
935 if(AdjustValue<Vector3>(actor.mTargetSize, value))
937 actor.mAnimatedSize = actor.mTargetSize;
938 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
940 // Notify deriving classes
941 actor.OnSizeAnimation(animation, actor.mTargetSize);
946 case Dali::Actor::Property::SIZE_WIDTH:
948 if(AdjustValue<float>(actor.mTargetSize.width, value))
950 actor.mAnimatedSize.width = actor.mTargetSize.width;
951 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
953 // Notify deriving classes
954 actor.OnSizeAnimation(animation, actor.mTargetSize);
959 case Dali::Actor::Property::SIZE_HEIGHT:
961 if(AdjustValue<float>(actor.mTargetSize.height, value))
963 actor.mAnimatedSize.height = actor.mTargetSize.height;
964 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
966 // Notify deriving classes
967 actor.OnSizeAnimation(animation, actor.mTargetSize);
972 case Dali::Actor::Property::SIZE_DEPTH:
974 if(AdjustValue<float>(actor.mTargetSize.depth, value))
976 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
977 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
979 // Notify deriving classes
980 actor.OnSizeAnimation(animation, actor.mTargetSize);
985 case Dali::Actor::Property::POSITION:
987 AdjustValue<Vector3>(actor.mTargetPosition, value);
991 case Dali::Actor::Property::POSITION_X:
993 AdjustValue<float>(actor.mTargetPosition.x, value);
997 case Dali::Actor::Property::POSITION_Y:
999 AdjustValue<float>(actor.mTargetPosition.y, value);
1003 case Dali::Actor::Property::POSITION_Z:
1005 AdjustValue<float>(actor.mTargetPosition.z, value);
1009 case Dali::Actor::Property::ORIENTATION:
1011 Quaternion relativeValue;
1012 if(value.Get(relativeValue))
1014 actor.mTargetOrientation *= relativeValue;
1019 case Dali::Actor::Property::SCALE:
1021 AdjustValue<Vector3>(actor.mTargetScale, value);
1025 case Dali::Actor::Property::SCALE_X:
1027 AdjustValue<float>(actor.mTargetScale.x, value);
1031 case Dali::Actor::Property::SCALE_Y:
1033 AdjustValue<float>(actor.mTargetScale.y, value);
1037 case Dali::Actor::Property::SCALE_Z:
1039 AdjustValue<float>(actor.mTargetScale.z, value);
1043 case Dali::Actor::Property::VISIBLE:
1045 bool relativeValue = false;
1046 if(value.Get(relativeValue))
1048 bool visible = actor.mVisible || relativeValue;
1049 actor.SetVisibleInternal(visible, SendMessage::FALSE);
1054 case Dali::Actor::Property::COLOR:
1056 AdjustValue<Vector4>(actor.mTargetColor, value);
1060 case Dali::Actor::Property::COLOR_RED:
1062 AdjustValue<float>(actor.mTargetColor.r, value);
1066 case Dali::Actor::Property::COLOR_GREEN:
1068 AdjustValue<float>(actor.mTargetColor.g, value);
1072 case Dali::Actor::Property::COLOR_BLUE:
1074 AdjustValue<float>(actor.mTargetColor.b, value);
1078 case Dali::Actor::Property::COLOR_ALPHA:
1079 case Dali::Actor::Property::OPACITY:
1081 AdjustValue<float>(actor.mTargetColor.a, value);
1087 // Not an animatable property. Do nothing.
1096 const PropertyBase* Actor::PropertyHandler::GetSceneObjectAnimatableProperty(Property::Index index, const SceneGraph::Node& node)
1098 const PropertyBase* property(nullptr);
1102 case Dali::Actor::Property::SIZE: // FALLTHROUGH
1103 case Dali::Actor::Property::SIZE_WIDTH: // FALLTHROUGH
1104 case Dali::Actor::Property::SIZE_HEIGHT: // FALLTHROUGH
1105 case Dali::Actor::Property::SIZE_DEPTH:
1107 property = &node.mSize;
1110 case Dali::Actor::Property::POSITION: // FALLTHROUGH
1111 case Dali::Actor::Property::POSITION_X: // FALLTHROUGH
1112 case Dali::Actor::Property::POSITION_Y: // FALLTHROUGH
1113 case Dali::Actor::Property::POSITION_Z:
1115 property = &node.mPosition;
1118 case Dali::Actor::Property::ORIENTATION:
1120 property = &node.mOrientation;
1123 case Dali::Actor::Property::SCALE: // FALLTHROUGH
1124 case Dali::Actor::Property::SCALE_X: // FALLTHROUGH
1125 case Dali::Actor::Property::SCALE_Y: // FALLTHROUGH
1126 case Dali::Actor::Property::SCALE_Z:
1128 property = &node.mScale;
1131 case Dali::Actor::Property::VISIBLE:
1133 property = &node.mVisible;
1136 case Dali::Actor::Property::COLOR: // FALLTHROUGH
1137 case Dali::Actor::Property::COLOR_RED: // FALLTHROUGH
1138 case Dali::Actor::Property::COLOR_GREEN: // FALLTHROUGH
1139 case Dali::Actor::Property::COLOR_BLUE: // FALLTHROUGH
1140 case Dali::Actor::Property::COLOR_ALPHA: // FALLTHROUGH
1141 case Dali::Actor::Property::OPACITY:
1143 property = &node.mColor;
1155 const PropertyInputImpl* Actor::PropertyHandler::GetSceneObjectInputProperty(Property::Index index, const SceneGraph::Node& node)
1157 const PropertyInputImpl* property(nullptr);
1161 case Dali::Actor::Property::PARENT_ORIGIN: // FALLTHROUGH
1162 case Dali::Actor::Property::PARENT_ORIGIN_X: // FALLTHROUGH
1163 case Dali::Actor::Property::PARENT_ORIGIN_Y: // FALLTHROUGH
1164 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1166 property = &node.mParentOrigin;
1169 case Dali::Actor::Property::ANCHOR_POINT: // FALLTHROUGH
1170 case Dali::Actor::Property::ANCHOR_POINT_X: // FALLTHROUGH
1171 case Dali::Actor::Property::ANCHOR_POINT_Y: // FALLTHROUGH
1172 case Dali::Actor::Property::ANCHOR_POINT_Z:
1174 property = &node.mAnchorPoint;
1177 case Dali::Actor::Property::WORLD_POSITION: // FALLTHROUGH
1178 case Dali::Actor::Property::WORLD_POSITION_X: // FALLTHROUGH
1179 case Dali::Actor::Property::WORLD_POSITION_Y: // FALLTHROUGH
1180 case Dali::Actor::Property::WORLD_POSITION_Z:
1182 property = &node.mWorldPosition;
1185 case Dali::Actor::Property::WORLD_ORIENTATION:
1187 property = &node.mWorldOrientation;
1190 case Dali::Actor::Property::WORLD_SCALE:
1192 property = &node.mWorldScale;
1195 case Dali::Actor::Property::WORLD_COLOR:
1197 property = &node.mWorldColor;
1200 case Dali::Actor::Property::WORLD_MATRIX:
1202 property = &node.mWorldMatrix;
1205 case Dali::Actor::Property::CULLED:
1207 property = &node.mCulled;
1219 int32_t Actor::PropertyHandler::GetPropertyComponentIndex(Property::Index index)
1221 int32_t componentIndex = Property::INVALID_COMPONENT_INDEX;
1225 case Dali::Actor::Property::PARENT_ORIGIN_X:
1226 case Dali::Actor::Property::ANCHOR_POINT_X:
1227 case Dali::Actor::Property::SIZE_WIDTH:
1228 case Dali::Actor::Property::POSITION_X:
1229 case Dali::Actor::Property::WORLD_POSITION_X:
1230 case Dali::Actor::Property::SCALE_X:
1231 case Dali::Actor::Property::COLOR_RED:
1237 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1238 case Dali::Actor::Property::ANCHOR_POINT_Y:
1239 case Dali::Actor::Property::SIZE_HEIGHT:
1240 case Dali::Actor::Property::POSITION_Y:
1241 case Dali::Actor::Property::WORLD_POSITION_Y:
1242 case Dali::Actor::Property::SCALE_Y:
1243 case Dali::Actor::Property::COLOR_GREEN:
1249 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1250 case Dali::Actor::Property::ANCHOR_POINT_Z:
1251 case Dali::Actor::Property::SIZE_DEPTH:
1252 case Dali::Actor::Property::POSITION_Z:
1253 case Dali::Actor::Property::WORLD_POSITION_Z:
1254 case Dali::Actor::Property::SCALE_Z:
1255 case Dali::Actor::Property::COLOR_BLUE:
1261 case Dali::Actor::Property::COLOR_ALPHA:
1262 case Dali::Actor::Property::OPACITY:
1275 return componentIndex;
1278 bool Actor::PropertyHandler::GetCachedPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1280 bool valueSet = true;
1284 case Dali::Actor::Property::PARENT_ORIGIN:
1286 value = actor.GetCurrentParentOrigin();
1290 case Dali::Actor::Property::PARENT_ORIGIN_X:
1292 value = actor.GetCurrentParentOrigin().x;
1296 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1298 value = actor.GetCurrentParentOrigin().y;
1302 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1304 value = actor.GetCurrentParentOrigin().z;
1308 case Dali::Actor::Property::ANCHOR_POINT:
1310 value = actor.GetCurrentAnchorPoint();
1314 case Dali::Actor::Property::ANCHOR_POINT_X:
1316 value = actor.GetCurrentAnchorPoint().x;
1320 case Dali::Actor::Property::ANCHOR_POINT_Y:
1322 value = actor.GetCurrentAnchorPoint().y;
1326 case Dali::Actor::Property::ANCHOR_POINT_Z:
1328 value = actor.GetCurrentAnchorPoint().z;
1332 case Dali::Actor::Property::SIZE:
1334 value = actor.GetTargetSize();
1338 case Dali::Actor::Property::SIZE_WIDTH:
1340 value = actor.GetTargetSize().width;
1344 case Dali::Actor::Property::SIZE_HEIGHT:
1346 value = actor.GetTargetSize().height;
1350 case Dali::Actor::Property::SIZE_DEPTH:
1352 value = actor.GetTargetSize().depth;
1356 case Dali::Actor::Property::POSITION:
1358 value = actor.GetTargetPosition();
1362 case Dali::Actor::Property::POSITION_X:
1364 value = actor.GetTargetPosition().x;
1368 case Dali::Actor::Property::POSITION_Y:
1370 value = actor.GetTargetPosition().y;
1374 case Dali::Actor::Property::POSITION_Z:
1376 value = actor.GetTargetPosition().z;
1380 case Dali::Actor::Property::ORIENTATION:
1382 value = actor.mTargetOrientation;
1386 case Dali::Actor::Property::SCALE:
1388 value = actor.mTargetScale;
1392 case Dali::Actor::Property::SCALE_X:
1394 value = actor.mTargetScale.x;
1398 case Dali::Actor::Property::SCALE_Y:
1400 value = actor.mTargetScale.y;
1404 case Dali::Actor::Property::SCALE_Z:
1406 value = actor.mTargetScale.z;
1410 case Dali::Actor::Property::VISIBLE:
1412 value = actor.mVisible;
1416 case Dali::Actor::Property::COLOR:
1418 value = actor.mTargetColor;
1422 case Dali::Actor::Property::COLOR_RED:
1424 value = actor.mTargetColor.r;
1428 case Dali::Actor::Property::COLOR_GREEN:
1430 value = actor.mTargetColor.g;
1434 case Dali::Actor::Property::COLOR_BLUE:
1436 value = actor.mTargetColor.b;
1440 case Dali::Actor::Property::COLOR_ALPHA:
1441 case Dali::Actor::Property::OPACITY:
1443 value = actor.mTargetColor.a;
1447 case Dali::Actor::Property::NAME:
1449 value = actor.GetName();
1453 case Dali::Actor::Property::SENSITIVE:
1455 value = actor.IsSensitive();
1459 case Dali::Actor::Property::LEAVE_REQUIRED:
1461 value = actor.GetLeaveRequired();
1465 case Dali::Actor::Property::INHERIT_POSITION:
1467 value = actor.IsPositionInherited();
1471 case Dali::Actor::Property::INHERIT_ORIENTATION:
1473 value = actor.IsOrientationInherited();
1477 case Dali::Actor::Property::INHERIT_SCALE:
1479 value = actor.IsScaleInherited();
1483 case Dali::Actor::Property::COLOR_MODE:
1485 value = actor.GetColorMode();
1489 case Dali::Actor::Property::DRAW_MODE:
1491 value = actor.GetDrawMode();
1495 case Dali::Actor::Property::SIZE_MODE_FACTOR:
1497 value = actor.GetSizeModeFactor();
1501 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
1503 value = Scripting::GetLinearEnumerationName<ResizePolicy::Type>(actor.GetResizePolicy(Dimension::WIDTH), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT);
1507 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
1509 value = Scripting::GetLinearEnumerationName<ResizePolicy::Type>(actor.GetResizePolicy(Dimension::HEIGHT), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT);
1513 case Dali::Actor::Property::SIZE_SCALE_POLICY:
1515 value = actor.GetSizeScalePolicy();
1519 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
1521 value = (actor.GetResizePolicy(Dimension::WIDTH) == ResizePolicy::DIMENSION_DEPENDENCY) && (actor.GetDimensionDependency(Dimension::WIDTH) == Dimension::HEIGHT);
1525 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
1527 value = (actor.GetResizePolicy(Dimension::HEIGHT) == ResizePolicy::DIMENSION_DEPENDENCY) && (actor.GetDimensionDependency(Dimension::HEIGHT) == Dimension::WIDTH);
1531 case Dali::Actor::Property::PADDING:
1533 Vector2 widthPadding = actor.GetPadding(Dimension::WIDTH);
1534 Vector2 heightPadding = actor.GetPadding(Dimension::HEIGHT);
1535 value = Vector4(widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y);
1539 case Dali::Actor::Property::MINIMUM_SIZE:
1541 value = Vector2(actor.GetMinimumSize(Dimension::WIDTH), actor.GetMinimumSize(Dimension::HEIGHT));
1545 case Dali::Actor::Property::MAXIMUM_SIZE:
1547 value = Vector2(actor.GetMaximumSize(Dimension::WIDTH), actor.GetMaximumSize(Dimension::HEIGHT));
1551 case Dali::Actor::Property::CLIPPING_MODE:
1553 value = actor.mClippingMode;
1557 case Dali::DevelActor::Property::SIBLING_ORDER:
1559 Actor* parent = actor.GetParent();
1562 value = static_cast<int>(parent->GetSiblingOrderOfChild(actor));
1571 case Dali::Actor::Property::SCREEN_POSITION:
1573 value = actor.GetCurrentScreenPosition();
1577 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
1579 value = actor.mPositionUsesAnchorPoint;
1583 case Dali::Actor::Property::LAYOUT_DIRECTION:
1585 value = actor.mLayoutDirection;
1589 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
1591 value = actor.IsLayoutDirectionInherited();
1595 case Dali::Actor::Property::ID:
1597 value = static_cast<int>(actor.GetId());
1601 case Dali::Actor::Property::HIERARCHY_DEPTH:
1603 value = actor.GetHierarchyDepth();
1607 case Dali::Actor::Property::IS_ROOT:
1609 value = actor.IsRoot();
1613 case Dali::Actor::Property::IS_LAYER:
1615 value = actor.IsLayer();
1619 case Dali::Actor::Property::CONNECTED_TO_SCENE:
1621 value = actor.OnScene();
1625 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
1627 value = actor.IsKeyboardFocusable();
1631 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
1633 value = actor.mCaptureAllTouchAfterStart;
1637 case Dali::DevelActor::Property::TOUCH_AREA:
1639 value = actor.GetTouchArea();
1643 case Dali::DevelActor::Property::BLEND_EQUATION:
1645 value = actor.GetBlendEquation();
1651 // Must be a scene-graph only property
1660 bool Actor::PropertyHandler::GetCurrentPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1662 bool valueSet = true;
1666 case Dali::Actor::Property::SIZE:
1668 value = actor.GetCurrentSize();
1672 case Dali::Actor::Property::SIZE_WIDTH:
1674 value = actor.GetCurrentSize().width;
1678 case Dali::Actor::Property::SIZE_HEIGHT:
1680 value = actor.GetCurrentSize().height;
1684 case Dali::Actor::Property::SIZE_DEPTH:
1686 value = actor.GetCurrentSize().depth;
1690 case Dali::Actor::Property::POSITION:
1692 value = actor.GetCurrentPosition();
1696 case Dali::Actor::Property::POSITION_X:
1698 value = actor.GetCurrentPosition().x;
1702 case Dali::Actor::Property::POSITION_Y:
1704 value = actor.GetCurrentPosition().y;
1708 case Dali::Actor::Property::POSITION_Z:
1710 value = actor.GetCurrentPosition().z;
1714 case Dali::Actor::Property::WORLD_POSITION:
1716 value = actor.GetCurrentWorldPosition();
1720 case Dali::Actor::Property::WORLD_POSITION_X:
1722 value = actor.GetCurrentWorldPosition().x;
1726 case Dali::Actor::Property::WORLD_POSITION_Y:
1728 value = actor.GetCurrentWorldPosition().y;
1732 case Dali::Actor::Property::WORLD_POSITION_Z:
1734 value = actor.GetCurrentWorldPosition().z;
1738 case Dali::Actor::Property::ORIENTATION:
1740 value = actor.GetCurrentOrientation();
1744 case Dali::Actor::Property::WORLD_ORIENTATION:
1746 value = actor.GetCurrentWorldOrientation();
1750 case Dali::Actor::Property::SCALE:
1752 value = actor.GetCurrentScale();
1756 case Dali::Actor::Property::SCALE_X:
1758 value = actor.GetCurrentScale().x;
1762 case Dali::Actor::Property::SCALE_Y:
1764 value = actor.GetCurrentScale().y;
1768 case Dali::Actor::Property::SCALE_Z:
1770 value = actor.GetCurrentScale().z;
1774 case Dali::Actor::Property::WORLD_SCALE:
1776 value = actor.GetCurrentWorldScale();
1780 case Dali::Actor::Property::COLOR:
1782 value = actor.GetCurrentColor();
1786 case Dali::Actor::Property::COLOR_RED:
1788 value = actor.GetCurrentColor().r;
1792 case Dali::Actor::Property::COLOR_GREEN:
1794 value = actor.GetCurrentColor().g;
1798 case Dali::Actor::Property::COLOR_BLUE:
1800 value = actor.GetCurrentColor().b;
1804 case Dali::Actor::Property::COLOR_ALPHA:
1805 case Dali::Actor::Property::OPACITY:
1807 value = actor.GetCurrentColor().a;
1811 case Dali::Actor::Property::WORLD_COLOR:
1813 value = actor.GetCurrentWorldColor();
1817 case Dali::Actor::Property::WORLD_MATRIX:
1819 value = actor.GetCurrentWorldMatrix();
1823 case Dali::Actor::Property::VISIBLE:
1825 value = actor.IsVisible();
1829 case Dali::Actor::Property::CULLED:
1831 value = actor.GetNode().IsCulled(actor.GetEventThreadServices().GetEventBufferIndex());
1835 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
1837 // node is being used in a separate thread, the value from the previous update is the same, set by user
1838 value = Vector2(actor.GetNode().GetUpdateSizeHint());
1844 // Must be an event-side only property
1853 } // namespace Internal