X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftransition%2Ftransition-impl.cpp;h=2cbd14d6df16e80bc2d5a504663f74a3af64dfb1;hp=ef193f65c8389b0a85b19a824ab6bfb7e7915726;hb=b4c3c44dfea70c23f81cb878392e1e84e23c9603;hpb=7e83d1dc2a864653968ad8a6e68c3afdf9f9918d diff --git a/dali-toolkit/internal/transition/transition-impl.cpp b/dali-toolkit/internal/transition/transition-impl.cpp index ef193f6..2cbd14d 100644 --- a/dali-toolkit/internal/transition/transition-impl.cpp +++ b/dali-toolkit/internal/transition/transition-impl.cpp @@ -71,6 +71,7 @@ Transition::Transition(Dali::Toolkit::Control source, Dali::Toolkit::Control des { SetTarget(destination); SetTimePeriod(timePeriod); + SetPairTransition(true); } Transition::~Transition() @@ -79,38 +80,30 @@ Transition::~Transition() void Transition::OnPlay() { - if(!mSourceControl[Dali::Actor::Property::CONNECTED_TO_SCENE] || - !mDestinationControl[Dali::Actor::Property::CONNECTED_TO_SCENE]) + Dali::Toolkit::Control sourceControl = mSourceControl.GetHandle(); + Dali::Toolkit::Control destinationControl = mDestinationControl.GetHandle(); + if(!sourceControl || !sourceControl[Dali::Actor::Property::CONNECTED_TO_SCENE] || + !destinationControl || !destinationControl[Dali::Actor::Property::CONNECTED_TO_SCENE]) { DALI_LOG_ERROR("The source or destination is not added on the window\n"); return; } //Make startPropertyMap and finishPropertyMap to use for property animation. - Matrix sourceWorldTransform = mSourceControl[Dali::Actor::Property::WORLD_MATRIX]; + Matrix sourceWorldTransform = sourceControl[Dali::Actor::Property::WORLD_MATRIX]; Vector3 sourcePosition, sourceScale; Quaternion sourceOrientation; sourceWorldTransform.GetTransformComponents(sourcePosition, sourceOrientation, sourceScale); - Matrix destinationWorldTransform = GetWorldTransform(mDestinationControl); - Vector3 destinationPosition, destinationScale; - Quaternion destinationOrientation; - destinationWorldTransform.GetTransformComponents(destinationPosition, destinationOrientation, destinationScale); + Vector3 destinationPosition = destinationControl[Dali::Actor::Property::POSITION]; + Vector3 destinationScale = destinationControl[Dali::Actor::Property::SCALE]; + Quaternion destinationOrientation = destinationControl[Dali::Actor::Property::ORIENTATION]; + Vector4 targetColor = destinationControl[Dali::Actor::Property::COLOR]; + Vector3 targetSize = destinationControl[Dali::Actor::Property::SIZE]; - Vector3 targetSize = mDestinationControl[Dali::Actor::Property::SIZE]; - Vector4 targetColor = GetWorldColor(mDestinationControl); Property::Map startPropertyMap; Property::Map finishPropertyMap; - // Use world transform if this transition requires animation of transform. - mDestinationControl[Dali::Actor::Property::ANCHOR_POINT] = AnchorPoint::CENTER; - mDestinationControl[Dali::Actor::Property::PARENT_ORIGIN] = ParentOrigin::CENTER; - mDestinationControl[Dali::Actor::Property::POSITION_USES_ANCHOR_POINT] = true; - mDestinationControl[Dali::Actor::Property::INHERIT_POSITION] = false; - mDestinationControl[Dali::Actor::Property::INHERIT_ORIENTATION] = false; - mDestinationControl[Dali::Actor::Property::INHERIT_SCALE] = false; - mDestinationControl[Dali::Actor::Property::COLOR_MODE] = Dali::ColorMode::USE_OWN_COLOR; - // Set animation of Transform startPropertyMap.Insert(Dali::Actor::Property::POSITION, sourcePosition); finishPropertyMap.Insert(Dali::Actor::Property::POSITION, destinationPosition); @@ -121,12 +114,12 @@ void Transition::OnPlay() startPropertyMap.Insert(Dali::Actor::Property::SCALE, sourceScale); finishPropertyMap.Insert(Dali::Actor::Property::SCALE, destinationScale); - Vector4 sourceColor = mSourceControl.GetCurrentProperty(Dali::Actor::Property::WORLD_COLOR); + Vector4 sourceColor = sourceControl.GetCurrentProperty(Dali::Actor::Property::WORLD_COLOR); startPropertyMap.Insert(Dali::Actor::Property::COLOR, sourceColor); finishPropertyMap.Insert(Dali::Actor::Property::COLOR, targetColor); // Set animation for other properties if source and destination is different. - Vector3 sourceSize = mSourceControl.GetCurrentProperty(Dali::Actor::Property::SIZE); + Vector3 sourceSize = sourceControl.GetCurrentProperty(Dali::Actor::Property::SIZE); if(sourceSize != targetSize) { startPropertyMap.Insert(Dali::Actor::Property::SIZE, sourceSize); @@ -139,11 +132,11 @@ void Transition::OnPlay() // source View becomes transparent during transition. if(IsTransitionWithChild()) { - mSourceControl[Dali::Actor::Property::VISIBLE] = false; + sourceControl[Dali::Actor::Property::VISIBLE] = false; } else { - GetImplementation(mSourceControl).SetTransparent(true); + GetImplementation(sourceControl).SetTransparent(true); } Dali::Animation animation = GetAnimation(); @@ -152,18 +145,24 @@ void Transition::OnPlay() DALI_LOG_ERROR("animation is still not initialized\n"); return; } - Dali::Toolkit::DevelControl::CreateTransitions(mDestinationControl, animation, mSourceControl, GetAlphaFunction(), GetTimePeriod()); + Dali::Toolkit::DevelControl::CreateTransitions(destinationControl, animation, sourceControl, GetAlphaFunction(), GetTimePeriod()); } void Transition::OnFinished() { + Dali::Toolkit::Control sourceControl = mSourceControl.GetHandle(); + if(!sourceControl) + { + return; + } + if(IsTransitionWithChild()) { - mSourceControl[Dali::Actor::Property::VISIBLE] = true; + sourceControl[Dali::Actor::Property::VISIBLE] = true; } else { - GetImplementation(mSourceControl).SetTransparent(false); + GetImplementation(sourceControl).SetTransparent(false); } }