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_AREA:
580 if( property.Get( vec2Value ) )
582 actor.SetTouchArea( vec2Value );
587 case Dali::DevelActor::Property::BLEND_EQUATION:
590 if( property.Get( value ) )
592 actor.SetBlendEquation( static_cast<DevelBlendEquation::Type>( value ) );
599 // this can happen in the case of a non-animatable default property so just do nothing
605 void Actor::PropertyHandler::SetSceneGraphProperty(
606 Property::Index index,
607 const PropertyMetadata& entry,
608 const Property::Value& value,
609 EventThreadServices& eventThreadServices,
610 const SceneGraph::Node& node)
612 switch( entry.GetType() )
614 case Property::BOOLEAN:
616 const AnimatableProperty< bool >* property = dynamic_cast< const AnimatableProperty< bool >* >( entry.GetSceneGraphProperty() );
617 DALI_ASSERT_DEBUG( NULL != property );
619 // property is being used in a separate thread; queue a message to set the property
620 SceneGraph::NodePropertyMessage<bool>::Send( eventThreadServices, &node, property, &AnimatableProperty<bool>::Bake, value.Get<bool>() );
625 case Property::INTEGER:
627 const AnimatableProperty< int >* property = dynamic_cast< const AnimatableProperty< int >* >( entry.GetSceneGraphProperty() );
628 DALI_ASSERT_DEBUG( NULL != property );
630 // property is being used in a separate thread; queue a message to set the property
631 SceneGraph::NodePropertyMessage<int>::Send( eventThreadServices, &node, property, &AnimatableProperty<int>::Bake, value.Get<int>() );
636 case Property::FLOAT:
638 const AnimatableProperty< float >* property = dynamic_cast< const AnimatableProperty< float >* >( entry.GetSceneGraphProperty() );
639 DALI_ASSERT_DEBUG( NULL != property );
641 // property is being used in a separate thread; queue a message to set the property
642 SceneGraph::NodePropertyMessage<float>::Send( eventThreadServices, &node, property, &AnimatableProperty<float>::Bake, value.Get<float>() );
647 case Property::VECTOR2:
649 const AnimatableProperty< Vector2 >* property = dynamic_cast< const AnimatableProperty< Vector2 >* >( entry.GetSceneGraphProperty() );
650 DALI_ASSERT_DEBUG( NULL != property );
652 // property is being used in a separate thread; queue a message to set the property
653 if(entry.componentIndex == 0)
655 SceneGraph::NodePropertyComponentMessage<Vector2>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeX, value.Get<float>() );
657 else if(entry.componentIndex == 1)
659 SceneGraph::NodePropertyComponentMessage<Vector2>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector2>::BakeY, value.Get<float>() );
663 SceneGraph::NodePropertyMessage<Vector2>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector2>::Bake, value.Get<Vector2>() );
669 case Property::VECTOR3:
671 const AnimatableProperty< Vector3 >* property = dynamic_cast< const AnimatableProperty< Vector3 >* >( entry.GetSceneGraphProperty() );
672 DALI_ASSERT_DEBUG( NULL != property );
674 // property is being used in a separate thread; queue a message to set the property
675 if(entry.componentIndex == 0)
677 SceneGraph::NodePropertyComponentMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeX, value.Get<float>() );
679 else if(entry.componentIndex == 1)
681 SceneGraph::NodePropertyComponentMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeY, value.Get<float>() );
683 else if(entry.componentIndex == 2)
685 SceneGraph::NodePropertyComponentMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::BakeZ, value.Get<float>() );
689 SceneGraph::NodePropertyMessage<Vector3>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector3>::Bake, value.Get<Vector3>() );
695 case Property::VECTOR4:
697 const AnimatableProperty< Vector4 >* property = dynamic_cast< const AnimatableProperty< Vector4 >* >( entry.GetSceneGraphProperty() );
698 DALI_ASSERT_DEBUG( NULL != property );
700 // property is being used in a separate thread; queue a message to set the property
701 if(entry.componentIndex == 0)
703 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeX, value.Get<float>() );
705 else if(entry.componentIndex == 1)
707 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeY, value.Get<float>() );
709 else if(entry.componentIndex == 2)
711 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeZ, value.Get<float>() );
713 else if(entry.componentIndex == 3)
715 SceneGraph::NodePropertyComponentMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::BakeW, value.Get<float>() );
719 SceneGraph::NodePropertyMessage<Vector4>::Send( eventThreadServices, &node, property, &AnimatableProperty<Vector4>::Bake, value.Get<Vector4>() );
725 case Property::ROTATION:
727 const AnimatableProperty< Quaternion >* property = dynamic_cast< const AnimatableProperty< Quaternion >* >( entry.GetSceneGraphProperty() );
728 DALI_ASSERT_DEBUG( NULL != property );
730 // property is being used in a separate thread; queue a message to set the property
731 SceneGraph::NodePropertyMessage<Quaternion>::Send( eventThreadServices, &node, property,&AnimatableProperty<Quaternion>::Bake, value.Get<Quaternion>() );
736 case Property::MATRIX:
738 const AnimatableProperty< Matrix >* property = dynamic_cast< const AnimatableProperty< Matrix >* >( entry.GetSceneGraphProperty() );
739 DALI_ASSERT_DEBUG( NULL != property );
741 // property is being used in a separate thread; queue a message to set the property
742 SceneGraph::NodePropertyMessage<Matrix>::Send( eventThreadServices, &node, property,&AnimatableProperty<Matrix>::Bake, value.Get<Matrix>() );
747 case Property::MATRIX3:
749 const AnimatableProperty< Matrix3 >* property = dynamic_cast< const AnimatableProperty< Matrix3 >* >( entry.GetSceneGraphProperty() );
750 DALI_ASSERT_DEBUG( NULL != property );
752 // property is being used in a separate thread; queue a message to set the property
753 SceneGraph::NodePropertyMessage<Matrix3>::Send( eventThreadServices, &node, property,&AnimatableProperty<Matrix3>::Bake, value.Get<Matrix3>() );
760 // nothing to do for other types
765 void Actor::PropertyHandler::OnNotifyDefaultPropertyAnimation(Internal::Actor& actor, Animation& animation, Property::Index index, const Property::Value& value, Animation::Type animationType)
767 switch( animationType )
770 case Animation::BETWEEN:
774 case Dali::Actor::Property::SIZE:
776 if( value.Get( actor.mTargetSize ) )
778 actor.mAnimatedSize = actor.mTargetSize;
779 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
781 // Notify deriving classes
782 actor.OnSizeAnimation( animation, actor.mTargetSize );
787 case Dali::Actor::Property::SIZE_WIDTH:
789 if( value.Get( actor.mTargetSize.width ) )
791 actor.mAnimatedSize.width = actor.mTargetSize.width;
792 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
794 // Notify deriving classes
795 actor.OnSizeAnimation( animation, actor.mTargetSize );
800 case Dali::Actor::Property::SIZE_HEIGHT:
802 if( value.Get( actor.mTargetSize.height ) )
804 actor.mAnimatedSize.height = actor.mTargetSize.height;
805 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
807 // Notify deriving classes
808 actor.OnSizeAnimation( animation, actor.mTargetSize );
813 case Dali::Actor::Property::SIZE_DEPTH:
815 if( value.Get( actor.mTargetSize.depth ) )
817 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
818 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
820 // Notify deriving classes
821 actor.OnSizeAnimation( animation, actor.mTargetSize );
826 case Dali::Actor::Property::POSITION:
828 value.Get( actor.mTargetPosition );
832 case Dali::Actor::Property::POSITION_X:
834 value.Get( actor.mTargetPosition.x );
838 case Dali::Actor::Property::POSITION_Y:
840 value.Get( actor.mTargetPosition.y );
844 case Dali::Actor::Property::POSITION_Z:
846 value.Get( actor.mTargetPosition.z );
850 case Dali::Actor::Property::ORIENTATION:
852 value.Get( actor.mTargetOrientation );
856 case Dali::Actor::Property::SCALE:
858 value.Get( actor.mTargetScale );
862 case Dali::Actor::Property::SCALE_X:
864 value.Get( actor.mTargetScale.x );
868 case Dali::Actor::Property::SCALE_Y:
870 value.Get( actor.mTargetScale.y );
874 case Dali::Actor::Property::SCALE_Z:
876 value.Get( actor.mTargetScale.z );
880 case Dali::Actor::Property::VISIBLE:
882 actor.SetVisibleInternal( value.Get< bool >(), SendMessage::FALSE );
886 case Dali::Actor::Property::COLOR:
888 value.Get( actor.mTargetColor );
892 case Dali::Actor::Property::COLOR_RED:
894 value.Get( actor.mTargetColor.r );
898 case Dali::Actor::Property::COLOR_GREEN:
900 value.Get( actor.mTargetColor.g );
904 case Dali::Actor::Property::COLOR_BLUE:
906 value.Get( actor.mTargetColor.b );
910 case Dali::Actor::Property::COLOR_ALPHA:
911 case Dali::Actor::Property::OPACITY:
913 value.Get( actor.mTargetColor.a );
919 // Not an animatable property. Do nothing.
930 case Dali::Actor::Property::SIZE:
932 if( AdjustValue< Vector3 >( actor.mTargetSize, value ) )
934 actor.mAnimatedSize = actor.mTargetSize;
935 actor.mUseAnimatedSize = AnimatedSizeFlag::WIDTH | AnimatedSizeFlag::HEIGHT | AnimatedSizeFlag::DEPTH;
937 // Notify deriving classes
938 actor.OnSizeAnimation( animation, actor.mTargetSize );
943 case Dali::Actor::Property::SIZE_WIDTH:
945 if( AdjustValue< float >( actor.mTargetSize.width, value ) )
947 actor.mAnimatedSize.width = actor.mTargetSize.width;
948 actor.mUseAnimatedSize |= AnimatedSizeFlag::WIDTH;
950 // Notify deriving classes
951 actor.OnSizeAnimation( animation, actor.mTargetSize );
956 case Dali::Actor::Property::SIZE_HEIGHT:
958 if( AdjustValue< float >( actor.mTargetSize.height, value ) )
960 actor.mAnimatedSize.height = actor.mTargetSize.height;
961 actor.mUseAnimatedSize |= AnimatedSizeFlag::HEIGHT;
963 // Notify deriving classes
964 actor.OnSizeAnimation( animation, actor.mTargetSize );
969 case Dali::Actor::Property::SIZE_DEPTH:
971 if( AdjustValue< float >( actor.mTargetSize.depth, value ) )
973 actor.mAnimatedSize.depth = actor.mTargetSize.depth;
974 actor.mUseAnimatedSize |= AnimatedSizeFlag::DEPTH;
976 // Notify deriving classes
977 actor.OnSizeAnimation( animation, actor.mTargetSize );
982 case Dali::Actor::Property::POSITION:
984 AdjustValue< Vector3 >( actor.mTargetPosition, value );
988 case Dali::Actor::Property::POSITION_X:
990 AdjustValue< float >( actor.mTargetPosition.x, value );
994 case Dali::Actor::Property::POSITION_Y:
996 AdjustValue< float >( actor.mTargetPosition.y, value );
1000 case Dali::Actor::Property::POSITION_Z:
1002 AdjustValue< float >( actor.mTargetPosition.z, value );
1006 case Dali::Actor::Property::ORIENTATION:
1008 Quaternion relativeValue;
1009 if( value.Get( relativeValue ) )
1011 actor.mTargetOrientation *= relativeValue;
1016 case Dali::Actor::Property::SCALE:
1018 AdjustValue< Vector3 >( actor.mTargetScale, value );
1022 case Dali::Actor::Property::SCALE_X:
1024 AdjustValue< float >( actor.mTargetScale.x, value );
1028 case Dali::Actor::Property::SCALE_Y:
1030 AdjustValue< float >( actor.mTargetScale.y, value );
1034 case Dali::Actor::Property::SCALE_Z:
1036 AdjustValue< float >( actor.mTargetScale.z, value );
1040 case Dali::Actor::Property::VISIBLE:
1042 bool relativeValue = false;
1043 if( value.Get( relativeValue ) )
1045 bool visible = actor.mVisible || relativeValue;
1046 actor.SetVisibleInternal( visible, SendMessage::FALSE );
1051 case Dali::Actor::Property::COLOR:
1053 AdjustValue< Vector4 >( actor.mTargetColor, value );
1057 case Dali::Actor::Property::COLOR_RED:
1059 AdjustValue< float >( actor.mTargetColor.r, value );
1063 case Dali::Actor::Property::COLOR_GREEN:
1065 AdjustValue< float >( actor.mTargetColor.g, value );
1069 case Dali::Actor::Property::COLOR_BLUE:
1071 AdjustValue< float >( actor.mTargetColor.b, value );
1075 case Dali::Actor::Property::COLOR_ALPHA:
1076 case Dali::Actor::Property::OPACITY:
1078 AdjustValue< float >( actor.mTargetColor.a, value );
1084 // Not an animatable property. Do nothing.
1093 const PropertyBase* Actor::PropertyHandler::GetSceneObjectAnimatableProperty(Property::Index index, const SceneGraph::Node& node)
1095 const PropertyBase* property( nullptr );
1099 case Dali::Actor::Property::SIZE: // FALLTHROUGH
1100 case Dali::Actor::Property::SIZE_WIDTH: // FALLTHROUGH
1101 case Dali::Actor::Property::SIZE_HEIGHT: // FALLTHROUGH
1102 case Dali::Actor::Property::SIZE_DEPTH:
1104 property = &node.mSize;
1107 case Dali::Actor::Property::POSITION: // FALLTHROUGH
1108 case Dali::Actor::Property::POSITION_X: // FALLTHROUGH
1109 case Dali::Actor::Property::POSITION_Y: // FALLTHROUGH
1110 case Dali::Actor::Property::POSITION_Z:
1112 property = &node.mPosition;
1115 case Dali::Actor::Property::ORIENTATION:
1117 property = &node.mOrientation;
1120 case Dali::Actor::Property::SCALE: // FALLTHROUGH
1121 case Dali::Actor::Property::SCALE_X: // FALLTHROUGH
1122 case Dali::Actor::Property::SCALE_Y: // FALLTHROUGH
1123 case Dali::Actor::Property::SCALE_Z:
1125 property = &node.mScale;
1128 case Dali::Actor::Property::VISIBLE:
1130 property = &node.mVisible;
1133 case Dali::Actor::Property::COLOR: // FALLTHROUGH
1134 case Dali::Actor::Property::COLOR_RED: // FALLTHROUGH
1135 case Dali::Actor::Property::COLOR_GREEN: // FALLTHROUGH
1136 case Dali::Actor::Property::COLOR_BLUE: // FALLTHROUGH
1137 case Dali::Actor::Property::COLOR_ALPHA: // FALLTHROUGH
1138 case Dali::Actor::Property::OPACITY:
1140 property = &node.mColor;
1152 const PropertyInputImpl* Actor::PropertyHandler::GetSceneObjectInputProperty(Property::Index index, const SceneGraph::Node& node)
1154 const PropertyInputImpl* property( nullptr );
1158 case Dali::Actor::Property::PARENT_ORIGIN: // FALLTHROUGH
1159 case Dali::Actor::Property::PARENT_ORIGIN_X: // FALLTHROUGH
1160 case Dali::Actor::Property::PARENT_ORIGIN_Y: // FALLTHROUGH
1161 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1163 property = &node.mParentOrigin;
1166 case Dali::Actor::Property::ANCHOR_POINT: // FALLTHROUGH
1167 case Dali::Actor::Property::ANCHOR_POINT_X: // FALLTHROUGH
1168 case Dali::Actor::Property::ANCHOR_POINT_Y: // FALLTHROUGH
1169 case Dali::Actor::Property::ANCHOR_POINT_Z:
1171 property = &node.mAnchorPoint;
1174 case Dali::Actor::Property::WORLD_POSITION: // FALLTHROUGH
1175 case Dali::Actor::Property::WORLD_POSITION_X: // FALLTHROUGH
1176 case Dali::Actor::Property::WORLD_POSITION_Y: // FALLTHROUGH
1177 case Dali::Actor::Property::WORLD_POSITION_Z:
1179 property = &node.mWorldPosition;
1182 case Dali::Actor::Property::WORLD_ORIENTATION:
1184 property = &node.mWorldOrientation;
1187 case Dali::Actor::Property::WORLD_SCALE:
1189 property = &node.mWorldScale;
1192 case Dali::Actor::Property::WORLD_COLOR:
1194 property = &node.mWorldColor;
1197 case Dali::Actor::Property::WORLD_MATRIX:
1199 property = &node.mWorldMatrix;
1202 case Dali::Actor::Property::CULLED:
1204 property = &node.mCulled;
1216 int32_t Actor::PropertyHandler::GetPropertyComponentIndex(Property::Index index)
1218 int32_t componentIndex = Property::INVALID_COMPONENT_INDEX;
1222 case Dali::Actor::Property::PARENT_ORIGIN_X:
1223 case Dali::Actor::Property::ANCHOR_POINT_X:
1224 case Dali::Actor::Property::SIZE_WIDTH:
1225 case Dali::Actor::Property::POSITION_X:
1226 case Dali::Actor::Property::WORLD_POSITION_X:
1227 case Dali::Actor::Property::SCALE_X:
1228 case Dali::Actor::Property::COLOR_RED:
1234 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1235 case Dali::Actor::Property::ANCHOR_POINT_Y:
1236 case Dali::Actor::Property::SIZE_HEIGHT:
1237 case Dali::Actor::Property::POSITION_Y:
1238 case Dali::Actor::Property::WORLD_POSITION_Y:
1239 case Dali::Actor::Property::SCALE_Y:
1240 case Dali::Actor::Property::COLOR_GREEN:
1246 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1247 case Dali::Actor::Property::ANCHOR_POINT_Z:
1248 case Dali::Actor::Property::SIZE_DEPTH:
1249 case Dali::Actor::Property::POSITION_Z:
1250 case Dali::Actor::Property::WORLD_POSITION_Z:
1251 case Dali::Actor::Property::SCALE_Z:
1252 case Dali::Actor::Property::COLOR_BLUE:
1258 case Dali::Actor::Property::COLOR_ALPHA:
1259 case Dali::Actor::Property::OPACITY:
1272 return componentIndex;
1275 bool Actor::PropertyHandler::GetCachedPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1277 bool valueSet = true;
1281 case Dali::Actor::Property::PARENT_ORIGIN:
1283 value = actor.GetCurrentParentOrigin();
1287 case Dali::Actor::Property::PARENT_ORIGIN_X:
1289 value = actor.GetCurrentParentOrigin().x;
1293 case Dali::Actor::Property::PARENT_ORIGIN_Y:
1295 value = actor.GetCurrentParentOrigin().y;
1299 case Dali::Actor::Property::PARENT_ORIGIN_Z:
1301 value = actor.GetCurrentParentOrigin().z;
1305 case Dali::Actor::Property::ANCHOR_POINT:
1307 value = actor.GetCurrentAnchorPoint();
1311 case Dali::Actor::Property::ANCHOR_POINT_X:
1313 value = actor.GetCurrentAnchorPoint().x;
1317 case Dali::Actor::Property::ANCHOR_POINT_Y:
1319 value = actor.GetCurrentAnchorPoint().y;
1323 case Dali::Actor::Property::ANCHOR_POINT_Z:
1325 value = actor.GetCurrentAnchorPoint().z;
1329 case Dali::Actor::Property::SIZE:
1331 value = actor.GetTargetSize();
1335 case Dali::Actor::Property::SIZE_WIDTH:
1337 value = actor.GetTargetSize().width;
1341 case Dali::Actor::Property::SIZE_HEIGHT:
1343 value = actor.GetTargetSize().height;
1347 case Dali::Actor::Property::SIZE_DEPTH:
1349 value = actor.GetTargetSize().depth;
1353 case Dali::Actor::Property::POSITION:
1355 value = actor.GetTargetPosition();
1359 case Dali::Actor::Property::POSITION_X:
1361 value = actor.GetTargetPosition().x;
1365 case Dali::Actor::Property::POSITION_Y:
1367 value = actor.GetTargetPosition().y;
1371 case Dali::Actor::Property::POSITION_Z:
1373 value = actor.GetTargetPosition().z;
1377 case Dali::Actor::Property::ORIENTATION:
1379 value = actor.mTargetOrientation;
1383 case Dali::Actor::Property::SCALE:
1385 value = actor.mTargetScale;
1389 case Dali::Actor::Property::SCALE_X:
1391 value = actor.mTargetScale.x;
1395 case Dali::Actor::Property::SCALE_Y:
1397 value = actor.mTargetScale.y;
1401 case Dali::Actor::Property::SCALE_Z:
1403 value = actor.mTargetScale.z;
1407 case Dali::Actor::Property::VISIBLE:
1409 value = actor.mVisible;
1413 case Dali::Actor::Property::COLOR:
1415 value = actor.mTargetColor;
1419 case Dali::Actor::Property::COLOR_RED:
1421 value = actor.mTargetColor.r;
1425 case Dali::Actor::Property::COLOR_GREEN:
1427 value = actor.mTargetColor.g;
1431 case Dali::Actor::Property::COLOR_BLUE:
1433 value = actor.mTargetColor.b;
1437 case Dali::Actor::Property::COLOR_ALPHA:
1438 case Dali::Actor::Property::OPACITY:
1440 value = actor.mTargetColor.a;
1444 case Dali::Actor::Property::NAME:
1446 value = actor.GetName();
1450 case Dali::Actor::Property::SENSITIVE:
1452 value = actor.IsSensitive();
1456 case Dali::Actor::Property::LEAVE_REQUIRED:
1458 value = actor.GetLeaveRequired();
1462 case Dali::Actor::Property::INHERIT_POSITION:
1464 value = actor.IsPositionInherited();
1468 case Dali::Actor::Property::INHERIT_ORIENTATION:
1470 value = actor.IsOrientationInherited();
1474 case Dali::Actor::Property::INHERIT_SCALE:
1476 value = actor.IsScaleInherited();
1480 case Dali::Actor::Property::COLOR_MODE:
1482 value = actor.GetColorMode();
1486 case Dali::Actor::Property::DRAW_MODE:
1488 value = actor.GetDrawMode();
1492 case Dali::Actor::Property::SIZE_MODE_FACTOR:
1494 value = actor.GetSizeModeFactor();
1498 case Dali::Actor::Property::WIDTH_RESIZE_POLICY:
1500 value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( actor.GetResizePolicy( Dimension::WIDTH ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT );
1504 case Dali::Actor::Property::HEIGHT_RESIZE_POLICY:
1506 value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( actor.GetResizePolicy( Dimension::HEIGHT ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT );
1510 case Dali::Actor::Property::SIZE_SCALE_POLICY:
1512 value = actor.GetSizeScalePolicy();
1516 case Dali::Actor::Property::WIDTH_FOR_HEIGHT:
1518 value = ( actor.GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( actor.GetDimensionDependency( Dimension::WIDTH ) == Dimension::HEIGHT );
1522 case Dali::Actor::Property::HEIGHT_FOR_WIDTH:
1524 value = ( actor.GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( actor.GetDimensionDependency( Dimension::HEIGHT ) == Dimension::WIDTH );
1528 case Dali::Actor::Property::PADDING:
1530 Vector2 widthPadding = actor.GetPadding( Dimension::WIDTH );
1531 Vector2 heightPadding = actor.GetPadding( Dimension::HEIGHT );
1532 value = Vector4( widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y );
1536 case Dali::Actor::Property::MINIMUM_SIZE:
1538 value = Vector2( actor.GetMinimumSize( Dimension::WIDTH ), actor.GetMinimumSize( Dimension::HEIGHT ) );
1542 case Dali::Actor::Property::MAXIMUM_SIZE:
1544 value = Vector2( actor.GetMaximumSize( Dimension::WIDTH ), actor.GetMaximumSize( Dimension::HEIGHT ) );
1548 case Dali::Actor::Property::CLIPPING_MODE:
1550 value = actor.mClippingMode;
1554 case Dali::DevelActor::Property::SIBLING_ORDER:
1556 value = static_cast<int>( actor.GetSiblingOrder() );
1560 case Dali::Actor::Property::SCREEN_POSITION:
1562 value = actor.GetCurrentScreenPosition();
1566 case Dali::Actor::Property::POSITION_USES_ANCHOR_POINT:
1568 value = actor.mPositionUsesAnchorPoint;
1572 case Dali::Actor::Property::LAYOUT_DIRECTION:
1574 value = actor.mLayoutDirection;
1578 case Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION:
1580 value = actor.IsLayoutDirectionInherited();
1584 case Dali::Actor::Property::ID:
1586 value = static_cast<int>( actor.GetId() );
1590 case Dali::Actor::Property::HIERARCHY_DEPTH:
1592 value = actor.GetHierarchyDepth();
1596 case Dali::Actor::Property::IS_ROOT:
1598 value = actor.IsRoot();
1602 case Dali::Actor::Property::IS_LAYER:
1604 value = actor.IsLayer();
1608 case Dali::Actor::Property::CONNECTED_TO_SCENE:
1610 value = actor.OnScene();
1614 case Dali::Actor::Property::KEYBOARD_FOCUSABLE:
1616 value = actor.IsKeyboardFocusable();
1620 case Dali::DevelActor::Property::CAPTURE_ALL_TOUCH_AFTER_START:
1622 value = actor.mCaptureAllTouchAfterStart;
1626 case Dali::DevelActor::Property::TOUCH_AREA:
1628 value = actor.GetTouchArea();
1632 case Dali::DevelActor::Property::BLEND_EQUATION:
1634 value = actor.GetBlendEquation();
1640 // Must be a scene-graph only property
1649 bool Actor::PropertyHandler::GetCurrentPropertyValue(const Internal::Actor& actor, Property::Index index, Property::Value& value)
1651 bool valueSet = true;
1655 case Dali::Actor::Property::SIZE:
1657 value = actor.GetCurrentSize();
1661 case Dali::Actor::Property::SIZE_WIDTH:
1663 value = actor.GetCurrentSize().width;
1667 case Dali::Actor::Property::SIZE_HEIGHT:
1669 value = actor.GetCurrentSize().height;
1673 case Dali::Actor::Property::SIZE_DEPTH:
1675 value = actor.GetCurrentSize().depth;
1679 case Dali::Actor::Property::POSITION:
1681 value = actor.GetCurrentPosition();
1685 case Dali::Actor::Property::POSITION_X:
1687 value = actor.GetCurrentPosition().x;
1691 case Dali::Actor::Property::POSITION_Y:
1693 value = actor.GetCurrentPosition().y;
1697 case Dali::Actor::Property::POSITION_Z:
1699 value = actor.GetCurrentPosition().z;
1703 case Dali::Actor::Property::WORLD_POSITION:
1705 value = actor.GetCurrentWorldPosition();
1709 case Dali::Actor::Property::WORLD_POSITION_X:
1711 value = actor.GetCurrentWorldPosition().x;
1715 case Dali::Actor::Property::WORLD_POSITION_Y:
1717 value = actor.GetCurrentWorldPosition().y;
1721 case Dali::Actor::Property::WORLD_POSITION_Z:
1723 value = actor.GetCurrentWorldPosition().z;
1727 case Dali::Actor::Property::ORIENTATION:
1729 value = actor.GetCurrentOrientation();
1733 case Dali::Actor::Property::WORLD_ORIENTATION:
1735 value = actor.GetCurrentWorldOrientation();
1739 case Dali::Actor::Property::SCALE:
1741 value = actor.GetCurrentScale();
1745 case Dali::Actor::Property::SCALE_X:
1747 value = actor.GetCurrentScale().x;
1751 case Dali::Actor::Property::SCALE_Y:
1753 value = actor.GetCurrentScale().y;
1757 case Dali::Actor::Property::SCALE_Z:
1759 value = actor.GetCurrentScale().z;
1763 case Dali::Actor::Property::WORLD_SCALE:
1765 value = actor.GetCurrentWorldScale();
1769 case Dali::Actor::Property::COLOR:
1771 value = actor.GetCurrentColor();
1775 case Dali::Actor::Property::COLOR_RED:
1777 value = actor.GetCurrentColor().r;
1781 case Dali::Actor::Property::COLOR_GREEN:
1783 value = actor.GetCurrentColor().g;
1787 case Dali::Actor::Property::COLOR_BLUE:
1789 value = actor.GetCurrentColor().b;
1793 case Dali::Actor::Property::COLOR_ALPHA:
1794 case Dali::Actor::Property::OPACITY:
1796 value = actor.GetCurrentColor().a;
1800 case Dali::Actor::Property::WORLD_COLOR:
1802 value = actor.GetCurrentWorldColor();
1806 case Dali::Actor::Property::WORLD_MATRIX:
1808 value = actor.GetCurrentWorldMatrix();
1812 case Dali::Actor::Property::VISIBLE:
1814 value = actor.IsVisible();
1818 case Dali::Actor::Property::CULLED:
1820 value = actor.GetNode().IsCulled( actor.GetEventThreadServices().GetEventBufferIndex() );
1824 case Dali::DevelActor::Property::UPDATE_SIZE_HINT:
1826 // node is being used in a separate thread, the value from the previous update is the same, set by user
1827 value = Vector2( actor.GetNode().GetUpdateSizeHint() );
1833 // Must be an event-side only property
1842 } // namespace Internal