X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Factors%2Factor-impl.cpp;h=ee6089236446be1ce359bf71f5953cd1ad07f386;hb=3cfd6a240ea9eaa504d5237111170fa79768696d;hp=8ba7790702d1212222609ce0ee8a44cf59c1a1ce;hpb=0e8f8f6788b64185213a29eeb3e2438e8531d5f7;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/actors/actor-impl.cpp b/dali/internal/event/actors/actor-impl.cpp index 8ba7790..ee60892 100644 --- a/dali/internal/event/actors/actor-impl.cpp +++ b/dali/internal/event/actors/actor-impl.cpp @@ -890,6 +890,8 @@ void Actor::SetOrientation( const Radian& angle, const Vector3& axis ) void Actor::SetOrientation( const Quaternion& orientation ) { + mTargetOrientation = orientation; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -899,15 +901,13 @@ void Actor::SetOrientation( const Quaternion& orientation ) void Actor::RotateBy( const Radian& angle, const Vector3& axis ) { - if( NULL != mNode ) - { - // mNode is being used in a separate thread; queue a message to set the value & base value - SceneGraph::NodeTransformPropertyMessage::Send( GetEventThreadServices(), mNode, &mNode->mOrientation, &SceneGraph::TransformManagerPropertyHandler::BakeRelative, Quaternion(angle, axis) ); - } + RotateBy( Quaternion(angle, axis) ); } void Actor::RotateBy( const Quaternion& relativeRotation ) { + mTargetOrientation *= Quaternion( relativeRotation ); + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -949,6 +949,8 @@ void Actor::SetScale( float x, float y, float z ) void Actor::SetScale( const Vector3& scale ) { + mTargetScale = scale; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -958,6 +960,8 @@ void Actor::SetScale( const Vector3& scale ) void Actor::SetScaleX( float x ) { + mTargetScale.x = x; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -967,6 +971,8 @@ void Actor::SetScaleX( float x ) void Actor::SetScaleY( float y ) { + mTargetScale.y = y; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -976,6 +982,8 @@ void Actor::SetScaleY( float y ) void Actor::SetScaleZ( float z ) { + mTargetScale.z = z; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -985,6 +993,8 @@ void Actor::SetScaleZ( float z ) void Actor::ScaleBy(const Vector3& relativeScale) { + mTargetScale *= relativeScale; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -1071,6 +1081,8 @@ bool Actor::IsVisible() const void Actor::SetOpacity( float opacity ) { + mTargetColor.a = opacity; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -1111,6 +1123,8 @@ const Vector4& Actor::GetCurrentWorldColor() const void Actor::SetColor( const Vector4& color ) { + mTargetColor = color; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -1120,6 +1134,8 @@ void Actor::SetColor( const Vector4& color ) void Actor::SetColorRed( float red ) { + mTargetColor.r = red; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -1129,6 +1145,8 @@ void Actor::SetColorRed( float red ) void Actor::SetColorGreen( float green ) { + mTargetColor.g = green; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -1138,6 +1156,8 @@ void Actor::SetColorGreen( float green ) void Actor::SetColorBlue( float blue ) { + mTargetColor.b = blue; + if( NULL != mNode ) { // mNode is being used in a separate thread; queue a message to set the value & base value @@ -2112,7 +2132,11 @@ Actor::Actor( DerivedType derivedType ) mAnchorPoint( NULL ), mRelayoutData( NULL ), mGestureData( NULL ), - mTargetSize( 0.0f, 0.0f, 0.0f ), + mTargetOrientation( Quaternion::IDENTITY ), + mTargetColor( Color::WHITE ), + mTargetSize( Vector3::ZERO ), + mTargetPosition( Vector3::ZERO ), + mTargetScale( Vector3::ONE ), mName(), mId( ++mActorCounter ), // actor ID is initialised to start from 1, and 0 is reserved mDepth( 0u ), @@ -3014,407 +3038,158 @@ Property::Value Actor::GetDefaultProperty( Property::Index index ) const { Property::Value value; - if( index >= DEFAULT_PROPERTY_COUNT ) + if( ! GetCachedPropertyValue( index, value ) ) { - return value; + // If property value is not stored in the event-side, then it must be a scene-graph only property + GetCurrentPropertyValue( index, value ); } - switch( index ) + return value; +} + +Property::Value Actor::GetDefaultPropertyCurrentValue( Property::Index index ) const +{ + Property::Value value; + + if( ! GetCurrentPropertyValue( index, value ) ) { - case Dali::Actor::Property::PARENT_ORIGIN: - { - value = GetCurrentParentOrigin(); - break; - } + // If unable to retrieve scene-graph property value, then it must be an event-side only property + GetCachedPropertyValue( index, value ); + } - case Dali::Actor::Property::PARENT_ORIGIN_X: - { - value = GetCurrentParentOrigin().x; - break; - } + return value; +} - case Dali::Actor::Property::PARENT_ORIGIN_Y: - { - value = GetCurrentParentOrigin().y; - break; - } +const SceneGraph::PropertyOwner* Actor::GetPropertyOwner() const +{ + return mNode; +} - case Dali::Actor::Property::PARENT_ORIGIN_Z: - { - value = GetCurrentParentOrigin().z; - break; - } +const SceneGraph::PropertyOwner* Actor::GetSceneObject() const +{ + // This method should only return an object connected to the scene-graph + return OnStage() ? mNode : NULL; +} - case Dali::Actor::Property::ANCHOR_POINT: - { - value = GetCurrentAnchorPoint(); - break; - } +const PropertyBase* Actor::GetSceneObjectAnimatableProperty( Property::Index index ) const +{ + DALI_ASSERT_ALWAYS( IsPropertyAnimatable( index ) && "Property is not animatable" ); - case Dali::Actor::Property::ANCHOR_POINT_X: - { - value = GetCurrentAnchorPoint().x; - break; - } + const PropertyBase* property( NULL ); - case Dali::Actor::Property::ANCHOR_POINT_Y: - { - value = GetCurrentAnchorPoint().y; - break; - } + // This method should only return a property of an object connected to the scene-graph + if( !OnStage() ) + { + return property; + } - case Dali::Actor::Property::ANCHOR_POINT_Z: - { - value = GetCurrentAnchorPoint().z; - break; - } + if ( index >= ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX && index <= ANIMATABLE_PROPERTY_REGISTRATION_MAX_INDEX ) + { + AnimatablePropertyMetadata* animatable = RegisterAnimatableProperty( index ); + DALI_ASSERT_ALWAYS( animatable && "Property index is invalid" ); - case Dali::Actor::Property::SIZE: + property = animatable->GetSceneGraphProperty(); + } + else if ( ( index >= CHILD_PROPERTY_REGISTRATION_START_INDEX ) && // Child properties are also stored as custom properties + ( index <= PROPERTY_CUSTOM_MAX_INDEX ) ) + { + CustomPropertyMetadata* custom = FindCustomProperty( index ); + DALI_ASSERT_ALWAYS( custom && "Property index is invalid" ); + + property = custom->GetSceneGraphProperty(); + } + else if( NULL != mNode ) + { + switch( index ) { - Vector3 size = GetTargetSize(); + case Dali::Actor::Property::SIZE: + property = &mNode->mSize; + break; - // Should return preferred size if size is fixed as set by SetSize - if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED ) - { - size.width = GetPreferredSize().width; - } - if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED ) - { - size.height = GetPreferredSize().height; - } + case Dali::Actor::Property::SIZE_WIDTH: + property = &mNode->mSize; + break; - value = size; + case Dali::Actor::Property::SIZE_HEIGHT: + property = &mNode->mSize; + break; - break; - } + case Dali::Actor::Property::SIZE_DEPTH: + property = &mNode->mSize; + break; - case Dali::Actor::Property::SIZE_WIDTH: - { - if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED ) - { - // Should return preferred size if size is fixed as set by SetSize - value = GetPreferredSize().width; - } - else - { - value = GetTargetSize().width; - } - break; - } + case Dali::Actor::Property::POSITION: + property = &mNode->mPosition; + break; - case Dali::Actor::Property::SIZE_HEIGHT: - { - if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED ) - { - // Should return preferred size if size is fixed as set by SetSize - value = GetPreferredSize().height; - } - else - { - value = GetTargetSize().height; - } - break; - } + case Dali::Actor::Property::POSITION_X: + property = &mNode->mPosition; + break; - case Dali::Actor::Property::SIZE_DEPTH: - { - value = GetTargetSize().depth; - break; - } + case Dali::Actor::Property::POSITION_Y: + property = &mNode->mPosition; + break; - case Dali::Actor::Property::POSITION: - { - value = GetTargetPosition(); - break; - } + case Dali::Actor::Property::POSITION_Z: + property = &mNode->mPosition; + break; - case Dali::Actor::Property::POSITION_X: - { - value = GetTargetPosition().x; - break; - } + case Dali::Actor::Property::ORIENTATION: + property = &mNode->mOrientation; + break; - case Dali::Actor::Property::POSITION_Y: - { - value = GetTargetPosition().y; - break; - } + case Dali::Actor::Property::SCALE: + property = &mNode->mScale; + break; - case Dali::Actor::Property::POSITION_Z: - { - value = GetTargetPosition().z; - break; - } + case Dali::Actor::Property::SCALE_X: + property = &mNode->mScale; + break; - case Dali::Actor::Property::WORLD_POSITION: - { - value = GetCurrentWorldPosition(); - break; - } + case Dali::Actor::Property::SCALE_Y: + property = &mNode->mScale; + break; - case Dali::Actor::Property::WORLD_POSITION_X: - { - value = GetCurrentWorldPosition().x; - break; - } + case Dali::Actor::Property::SCALE_Z: + property = &mNode->mScale; + break; - case Dali::Actor::Property::WORLD_POSITION_Y: - { - value = GetCurrentWorldPosition().y; - break; - } + case Dali::Actor::Property::VISIBLE: + property = &mNode->mVisible; + break; - case Dali::Actor::Property::WORLD_POSITION_Z: - { - value = GetCurrentWorldPosition().z; - break; - } + case Dali::Actor::Property::COLOR: + property = &mNode->mColor; + break; - case Dali::Actor::Property::ORIENTATION: - { - value = GetCurrentOrientation(); - break; - } + case Dali::Actor::Property::COLOR_RED: + property = &mNode->mColor; + break; - case Dali::Actor::Property::WORLD_ORIENTATION: - { - value = GetCurrentWorldOrientation(); - break; - } + case Dali::Actor::Property::COLOR_GREEN: + property = &mNode->mColor; + break; - case Dali::Actor::Property::SCALE: - { - value = GetCurrentScale(); - break; - } + case Dali::Actor::Property::COLOR_BLUE: + property = &mNode->mColor; + break; - case Dali::Actor::Property::SCALE_X: - { - value = GetCurrentScale().x; - break; - } - - case Dali::Actor::Property::SCALE_Y: - { - value = GetCurrentScale().y; - break; - } - - case Dali::Actor::Property::SCALE_Z: - { - value = GetCurrentScale().z; - break; - } - - case Dali::Actor::Property::WORLD_SCALE: - { - value = GetCurrentWorldScale(); - break; - } - - case Dali::Actor::Property::VISIBLE: - { - value = IsVisible(); - break; - } - - case Dali::Actor::Property::COLOR: - { - value = GetCurrentColor(); - break; - } - - case Dali::Actor::Property::COLOR_RED: - { - value = GetCurrentColor().r; - break; - } - - case Dali::Actor::Property::COLOR_GREEN: - { - value = GetCurrentColor().g; - break; - } - - case Dali::Actor::Property::COLOR_BLUE: - { - value = GetCurrentColor().b; - break; - } - - case Dali::Actor::Property::COLOR_ALPHA: - case Dali::DevelActor::Property::OPACITY: - { - value = GetCurrentColor().a; - break; - } - - case Dali::Actor::Property::WORLD_COLOR: - { - value = GetCurrentWorldColor(); - break; - } - - case Dali::Actor::Property::WORLD_MATRIX: - { - value = GetCurrentWorldMatrix(); - break; - } - - case Dali::Actor::Property::NAME: - { - value = GetName(); - break; - } - - case Dali::Actor::Property::SENSITIVE: - { - value = IsSensitive(); - break; - } - - case Dali::Actor::Property::LEAVE_REQUIRED: - { - value = GetLeaveRequired(); - break; - } - - case Dali::Actor::Property::INHERIT_POSITION: - { - value = IsPositionInherited(); - break; - } - - case Dali::Actor::Property::INHERIT_ORIENTATION: - { - value = IsOrientationInherited(); - break; - } - - case Dali::Actor::Property::INHERIT_SCALE: - { - value = IsScaleInherited(); - break; - } - - case Dali::Actor::Property::COLOR_MODE: - { - value = Scripting::GetLinearEnumerationName< ColorMode >( GetColorMode(), COLOR_MODE_TABLE, COLOR_MODE_TABLE_COUNT ); - break; - } - - case Dali::Actor::Property::POSITION_INHERITANCE: - { - value = Scripting::GetLinearEnumerationName< PositionInheritanceMode >( GetPositionInheritanceMode(), POSITION_INHERITANCE_MODE_TABLE, POSITION_INHERITANCE_MODE_TABLE_COUNT ); - break; - } - - case Dali::Actor::Property::DRAW_MODE: - { - value = Scripting::GetEnumerationName< DrawMode::Type >( GetDrawMode(), DRAW_MODE_TABLE, DRAW_MODE_TABLE_COUNT ); - break; - } - - case Dali::Actor::Property::SIZE_MODE_FACTOR: - { - value = GetSizeModeFactor(); - break; - } - - case Dali::Actor::Property::WIDTH_RESIZE_POLICY: - { - value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( GetResizePolicy( Dimension::WIDTH ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT ); - break; - } - - case Dali::Actor::Property::HEIGHT_RESIZE_POLICY: - { - value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( GetResizePolicy( Dimension::HEIGHT ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT ); - break; - } - - case Dali::Actor::Property::SIZE_SCALE_POLICY: - { - value = Scripting::GetLinearEnumerationName< SizeScalePolicy::Type >( GetSizeScalePolicy(), SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT ); - break; - } - - case Dali::Actor::Property::WIDTH_FOR_HEIGHT: - { - value = ( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( GetDimensionDependency( Dimension::WIDTH ) == Dimension::HEIGHT ); - break; - } - - case Dali::Actor::Property::HEIGHT_FOR_WIDTH: - { - value = ( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( GetDimensionDependency( Dimension::HEIGHT ) == Dimension::WIDTH ); - break; - } - - case Dali::Actor::Property::PADDING: - { - Vector2 widthPadding = GetPadding( Dimension::WIDTH ); - Vector2 heightPadding = GetPadding( Dimension::HEIGHT ); - value = Vector4( widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y ); - break; - } - - case Dali::Actor::Property::MINIMUM_SIZE: - { - value = Vector2( GetMinimumSize( Dimension::WIDTH ), GetMinimumSize( Dimension::HEIGHT ) ); - break; - } - - case Dali::Actor::Property::MAXIMUM_SIZE: - { - value = Vector2( GetMaximumSize( Dimension::WIDTH ), GetMaximumSize( Dimension::HEIGHT ) ); - break; - } - - case Dali::DevelActor::Property::SIBLING_ORDER: - { - value = static_cast(mSiblingOrder); - break; - } - - case Dali::Actor::Property::CLIPPING_MODE: - { - value = mClippingMode; - break; - } - - case Dali::DevelActor::Property::SCREEN_POSITION: - { - value = GetCurrentScreenPosition(); - break; - } + case Dali::Actor::Property::COLOR_ALPHA: + case Dali::DevelActor::Property::OPACITY: + property = &mNode->mColor; + break; - case Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT: - { - value = mPositionUsesAnchorPoint; - break; + default: + break; } } - return value; -} - -const SceneGraph::PropertyOwner* Actor::GetPropertyOwner() const -{ - return mNode; -} - -const SceneGraph::PropertyOwner* Actor::GetSceneObject() const -{ - // This method should only return an object connected to the scene-graph - return OnStage() ? mNode : NULL; + return property; } -const PropertyBase* Actor::GetSceneObjectAnimatableProperty( Property::Index index ) const +const PropertyInputImpl* Actor::GetSceneObjectInputProperty( Property::Index index ) const { - DALI_ASSERT_ALWAYS( IsPropertyAnimatable( index ) && "Property is not animatable" ); - - const PropertyBase* property( NULL ); + const PropertyInputImpl* property( NULL ); // This method should only return a property of an object connected to the scene-graph if( !OnStage() ) @@ -3434,152 +3209,38 @@ const PropertyBase* Actor::GetSceneObjectAnimatableProperty( Property::Index ind { CustomPropertyMetadata* custom = FindCustomProperty( index ); DALI_ASSERT_ALWAYS( custom && "Property index is invalid" ); - property = custom->GetSceneGraphProperty(); } else if( NULL != mNode ) { switch( index ) { - case Dali::Actor::Property::SIZE: - property = &mNode->mSize; + case Dali::Actor::Property::PARENT_ORIGIN: + property = &mNode->mParentOrigin; break; - case Dali::Actor::Property::SIZE_WIDTH: - property = &mNode->mSize; + case Dali::Actor::Property::PARENT_ORIGIN_X: + property = &mNode->mParentOrigin; break; - case Dali::Actor::Property::SIZE_HEIGHT: - property = &mNode->mSize; + case Dali::Actor::Property::PARENT_ORIGIN_Y: + property = &mNode->mParentOrigin; break; - case Dali::Actor::Property::SIZE_DEPTH: - property = &mNode->mSize; + case Dali::Actor::Property::PARENT_ORIGIN_Z: + property = &mNode->mParentOrigin; break; - case Dali::Actor::Property::POSITION: - property = &mNode->mPosition; + case Dali::Actor::Property::ANCHOR_POINT: + property = &mNode->mAnchorPoint; break; - case Dali::Actor::Property::POSITION_X: - property = &mNode->mPosition; + case Dali::Actor::Property::ANCHOR_POINT_X: + property = &mNode->mAnchorPoint; break; - case Dali::Actor::Property::POSITION_Y: - property = &mNode->mPosition; - break; - - case Dali::Actor::Property::POSITION_Z: - property = &mNode->mPosition; - break; - - case Dali::Actor::Property::ORIENTATION: - property = &mNode->mOrientation; - break; - - case Dali::Actor::Property::SCALE: - property = &mNode->mScale; - break; - - case Dali::Actor::Property::SCALE_X: - property = &mNode->mScale; - break; - - case Dali::Actor::Property::SCALE_Y: - property = &mNode->mScale; - break; - - case Dali::Actor::Property::SCALE_Z: - property = &mNode->mScale; - break; - - case Dali::Actor::Property::VISIBLE: - property = &mNode->mVisible; - break; - - case Dali::Actor::Property::COLOR: - property = &mNode->mColor; - break; - - case Dali::Actor::Property::COLOR_RED: - property = &mNode->mColor; - break; - - case Dali::Actor::Property::COLOR_GREEN: - property = &mNode->mColor; - break; - - case Dali::Actor::Property::COLOR_BLUE: - property = &mNode->mColor; - break; - - case Dali::Actor::Property::COLOR_ALPHA: - case Dali::DevelActor::Property::OPACITY: - property = &mNode->mColor; - break; - - default: - break; - } - } - - return property; -} - -const PropertyInputImpl* Actor::GetSceneObjectInputProperty( Property::Index index ) const -{ - const PropertyInputImpl* property( NULL ); - - // This method should only return a property of an object connected to the scene-graph - if( !OnStage() ) - { - return property; - } - - if ( index >= ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX && index <= ANIMATABLE_PROPERTY_REGISTRATION_MAX_INDEX ) - { - AnimatablePropertyMetadata* animatable = RegisterAnimatableProperty( index ); - DALI_ASSERT_ALWAYS( animatable && "Property index is invalid" ); - - property = animatable->GetSceneGraphProperty(); - } - else if ( ( index >= CHILD_PROPERTY_REGISTRATION_START_INDEX ) && // Child properties are also stored as custom properties - ( index <= PROPERTY_CUSTOM_MAX_INDEX ) ) - { - CustomPropertyMetadata* custom = FindCustomProperty( index ); - DALI_ASSERT_ALWAYS( custom && "Property index is invalid" ); - property = custom->GetSceneGraphProperty(); - } - else if( NULL != mNode ) - { - switch( index ) - { - case Dali::Actor::Property::PARENT_ORIGIN: - property = &mNode->mParentOrigin; - break; - - case Dali::Actor::Property::PARENT_ORIGIN_X: - property = &mNode->mParentOrigin; - break; - - case Dali::Actor::Property::PARENT_ORIGIN_Y: - property = &mNode->mParentOrigin; - break; - - case Dali::Actor::Property::PARENT_ORIGIN_Z: - property = &mNode->mParentOrigin; - break; - - case Dali::Actor::Property::ANCHOR_POINT: - property = &mNode->mAnchorPoint; - break; - - case Dali::Actor::Property::ANCHOR_POINT_X: - property = &mNode->mAnchorPoint; - break; - - case Dali::Actor::Property::ANCHOR_POINT_Y: - property = &mNode->mAnchorPoint; + case Dali::Actor::Property::ANCHOR_POINT_Y: + property = &mNode->mAnchorPoint; break; case Dali::Actor::Property::ANCHOR_POINT_Z: @@ -3844,6 +3505,523 @@ bool Actor::DoAction( BaseObject* object, const std::string& actionName, const P return done; } +bool Actor::GetCachedPropertyValue( Property::Index index, Property::Value& value ) const +{ + bool valueSet = true; + + switch( index ) + { + case Dali::Actor::Property::PARENT_ORIGIN: + { + value = GetCurrentParentOrigin(); + break; + } + + case Dali::Actor::Property::PARENT_ORIGIN_X: + { + value = GetCurrentParentOrigin().x; + break; + } + + case Dali::Actor::Property::PARENT_ORIGIN_Y: + { + value = GetCurrentParentOrigin().y; + break; + } + + case Dali::Actor::Property::PARENT_ORIGIN_Z: + { + value = GetCurrentParentOrigin().z; + break; + } + + case Dali::Actor::Property::ANCHOR_POINT: + { + value = GetCurrentAnchorPoint(); + break; + } + + case Dali::Actor::Property::ANCHOR_POINT_X: + { + value = GetCurrentAnchorPoint().x; + break; + } + + case Dali::Actor::Property::ANCHOR_POINT_Y: + { + value = GetCurrentAnchorPoint().y; + break; + } + + case Dali::Actor::Property::ANCHOR_POINT_Z: + { + value = GetCurrentAnchorPoint().z; + break; + } + + case Dali::Actor::Property::SIZE: + { + Vector3 size = GetTargetSize(); + + // Should return preferred size if size is fixed as set by SetSize + if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED ) + { + size.width = GetPreferredSize().width; + } + if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED ) + { + size.height = GetPreferredSize().height; + } + + value = size; + + break; + } + + case Dali::Actor::Property::SIZE_WIDTH: + { + if( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::FIXED ) + { + // Should return preferred size if size is fixed as set by SetSize + value = GetPreferredSize().width; + } + else + { + value = GetTargetSize().width; + } + break; + } + + case Dali::Actor::Property::SIZE_HEIGHT: + { + if( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::FIXED ) + { + // Should return preferred size if size is fixed as set by SetSize + value = GetPreferredSize().height; + } + else + { + value = GetTargetSize().height; + } + break; + } + + case Dali::Actor::Property::SIZE_DEPTH: + { + value = GetTargetSize().depth; + break; + } + + case Dali::Actor::Property::POSITION: + { + value = GetTargetPosition(); + break; + } + + case Dali::Actor::Property::POSITION_X: + { + value = GetTargetPosition().x; + break; + } + + case Dali::Actor::Property::POSITION_Y: + { + value = GetTargetPosition().y; + break; + } + + case Dali::Actor::Property::POSITION_Z: + { + value = GetTargetPosition().z; + break; + } + + case Dali::Actor::Property::ORIENTATION: + { + value = mTargetOrientation; + break; + } + + case Dali::Actor::Property::SCALE: + { + value = mTargetScale; + break; + } + + case Dali::Actor::Property::SCALE_X: + { + value = mTargetScale.x; + break; + } + + case Dali::Actor::Property::SCALE_Y: + { + value = mTargetScale.y; + break; + } + + case Dali::Actor::Property::SCALE_Z: + { + value = mTargetScale.z; + break; + } + + case Dali::Actor::Property::VISIBLE: + { + value = mVisible; + break; + } + + case Dali::Actor::Property::COLOR: + { + value = mTargetColor; + break; + } + + case Dali::Actor::Property::COLOR_RED: + { + value = mTargetColor.r; + break; + } + + case Dali::Actor::Property::COLOR_GREEN: + { + value = mTargetColor.g; + break; + } + + case Dali::Actor::Property::COLOR_BLUE: + { + value = mTargetColor.b; + break; + } + + case Dali::Actor::Property::COLOR_ALPHA: + case Dali::DevelActor::Property::OPACITY: + { + value = mTargetColor.a; + break; + } + + case Dali::Actor::Property::NAME: + { + value = GetName(); + break; + } + + case Dali::Actor::Property::SENSITIVE: + { + value = IsSensitive(); + break; + } + + case Dali::Actor::Property::LEAVE_REQUIRED: + { + value = GetLeaveRequired(); + break; + } + + case Dali::Actor::Property::INHERIT_POSITION: + { + value = IsPositionInherited(); + break; + } + + case Dali::Actor::Property::INHERIT_ORIENTATION: + { + value = IsOrientationInherited(); + break; + } + + case Dali::Actor::Property::INHERIT_SCALE: + { + value = IsScaleInherited(); + break; + } + + case Dali::Actor::Property::COLOR_MODE: + { + value = Scripting::GetLinearEnumerationName< ColorMode >( GetColorMode(), COLOR_MODE_TABLE, COLOR_MODE_TABLE_COUNT ); + break; + } + + case Dali::Actor::Property::POSITION_INHERITANCE: + { + value = Scripting::GetLinearEnumerationName< PositionInheritanceMode >( GetPositionInheritanceMode(), POSITION_INHERITANCE_MODE_TABLE, POSITION_INHERITANCE_MODE_TABLE_COUNT ); + break; + } + + case Dali::Actor::Property::DRAW_MODE: + { + value = Scripting::GetEnumerationName< DrawMode::Type >( GetDrawMode(), DRAW_MODE_TABLE, DRAW_MODE_TABLE_COUNT ); + break; + } + + case Dali::Actor::Property::SIZE_MODE_FACTOR: + { + value = GetSizeModeFactor(); + break; + } + + case Dali::Actor::Property::WIDTH_RESIZE_POLICY: + { + value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( GetResizePolicy( Dimension::WIDTH ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT ); + break; + } + + case Dali::Actor::Property::HEIGHT_RESIZE_POLICY: + { + value = Scripting::GetLinearEnumerationName< ResizePolicy::Type >( GetResizePolicy( Dimension::HEIGHT ), RESIZE_POLICY_TABLE, RESIZE_POLICY_TABLE_COUNT ); + break; + } + + case Dali::Actor::Property::SIZE_SCALE_POLICY: + { + value = Scripting::GetLinearEnumerationName< SizeScalePolicy::Type >( GetSizeScalePolicy(), SIZE_SCALE_POLICY_TABLE, SIZE_SCALE_POLICY_TABLE_COUNT ); + break; + } + + case Dali::Actor::Property::WIDTH_FOR_HEIGHT: + { + value = ( GetResizePolicy( Dimension::WIDTH ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( GetDimensionDependency( Dimension::WIDTH ) == Dimension::HEIGHT ); + break; + } + + case Dali::Actor::Property::HEIGHT_FOR_WIDTH: + { + value = ( GetResizePolicy( Dimension::HEIGHT ) == ResizePolicy::DIMENSION_DEPENDENCY ) && ( GetDimensionDependency( Dimension::HEIGHT ) == Dimension::WIDTH ); + break; + } + + case Dali::Actor::Property::PADDING: + { + Vector2 widthPadding = GetPadding( Dimension::WIDTH ); + Vector2 heightPadding = GetPadding( Dimension::HEIGHT ); + value = Vector4( widthPadding.x, widthPadding.y, heightPadding.x, heightPadding.y ); + break; + } + + case Dali::Actor::Property::MINIMUM_SIZE: + { + value = Vector2( GetMinimumSize( Dimension::WIDTH ), GetMinimumSize( Dimension::HEIGHT ) ); + break; + } + + case Dali::Actor::Property::MAXIMUM_SIZE: + { + value = Vector2( GetMaximumSize( Dimension::WIDTH ), GetMaximumSize( Dimension::HEIGHT ) ); + break; + } + + case Dali::Actor::Property::CLIPPING_MODE: + { + value = mClippingMode; + break; + } + + case Dali::DevelActor::Property::SIBLING_ORDER: + { + value = static_cast(mSiblingOrder); + break; + } + + case Dali::DevelActor::Property::SCREEN_POSITION: + { + value = GetCurrentScreenPosition(); + break; + } + + case Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT: + { + value = mPositionUsesAnchorPoint; + break; + } + + default: + { + // Must be a scene-graph only property + valueSet = false; + break; + } + } + + return valueSet; +} + +bool Actor::GetCurrentPropertyValue( Property::Index index, Property::Value& value ) const +{ + bool valueSet = true; + + switch( index ) + { + case Dali::Actor::Property::SIZE: + { + value = GetCurrentSize(); + break; + } + + case Dali::Actor::Property::SIZE_WIDTH: + { + value = GetCurrentSize().width; + break; + } + + case Dali::Actor::Property::SIZE_HEIGHT: + { + value = GetCurrentSize().height; + break; + } + + case Dali::Actor::Property::SIZE_DEPTH: + { + value = GetCurrentSize().depth; + break; + } + + case Dali::Actor::Property::POSITION: + { + value = GetCurrentPosition(); + break; + } + + case Dali::Actor::Property::POSITION_X: + { + value = GetCurrentPosition().x; + break; + } + + case Dali::Actor::Property::POSITION_Y: + { + value = GetCurrentPosition().y; + break; + } + + case Dali::Actor::Property::POSITION_Z: + { + value = GetCurrentPosition().z; + break; + } + + case Dali::Actor::Property::WORLD_POSITION: + { + value = GetCurrentWorldPosition(); + break; + } + + case Dali::Actor::Property::WORLD_POSITION_X: + { + value = GetCurrentWorldPosition().x; + break; + } + + case Dali::Actor::Property::WORLD_POSITION_Y: + { + value = GetCurrentWorldPosition().y; + break; + } + + case Dali::Actor::Property::WORLD_POSITION_Z: + { + value = GetCurrentWorldPosition().z; + break; + } + + case Dali::Actor::Property::ORIENTATION: + { + value = GetCurrentOrientation(); + break; + } + + case Dali::Actor::Property::WORLD_ORIENTATION: + { + value = GetCurrentWorldOrientation(); + break; + } + + case Dali::Actor::Property::SCALE: + { + value = GetCurrentScale(); + break; + } + + case Dali::Actor::Property::SCALE_X: + { + value = GetCurrentScale().x; + break; + } + + case Dali::Actor::Property::SCALE_Y: + { + value = GetCurrentScale().y; + break; + } + + case Dali::Actor::Property::SCALE_Z: + { + value = GetCurrentScale().z; + break; + } + + case Dali::Actor::Property::WORLD_SCALE: + { + value = GetCurrentWorldScale(); + break; + } + + case Dali::Actor::Property::COLOR: + { + value = GetCurrentColor(); + break; + } + + case Dali::Actor::Property::COLOR_RED: + { + value = GetCurrentColor().r; + break; + } + + case Dali::Actor::Property::COLOR_GREEN: + { + value = GetCurrentColor().g; + break; + } + + case Dali::Actor::Property::COLOR_BLUE: + { + value = GetCurrentColor().b; + break; + } + + case Dali::Actor::Property::COLOR_ALPHA: + case Dali::DevelActor::Property::OPACITY: + { + value = GetCurrentColor().a; + break; + } + + case Dali::Actor::Property::WORLD_COLOR: + { + value = GetCurrentWorldColor(); + break; + } + + case Dali::Actor::Property::WORLD_MATRIX: + { + value = GetCurrentWorldMatrix(); + break; + } + + default: + { + // Must be an event-side only property + valueSet = false; + break; + } + } + + return valueSet; +} + void Actor::EnsureRelayoutData() { // Assign relayout data.