X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fpage-turn-view%2Fpage-turn-portrait-view-impl.cpp;h=9fe3a0068b1ddf2e11396c405b7f408b0a269b31;hp=6e2ffc7974181b0de97399e33629665584d1b998;hb=0f006fbeb3f9dc630e3893887e8c6e5ae44b8e0a;hpb=030e7c680a6eb0e8d87bfdb8ec359a0267ef7db2 diff --git a/dali-toolkit/internal/controls/page-turn-view/page-turn-portrait-view-impl.cpp b/dali-toolkit/internal/controls/page-turn-view/page-turn-portrait-view-impl.cpp index 6e2ffc7..9fe3a00 100644 --- a/dali-toolkit/internal/controls/page-turn-view/page-turn-portrait-view-impl.cpp +++ b/dali-toolkit/internal/controls/page-turn-view/page-turn-portrait-view-impl.cpp @@ -21,7 +21,11 @@ // EXTERNAL INCLUDES #include #include -#include +#include +#include + +//INTERNAL INCLUDES +#include namespace Dali { @@ -79,11 +83,6 @@ void PageTurnPortraitView::OnPageTurnViewInitialize() mTurningPageLayer.SetParentOrigin( ParentOrigin::CENTER_LEFT ); } -ImageActor PageTurnPortraitView::NewPageFromRenderBuffer( int pageIndex ) -{ - return ImageActor::New(mRenderedPage[pageIndex % NUMBER_OF_CACHED_PAGES]); -} - Vector2 PageTurnPortraitView::SetPanPosition( const Vector2& gesturePosition ) { return gesturePosition; @@ -94,6 +93,7 @@ void PageTurnPortraitView::SetPanActor( const Vector2& panPosition ) if( mCurrentPageIndex < mTotalPageCount ) { mPanActor = mPageActors[mCurrentPageIndex%NUMBER_OF_CACHED_PAGES]; + mTurningPageIndex = mCurrentPageIndex; } else { @@ -120,7 +120,7 @@ void PageTurnPortraitView::OnPossibleOutwardsFlick( const Vector2& panPosition, if( mCurrentPageIndex > 0 && gestureSpeed > GESTURE_SPEED_THRESHOLD && offset.x > fabs( offset.y )) { ImageActor actor = mPageActors[ (mCurrentPageIndex-1) % NUMBER_OF_CACHED_PAGES ]; - if(actor.GetParent() != mRootOnScreen) + if(actor.GetParent() != Self()) { return; } @@ -128,7 +128,8 @@ void PageTurnPortraitView::OnPossibleOutwardsFlick( const Vector2& panPosition, // Guard against destruction during signal emission //Emit signal, to notify that page[mCurrentPageIndex-1] is turning backwards Toolkit::PageTurnView handle( GetOwner() ); - mPageTurnStartedSignal.Emit( handle, static_cast(mCurrentPageIndex-1), false ); + mTurningPageIndex = mCurrentPageIndex-1; + mPageTurnStartedSignal.Emit( handle, static_cast(mTurningPageIndex), false ); //update pages mCurrentPageIndex--; @@ -136,34 +137,53 @@ void PageTurnPortraitView::OnPossibleOutwardsFlick( const Vector2& panPosition, AddPage( mCurrentPageIndex-NUMBER_OF_CACHED_PAGES_EACH_SIDE ); OrganizePageDepth(); + mPageActors[mTurningPageIndex%NUMBER_OF_CACHED_PAGES].SetVisible(true); + // Add the page to tuning page layer and set up PageTurnEffect mShadowView.Add( actor ); actor.SetShaderEffect( mTurnEffect[mIndex] ); - GetImpl( mTurnEffect[mIndex] ).ApplyInternalConstraint(); + PageTurnApplyInternalConstraint(mTurnEffect[mIndex]); mIsAnimating[mIndex] = true; - mTurnEffect[mIndex].SetIsTurningBack( true ); + mTurnEffect[mIndex].SetUniform("uIsTurningBack", 1.f ); Vector2 originalCenter( mPageSize.width*1.5f, 0.5f*mPageSize.height ); - mTurnEffect[mIndex].SetOriginalCenter( originalCenter ); - mTurnEffect[mIndex].SetCurrentCenter( Vector2( mPageSize.width*0.5f, mPageSize.height*0.5f )); + mTurnEffect[mIndex].SetUniform("uOriginalCenter", originalCenter ); + mTurnEffect[mIndex].SetUniform("uCurrentCenter", Vector2( mPageSize.width*0.5f, mPageSize.height*0.5f ) ); // Start an animation to turn the previous page back Animation animation = Animation::New( PAGE_TURN_OVER_ANIMATION_DURATION ); - mAnimationActorPair[animation] = actor; + mAnimationPageIdPair[animation] = mCurrentPageIndex; mAnimationIndexPair[animation] = mIndex; - animation.AnimateTo( Property( mTurnEffect[mIndex], mTurnEffect[mIndex].PageTurnEffect::GetCurrentCenterPropertyName() ), + animation.AnimateTo( Property( mTurnEffect[mIndex], "uCurrentCenter" ), originalCenter, AlphaFunction::EASE_OUT, TimePeriod(PAGE_TURN_OVER_ANIMATION_DURATION*0.75f) ); animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), AngleAxis( Degree( 180.0f ), Vector3::YAXIS ) ,AlphaFunction::EASE_OUT ); animation.Play(); - ImageActor::DownCast(actor).SetCullFace( CullBack ); - animation.FinishedSignal().Connect( this, &PageTurnPortraitView::OnTurnedOver ); + + ImageActor imageActor = ImageActor::DownCast(actor); + if( imageActor ) + { + SetCullFace( imageActor, CullBack ); + } + animation.FinishedSignal().Connect( this, &PageTurnPortraitView::TurnedOverBackwards ); } } -void PageTurnPortraitView::OnTurnedOver( Animation& animation ) +void PageTurnPortraitView::OnTurnedOver( ImageActor actor, bool isLeftSide ) { - ImageActor::DownCast(mAnimationActorPair[animation]).SetCullFace( CullNone ); + if( isLeftSide ) + { + actor.SetVisible( false ); + } +} + +void PageTurnPortraitView::TurnedOverBackwards( Animation& animation ) +{ + ImageActor imageActor = mPageActors[mAnimationPageIdPair[animation] % NUMBER_OF_CACHED_PAGES]; + if( imageActor ) + { + SetCullFace( imageActor, CullNone ); + } TurnedOver( animation ); }