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>
24 #include <dali/devel-api/actors/actor-devel.h>
25 #include <dali/internal/event/actors/actor-impl.h>
26 #include <dali/internal/event/common/property-helper.h>
27 #include <dali/internal/update/nodes/node-messages.h>
28 #include <dali/internal/update/nodes/node-declarations.h>
30 using Dali::Internal::SceneGraph::Node;
31 using Dali::Internal::SceneGraph::AnimatableProperty;
32 using Dali::Internal::SceneGraph::PropertyBase;
40 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.SetSiblingOrder( value );
507 case Dali::Actor::Property::CLIPPING_MODE:
509 ClippingMode::Type convertedValue = actor.mClippingMode;
510 if( Scripting::GetEnumerationProperty< ClippingMode::Type >( property, CLIPPING_MODE_TABLE, CLIPPING_MODE_TABLE_COUNT, convertedValue ) )
512 actor.mClippingMode = convertedValue;
513 SetClippingModeMessage( actor.GetEventThreadServices(), actor.GetNode(), actor.mClippingMode );
518 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
521 if( property.Get( value ) && value != actor.mPositionUsesAnchorPoint )
523 actor.mPositionUsesAnchorPoint = value;
524 SetPositionUsesAnchorPointMessage( actor.GetEventThreadServices(), actor.GetNode(), actor.mPositionUsesAnchorPoint );
529 case Dali::Actor::Property::LAYOUT_DIRECTION:
531 Dali::LayoutDirection::Type direction = actor.mLayoutDirection;
532 actor.mInheritLayoutDirection = false;
534 if( Scripting::GetEnumerationProperty< LayoutDirection::Type >( property, LAYOUT_DIRECTION_TABLE, LAYOUT_DIRECTION_TABLE_COUNT, direction ) )
536 actor.InheritLayoutDirectionRecursively( &actor, direction, true );
541 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
544 if( property.Get( value ) )
546 actor.SetInheritLayoutDirection( value );
551 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
554 if( property.Get( value ) )
556 actor.SetKeyboardFocusable( value );
561 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
563 actor.SetUpdateSizeHint( property.Get< Vector2 >() );
567 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
569 bool boolValue = false;
570 if ( property.Get( boolValue ) )
572 actor.mCaptureAllTouchAfterStart = boolValue;
577 case Dali::DevelActor::Property::TOUCH_DELEGATE_AREA:
580 if( property.Get( vec2Value ) )
582 actor.SetTouchDelegateArea( vec2Value );
590 // this can happen in the case of a non-animatable default property so just do nothing
596 void Actor::PropertyHandler::SetSceneGraphProperty(
597 Property::Index index,
598 const PropertyMetadata& entry,
599 const Property::Value& value,
600 EventThreadServices& eventThreadServices,
601 const SceneGraph::Node& node)
603 switch( entry.GetType() )
605 case Property::BOOLEAN:
607 const AnimatableProperty< bool >* property = dynamic_cast< const AnimatableProperty< bool >* >( entry.GetSceneGraphProperty() );
608 DALI_ASSERT_DEBUG( NULL != property );
610 // property is being used in a separate thread; queue a message to set the property
611 SceneGraph::NodePropertyMessage<bool>::Send( eventThreadServices, &node, property, &AnimatableProperty<bool>::Bake, value.Get<bool>() );
616 case Property::INTEGER:
618 const AnimatableProperty< int >* property = dynamic_cast< const AnimatableProperty< int >* >( entry.GetSceneGraphProperty() );
619 DALI_ASSERT_DEBUG( NULL != property );
621 // property is being used in a separate thread; queue a message to set the property
622 SceneGraph::NodePropertyMessage<int>::Send( eventThreadServices, &node, property, &AnimatableProperty<int>::Bake, value.Get<int>() );
627 case Property::FLOAT:
629 const AnimatableProperty< float >* property = dynamic_cast< const AnimatableProperty< float >* >( entry.GetSceneGraphProperty() );
630 DALI_ASSERT_DEBUG( NULL != property );
632 // property is being used in a separate thread; queue a message to set the property
633 SceneGraph::NodePropertyMessage<float>::Send( eventThreadServices, &node, property, &AnimatableProperty<float>::Bake, value.Get<float>() );
638 case Property::VECTOR2:
640 const AnimatableProperty< Vector2 >* property = dynamic_cast< const AnimatableProperty< Vector2 >* >( 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 if(entry.componentIndex == 0)
646 SceneGraph::NodePropertyComponentMessage<Vector2>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeX, value.Get<float>() );
648 else if(entry.componentIndex == 1)
650 SceneGraph::NodePropertyComponentMessage<Vector2>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeY, value.Get<float>() );
654 SceneGraph::NodePropertyMessage<Vector2>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector2>::Bake, value.Get<Vector2>() );
660 case Property::VECTOR3:
662 const AnimatableProperty< Vector3 >* property = dynamic_cast< const AnimatableProperty< Vector3 >* >( 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 if(entry.componentIndex == 0)
668 SceneGraph::NodePropertyComponentMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeX, value.Get<float>() );
670 else if(entry.componentIndex == 1)
672 SceneGraph::NodePropertyComponentMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeY, value.Get<float>() );
674 else if(entry.componentIndex == 2)
676 SceneGraph::NodePropertyComponentMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeZ, value.Get<float>() );
680 SceneGraph::NodePropertyMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::Bake, value.Get<Vector3>() );
686 case Property::VECTOR4:
688 const AnimatableProperty< Vector4 >* property = dynamic_cast< const AnimatableProperty< Vector4 >* >( entry.GetSceneGraphProperty() );
689 DALI_ASSERT_DEBUG( NULL != property );
691 // property is being used in a separate thread; queue a message to set the property
692 if(entry.componentIndex == 0)
694 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeX, value.Get<float>() );
696 else if(entry.componentIndex == 1)
698 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeY, value.Get<float>() );
700 else if(entry.componentIndex == 2)
702 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeZ, value.Get<float>() );
704 else if(entry.componentIndex == 3)
706 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeW, value.Get<float>() );
710 SceneGraph::NodePropertyMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::Bake, value.Get<Vector4>() );
716 case Property::ROTATION:
718 const AnimatableProperty< Quaternion >* property = dynamic_cast< const AnimatableProperty< Quaternion >* >( entry.GetSceneGraphProperty() );
719 DALI_ASSERT_DEBUG( NULL != property );
721 // property is being used in a separate thread; queue a message to set the property
722 SceneGraph::NodePropertyMessage<Quaternion>::Send( eventThreadServices, &node, property,&AnimatableProperty<Quaternion>::Bake, value.Get<Quaternion>() );
727 case Property::MATRIX:
729 const AnimatableProperty< Matrix >* property = dynamic_cast< const AnimatableProperty< Matrix >* >( entry.GetSceneGraphProperty() );
730 DALI_ASSERT_DEBUG( NULL != property );
732 // property is being used in a separate thread; queue a message to set the property
733 SceneGraph::NodePropertyMessage<Matrix>::Send( eventThreadServices, &node, property,&AnimatableProperty<Matrix>::Bake, value.Get<Matrix>() );
738 case Property::MATRIX3:
740 const AnimatableProperty< Matrix3 >* property = dynamic_cast< const AnimatableProperty< Matrix3 >* >( entry.GetSceneGraphProperty() );
741 DALI_ASSERT_DEBUG( NULL != property );
743 // property is being used in a separate thread; queue a message to set the property
744 SceneGraph::NodePropertyMessage<Matrix3>::Send( eventThreadServices, &node, property,&AnimatableProperty<Matrix3>::Bake, value.Get<Matrix3>() );
751 // nothing to do for other types
756 void Actor::PropertyHandler::OnNotifyDefaultPropertyAnimation(Internal::Actor& actor, Animation& animation, Property::Index index, const Property::Value& value, Animation::Type animationType)
758 switch( animationType )
761 case Animation::BETWEEN:
765 case Dali::Actor::Property::SIZE:
767 if( value.Get( actor.mTargetSize ) )
769 actor.mAnimatedSize = actor.mTargetSize;
770 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
772 // Notify deriving classes
773 actor.OnSizeAnimation( animation, actor.mTargetSize );
778 case Dali::Actor::Property::SIZE_WIDTH:
780 if( value.Get( actor.mTargetSize.width ) )
782 actor.mAnimatedSize.width = actor.mTargetSize.width;
783 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
785 // Notify deriving classes
786 actor.OnSizeAnimation( animation, actor.mTargetSize );
791 case Dali::Actor::Property::SIZE_HEIGHT:
793 if( value.Get( actor.mTargetSize.height ) )
795 actor.mAnimatedSize.height = actor.mTargetSize.height;
796 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
798 // Notify deriving classes
799 actor.OnSizeAnimation( animation, actor.mTargetSize );
804 case Dali::Actor::Property::SIZE_DEPTH:
806 if( value.Get( actor.mTargetSize.depth ) )
808 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
809 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
811 // Notify deriving classes
812 actor.OnSizeAnimation( animation, actor.mTargetSize );
817 case Dali::Actor::Property::POSITION:
819 value.Get( actor.mTargetPosition );
823 case Dali::Actor::Property::POSITION_X:
825 value.Get( actor.mTargetPosition.x );
829 case Dali::Actor::Property::POSITION_Y:
831 value.Get( actor.mTargetPosition.y );
835 case Dali::Actor::Property::POSITION_Z:
837 value.Get( actor.mTargetPosition.z );
841 case Dali::Actor::Property::ORIENTATION:
843 value.Get( actor.mTargetOrientation );
847 case Dali::Actor::Property::SCALE:
849 value.Get( actor.mTargetScale );
853 case Dali::Actor::Property::SCALE_X:
855 value.Get( actor.mTargetScale.x );
859 case Dali::Actor::Property::SCALE_Y:
861 value.Get( actor.mTargetScale.y );
865 case Dali::Actor::Property::SCALE_Z:
867 value.Get( actor.mTargetScale.z );
871 case Dali::Actor::Property::VISIBLE:
873 actor.SetVisibleInternal( value.Get< bool >(), SendMessage::FALSE );
877 case Dali::Actor::Property::COLOR:
879 value.Get( actor.mTargetColor );
883 case Dali::Actor::Property::COLOR_RED:
885 value.Get( actor.mTargetColor.r );
889 case Dali::Actor::Property::COLOR_GREEN:
891 value.Get( actor.mTargetColor.g );
895 case Dali::Actor::Property::COLOR_BLUE:
897 value.Get( actor.mTargetColor.b );
901 case Dali::Actor::Property::COLOR_ALPHA:
902 case Dali::Actor::Property::OPACITY:
904 value.Get( actor.mTargetColor.a );
910 // Not an animatable property. Do nothing.
921 case Dali::Actor::Property::SIZE:
923 if( AdjustValue< Vector3 >( actor.mTargetSize, value ) )
925 actor.mAnimatedSize = actor.mTargetSize;
926 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
928 // Notify deriving classes
929 actor.OnSizeAnimation( animation, actor.mTargetSize );
934 case Dali::Actor::Property::SIZE_WIDTH:
936 if( AdjustValue< float >( actor.mTargetSize.width, value ) )
938 actor.mAnimatedSize.width = actor.mTargetSize.width;
939 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
941 // Notify deriving classes
942 actor.OnSizeAnimation( animation, actor.mTargetSize );
947 case Dali::Actor::Property::SIZE_HEIGHT:
949 if( AdjustValue< float >( actor.mTargetSize.height, value ) )
951 actor.mAnimatedSize.height = actor.mTargetSize.height;
952 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
954 // Notify deriving classes
955 actor.OnSizeAnimation( animation, actor.mTargetSize );
960 case Dali::Actor::Property::SIZE_DEPTH:
962 if( AdjustValue< float >( actor.mTargetSize.depth, value ) )
964 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
965 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
967 // Notify deriving classes
968 actor.OnSizeAnimation( animation, actor.mTargetSize );
973 case Dali::Actor::Property::POSITION:
975 AdjustValue< Vector3 >( actor.mTargetPosition, value );
979 case Dali::Actor::Property::POSITION_X:
981 AdjustValue< float >( actor.mTargetPosition.x, value );
985 case Dali::Actor::Property::POSITION_Y:
987 AdjustValue< float >( actor.mTargetPosition.y, value );
991 case Dali::Actor::Property::POSITION_Z:
993 AdjustValue< float >( actor.mTargetPosition.z, value );
997 case Dali::Actor::Property::ORIENTATION:
999 Quaternion relativeValue;
1000 if( value.Get( relativeValue ) )
1002 actor.mTargetOrientation *= relativeValue;
1007 case Dali::Actor::Property::SCALE:
1009 AdjustValue< Vector3 >( actor.mTargetScale, value );
1013 case Dali::Actor::Property::SCALE_X:
1015 AdjustValue< float >( actor.mTargetScale.x, value );
1019 case Dali::Actor::Property::SCALE_Y:
1021 AdjustValue< float >( actor.mTargetScale.y, value );
1025 case Dali::Actor::Property::SCALE_Z:
1027 AdjustValue< float >( actor.mTargetScale.z, value );
1031 case Dali::Actor::Property::VISIBLE:
1033 bool relativeValue = false;
1034 if( value.Get( relativeValue ) )
1036 bool visible = actor.mVisible || relativeValue;
1037 actor.SetVisibleInternal( visible, SendMessage::FALSE );
1042 case Dali::Actor::Property::COLOR:
1044 AdjustValue< Vector4 >( actor.mTargetColor, value );
1048 case Dali::Actor::Property::COLOR_RED:
1050 AdjustValue< float >( actor.mTargetColor.r, value );
1054 case Dali::Actor::Property::COLOR_GREEN:
1056 AdjustValue< float >( actor.mTargetColor.g, value );
1060 case Dali::Actor::Property::COLOR_BLUE:
1062 AdjustValue< float >( actor.mTargetColor.b, value );
1066 case Dali::Actor::Property::COLOR_ALPHA:
1067 case Dali::Actor::Property::OPACITY:
1069 AdjustValue< float >( actor.mTargetColor.a, value );
1075 // Not an animatable property. Do nothing.
1084 const PropertyBase* Actor::PropertyHandler::GetSceneObjectAnimatableProperty(Property::Index index, const SceneGraph::Node& node)
1086 const PropertyBase* property( nullptr );
1090 case Dali::Actor::Property::SIZE: // FALLTHROUGH
1091 case Dali::Actor::Property::SIZE_WIDTH: // FALLTHROUGH
1092 case Dali::Actor::Property::SIZE_HEIGHT: // FALLTHROUGH
1093 case Dali::Actor::Property::SIZE_DEPTH:
1095 property = &node.mSize;
1098 case Dali::Actor::Property::POSITION: // FALLTHROUGH
1099 case Dali::Actor::Property::POSITION_X: // FALLTHROUGH
1100 case Dali::Actor::Property::POSITION_Y: // FALLTHROUGH
1101 case Dali::Actor::Property::POSITION_Z:
1103 property = &node.mPosition;
1106 case Dali::Actor::Property::ORIENTATION:
1108 property = &node.mOrientation;
1111 case Dali::Actor::Property::SCALE: // FALLTHROUGH
1112 case Dali::Actor::Property::SCALE_X: // FALLTHROUGH
1113 case Dali::Actor::Property::SCALE_Y: // FALLTHROUGH
1114 case Dali::Actor::Property::SCALE_Z:
1116 property = &node.mScale;
1119 case Dali::Actor::Property::VISIBLE:
1121 property = &node.mVisible;
1124 case Dali::Actor::Property::COLOR: // FALLTHROUGH
1125 case Dali::Actor::Property::COLOR_RED: // FALLTHROUGH
1126 case Dali::Actor::Property::COLOR_GREEN: // FALLTHROUGH
1127 case Dali::Actor::Property::COLOR_BLUE: // FALLTHROUGH
1128 case Dali::Actor::Property::COLOR_ALPHA: // FALLTHROUGH
1129 case Dali::Actor::Property::OPACITY:
1131 property = &node.mColor;
1143 const PropertyInputImpl* Actor::PropertyHandler::GetSceneObjectInputProperty(Property::Index index, const SceneGraph::Node& node)
1145 const PropertyInputImpl* property( nullptr );
1149 case Dali::Actor::Property::PARENT_ORIGIN: // FALLTHROUGH
1150 case Dali::Actor::Property::PARENT_ORIGIN_X: // FALLTHROUGH
1151 case Dali::Actor::Property::PARENT_ORIGIN_Y: // FALLTHROUGH
1152 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1154 property = &node.mParentOrigin;
1157 case Dali::Actor::Property::ANCHOR_POINT: // FALLTHROUGH
1158 case Dali::Actor::Property::ANCHOR_POINT_X: // FALLTHROUGH
1159 case Dali::Actor::Property::ANCHOR_POINT_Y: // FALLTHROUGH
1160 case Dali::Actor::Property::ANCHOR_POINT_Z:
1162 property = &node.mAnchorPoint;
1165 case Dali::Actor::Property::WORLD_POSITION: // FALLTHROUGH
1166 case Dali::Actor::Property::WORLD_POSITION_X: // FALLTHROUGH
1167 case Dali::Actor::Property::WORLD_POSITION_Y: // FALLTHROUGH
1168 case Dali::Actor::Property::WORLD_POSITION_Z:
1170 property = &node.mWorldPosition;
1173 case Dali::Actor::Property::WORLD_ORIENTATION:
1175 property = &node.mWorldOrientation;
1178 case Dali::Actor::Property::WORLD_SCALE:
1180 property = &node.mWorldScale;
1183 case Dali::Actor::Property::WORLD_COLOR:
1185 property = &node.mWorldColor;
1188 case Dali::Actor::Property::WORLD_MATRIX:
1190 property = &node.mWorldMatrix;
1193 case Dali::Actor::Property::CULLED:
1195 property = &node.mCulled;
1207 int32_t Actor::PropertyHandler::GetPropertyComponentIndex(Property::Index index)
1209 int32_t componentIndex = Property::INVALID_COMPONENT_INDEX;
1213 case Dali::Actor::Property::PARENT_ORIGIN_X:
1214 case Dali::Actor::Property::ANCHOR_POINT_X:
1215 case Dali::Actor::Property::SIZE_WIDTH:
1216 case Dali::Actor::Property::POSITION_X:
1217 case Dali::Actor::Property::WORLD_POSITION_X:
1218 case Dali::Actor::Property::SCALE_X:
1219 case Dali::Actor::Property::COLOR_RED:
1225 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1226 case Dali::Actor::Property::ANCHOR_POINT_Y:
1227 case Dali::Actor::Property::SIZE_HEIGHT:
1228 case Dali::Actor::Property::POSITION_Y:
1229 case Dali::Actor::Property::WORLD_POSITION_Y:
1230 case Dali::Actor::Property::SCALE_Y:
1231 case Dali::Actor::Property::COLOR_GREEN:
1237 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1238 case Dali::Actor::Property::ANCHOR_POINT_Z:
1239 case Dali::Actor::Property::SIZE_DEPTH:
1240 case Dali::Actor::Property::POSITION_Z:
1241 case Dali::Actor::Property::WORLD_POSITION_Z:
1242 case Dali::Actor::Property::SCALE_Z:
1243 case Dali::Actor::Property::COLOR_BLUE:
1249 case Dali::Actor::Property::COLOR_ALPHA:
1250 case Dali::Actor::Property::OPACITY:
1263 return componentIndex;
1266 bool Actor::PropertyHandler::GetCachedPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1268 bool valueSet = true;
1272 case Dali::Actor::Property::PARENT_ORIGIN:
1274 value = actor.GetCurrentParentOrigin();
1278 case Dali::Actor::Property::PARENT_ORIGIN_X:
1280 value = actor.GetCurrentParentOrigin().x;
1284 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1286 value = actor.GetCurrentParentOrigin().y;
1290 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1292 value = actor.GetCurrentParentOrigin().z;
1296 case Dali::Actor::Property::ANCHOR_POINT:
1298 value = actor.GetCurrentAnchorPoint();
1302 case Dali::Actor::Property::ANCHOR_POINT_X:
1304 value = actor.GetCurrentAnchorPoint().x;
1308 case Dali::Actor::Property::ANCHOR_POINT_Y:
1310 value = actor.GetCurrentAnchorPoint().y;
1314 case Dali::Actor::Property::ANCHOR_POINT_Z:
1316 value = actor.GetCurrentAnchorPoint().z;
1320 case Dali::Actor::Property::SIZE:
1322 value = actor.GetTargetSize();
1326 case Dali::Actor::Property::SIZE_WIDTH:
1328 value = actor.GetTargetSize().width;
1332 case Dali::Actor::Property::SIZE_HEIGHT:
1334 value = actor.GetTargetSize().height;
1338 case Dali::Actor::Property::SIZE_DEPTH:
1340 value = actor.GetTargetSize().depth;
1344 case Dali::Actor::Property::POSITION:
1346 value = actor.GetTargetPosition();
1350 case Dali::Actor::Property::POSITION_X:
1352 value = actor.GetTargetPosition().x;
1356 case Dali::Actor::Property::POSITION_Y:
1358 value = actor.GetTargetPosition().y;
1362 case Dali::Actor::Property::POSITION_Z:
1364 value = actor.GetTargetPosition().z;
1368 case Dali::Actor::Property::ORIENTATION:
1370 value = actor.mTargetOrientation;
1374 case Dali::Actor::Property::SCALE:
1376 value = actor.mTargetScale;
1380 case Dali::Actor::Property::SCALE_X:
1382 value = actor.mTargetScale.x;
1386 case Dali::Actor::Property::SCALE_Y:
1388 value = actor.mTargetScale.y;
1392 case Dali::Actor::Property::SCALE_Z:
1394 value = actor.mTargetScale.z;
1398 case Dali::Actor::Property::VISIBLE:
1400 value = actor.mVisible;
1404 case Dali::Actor::Property::COLOR:
1406 value = actor.mTargetColor;
1410 case Dali::Actor::Property::COLOR_RED:
1412 value = actor.mTargetColor.r;
1416 case Dali::Actor::Property::COLOR_GREEN:
1418 value = actor.mTargetColor.g;
1422 case Dali::Actor::Property::COLOR_BLUE:
1424 value = actor.mTargetColor.b;
1428 case Dali::Actor::Property::COLOR_ALPHA:
1429 case Dali::Actor::Property::OPACITY:
1431 value = actor.mTargetColor.a;
1435 case Dali::Actor::Property::NAME:
1437 value = actor.GetName();
1441 case Dali::Actor::Property::SENSITIVE:
1443 value = actor.IsSensitive();
1447 case Dali::Actor::Property::LEAVE_REQUIRED:
1449 value = actor.GetLeaveRequired();
1453 case Dali::Actor::Property::INHERIT_POSITION:
1455 value = actor.IsPositionInherited();
1459 case Dali::Actor::Property::INHERIT_ORIENTATION:
1461 value = actor.IsOrientationInherited();
1465 case Dali::Actor::Property::INHERIT_SCALE:
1467 value = actor.IsScaleInherited();
1471 case Dali::Actor::Property::COLOR_MODE:
1473 value = actor.GetColorMode();
1477 case Dali::Actor::Property::DRAW_MODE:
1479 value = actor.GetDrawMode();
1483 case Dali::Actor::Property::SIZE_MODE_FACTOR:
1485 value = actor.GetSizeModeFactor();
1489 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
1491 value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( actor.GetResizePolicy( Dimension::WIDTH ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT );
1495 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
1497 value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( actor.GetResizePolicy( Dimension::HEIGHT ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT );
1501 case Dali::Actor::Property::SIZE_SCALE_POLICY:
1503 value = actor.GetSizeScalePolicy();
1507 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
1509 value = ( actor.GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( actor.GetDimensionDependency( Dimension::WIDTH ) == Dimension::HEIGHT );
1513 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
1515 value = ( actor.GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( actor.GetDimensionDependency( Dimension::HEIGHT ) == Dimension::WIDTH );
1519 case Dali::Actor::Property::PADDING:
1521 Vector2 widthPadding = actor.GetPadding( Dimension::WIDTH );
1522 Vector2 heightPadding = actor.GetPadding( Dimension::HEIGHT );
1523 value = Vector4( widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y );
1527 case Dali::Actor::Property::MINIMUM_SIZE:
1529 value = Vector2( actor.GetMinimumSize( Dimension::WIDTH ), actor.GetMinimumSize( Dimension::HEIGHT ) );
1533 case Dali::Actor::Property::MAXIMUM_SIZE:
1535 value = Vector2( actor.GetMaximumSize( Dimension::WIDTH ), actor.GetMaximumSize( Dimension::HEIGHT ) );
1539 case Dali::Actor::Property::CLIPPING_MODE:
1541 value = actor.mClippingMode;
1545 case Dali::DevelActor::Property::SIBLING_ORDER:
1547 value = static_cast<int>( actor.GetSiblingOrder() );
1551 case Dali::Actor::Property::SCREEN_POSITION:
1553 value = actor.GetCurrentScreenPosition();
1557 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
1559 value = actor.mPositionUsesAnchorPoint;
1563 case Dali::Actor::Property::LAYOUT_DIRECTION:
1565 value = actor.mLayoutDirection;
1569 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
1571 value = actor.IsLayoutDirectionInherited();
1575 case Dali::Actor::Property::ID:
1577 value = static_cast<int>( actor.GetId() );
1581 case Dali::Actor::Property::HIERARCHY_DEPTH:
1583 value = actor.GetHierarchyDepth();
1587 case Dali::Actor::Property::IS_ROOT:
1589 value = actor.IsRoot();
1593 case Dali::Actor::Property::IS_LAYER:
1595 value = actor.IsLayer();
1599 case Dali::Actor::Property::CONNECTED_TO_SCENE:
1601 value = actor.OnScene();
1605 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
1607 value = actor.IsKeyboardFocusable();
1611 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
1613 value = actor.mCaptureAllTouchAfterStart;
1617 case Dali::DevelActor::Property::TOUCH_DELEGATE_AREA:
1619 value = actor.GetTouchDelegateArea();
1625 // Must be a scene-graph only property
1634 bool Actor::PropertyHandler::GetCurrentPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1636 bool valueSet = true;
1640 case Dali::Actor::Property::SIZE:
1642 value = actor.GetCurrentSize();
1646 case Dali::Actor::Property::SIZE_WIDTH:
1648 value = actor.GetCurrentSize().width;
1652 case Dali::Actor::Property::SIZE_HEIGHT:
1654 value = actor.GetCurrentSize().height;
1658 case Dali::Actor::Property::SIZE_DEPTH:
1660 value = actor.GetCurrentSize().depth;
1664 case Dali::Actor::Property::POSITION:
1666 value = actor.GetCurrentPosition();
1670 case Dali::Actor::Property::POSITION_X:
1672 value = actor.GetCurrentPosition().x;
1676 case Dali::Actor::Property::POSITION_Y:
1678 value = actor.GetCurrentPosition().y;
1682 case Dali::Actor::Property::POSITION_Z:
1684 value = actor.GetCurrentPosition().z;
1688 case Dali::Actor::Property::WORLD_POSITION:
1690 value = actor.GetCurrentWorldPosition();
1694 case Dali::Actor::Property::WORLD_POSITION_X:
1696 value = actor.GetCurrentWorldPosition().x;
1700 case Dali::Actor::Property::WORLD_POSITION_Y:
1702 value = actor.GetCurrentWorldPosition().y;
1706 case Dali::Actor::Property::WORLD_POSITION_Z:
1708 value = actor.GetCurrentWorldPosition().z;
1712 case Dali::Actor::Property::ORIENTATION:
1714 value = actor.GetCurrentOrientation();
1718 case Dali::Actor::Property::WORLD_ORIENTATION:
1720 value = actor.GetCurrentWorldOrientation();
1724 case Dali::Actor::Property::SCALE:
1726 value = actor.GetCurrentScale();
1730 case Dali::Actor::Property::SCALE_X:
1732 value = actor.GetCurrentScale().x;
1736 case Dali::Actor::Property::SCALE_Y:
1738 value = actor.GetCurrentScale().y;
1742 case Dali::Actor::Property::SCALE_Z:
1744 value = actor.GetCurrentScale().z;
1748 case Dali::Actor::Property::WORLD_SCALE:
1750 value = actor.GetCurrentWorldScale();
1754 case Dali::Actor::Property::COLOR:
1756 value = actor.GetCurrentColor();
1760 case Dali::Actor::Property::COLOR_RED:
1762 value = actor.GetCurrentColor().r;
1766 case Dali::Actor::Property::COLOR_GREEN:
1768 value = actor.GetCurrentColor().g;
1772 case Dali::Actor::Property::COLOR_BLUE:
1774 value = actor.GetCurrentColor().b;
1778 case Dali::Actor::Property::COLOR_ALPHA:
1779 case Dali::Actor::Property::OPACITY:
1781 value = actor.GetCurrentColor().a;
1785 case Dali::Actor::Property::WORLD_COLOR:
1787 value = actor.GetCurrentWorldColor();
1791 case Dali::Actor::Property::WORLD_MATRIX:
1793 value = actor.GetCurrentWorldMatrix();
1797 case Dali::Actor::Property::VISIBLE:
1799 value = actor.IsVisible();
1803 case Dali::Actor::Property::CULLED:
1805 value = actor.GetNode().IsCulled( actor.GetEventThreadServices().GetEventBufferIndex() );
1809 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
1811 // node is being used in a separate thread, the value from the previous update is the same, set by user
1812 value = Vector2( actor.GetNode().GetUpdateSizeHint() );
1818 // Must be an event-side only property
1827 } // namespace Internal