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=84e98545cd79457a54618074d5d45ad6f5c66f89;hp=cd01b9ae530f1584afed575b7e08acc71ccb7bc6;hb=3355135c32ee6deee76790d2685fe5308ba96db4;hpb=d3a00dc1c24ece2488696c0b518013ad6d97969b 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 cd01b9a..84e9854 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 @@ -37,8 +37,6 @@ namespace Internal namespace { -using namespace Dali; - DALI_TYPE_REGISTRATION_BEGIN( Toolkit::PageTurnPortraitView, Toolkit::PageTurnView, NULL ) DALI_TYPE_REGISTRATION_END() @@ -53,7 +51,6 @@ const float PAGE_TURN_OVER_ANIMATION_DURATION(0.5f); PageTurnPortraitView::PageTurnPortraitView( PageFactory& pageFactory, const Vector2& pageSize ) : PageTurnView( pageFactory, pageSize ) { - } PageTurnPortraitView::~PageTurnPortraitView() @@ -77,16 +74,14 @@ Toolkit::PageTurnPortraitView PageTurnPortraitView::New( PageFactory& pageFactor void PageTurnPortraitView::OnPageTurnViewInitialize() { + mTurnEffectShader.RegisterProperty(PROPERTY_TEXTURE_WIDTH, 1.f ); + mSpineEffectShader.RegisterProperty(PROPERTY_TEXTURE_WIDTH, 1.f ); + mControlSize = mPageSize; Self().SetSize( mPageSize ); 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; @@ -96,23 +91,11 @@ void PageTurnPortraitView::SetPanActor( const Vector2& panPosition ) { if( mCurrentPageIndex < mTotalPageCount ) { - mPanActor = mPageActors[mCurrentPageIndex%NUMBER_OF_CACHED_PAGES]; + mTurningPageIndex = mCurrentPageIndex; } else { - mPanActor.Reset(); - } -} - -void PageTurnPortraitView::SetSpineEffect(ImageActor actor, bool isLeftSide) -{ - if(isLeftSide) - { - actor.RemoveShaderEffect(); - } - else - { - actor.SetShaderEffect( mSpineEffectFront ); + mTurningPageIndex = -1; } } @@ -122,8 +105,9 @@ void PageTurnPortraitView::OnPossibleOutwardsFlick( const Vector2& panPosition, // There is previous page and an outwards flick is detected 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) + int actorIndex = (mCurrentPageIndex-1) % NUMBER_OF_CACHED_PAGES; + Actor actor = mPages[ actorIndex ].actor; + if(actor.GetParent() != Self()) { return; } @@ -131,42 +115,51 @@ 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--; RemovePage( mCurrentPageIndex+NUMBER_OF_CACHED_PAGES_EACH_SIDE ); AddPage( mCurrentPageIndex-NUMBER_OF_CACHED_PAGES_EACH_SIDE ); OrganizePageDepth(); + mPageUpdated = true; + + actor.SetVisible(true); // Add the page to tuning page layer and set up PageTurnEffect mShadowView.Add( actor ); - actor.SetShaderEffect( mTurnEffect[mIndex] ); - PageTurnApplyInternalConstraint(mTurnEffect[mIndex]); - mIsAnimating[mIndex] = true; - mTurnEffect[mIndex].SetUniform("uIsTurningBack", true ); + mPages[actorIndex].UseEffect( mTurnEffectShader ); + mAnimatingCount++; Vector2 originalCenter( mPageSize.width*1.5f, 0.5f*mPageSize.height ); - mTurnEffect[mIndex].SetUniform("uOriginalCenter", originalCenter ); - mTurnEffect[mIndex].SetUniform("uCurrentCenter", Vector2( mPageSize.width*0.5f, mPageSize.height*0.5f ) ); + mPages[actorIndex].SetOriginalCenter( originalCenter ); + mPages[actorIndex].SetCurrentCenter( Vector2( mPageSize.width*0.5f, mPageSize.height*0.5f ) ); + PageTurnApplyInternalConstraint(actor, mPageSize.height); // Start an animation to turn the previous page back Animation animation = Animation::New( PAGE_TURN_OVER_ANIMATION_DURATION ); - mAnimationActorPair[animation] = actor; - mAnimationIndexPair[animation] = mIndex; + mAnimationPageIdPair[animation] = mCurrentPageIndex; - animation.AnimateTo( Property( mTurnEffect[mIndex], "uCurrentCenter" ), + animation.AnimateTo( Property( actor, mPages[actorIndex].propertyCurrentCenter ), 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 ); + + animation.FinishedSignal().Connect( this, &PageTurnPortraitView::TurnedOverBackwards ); + } +} + +void PageTurnPortraitView::OnTurnedOver( Actor actor, bool isLeftSide ) +{ + if( isLeftSide ) + { + actor.SetVisible( false ); } } -void PageTurnPortraitView::OnTurnedOver( Animation& animation ) +void PageTurnPortraitView::TurnedOverBackwards( Animation& animation ) { - ImageActor::DownCast(mAnimationActorPair[animation]).SetCullFace( CullNone ); TurnedOver( animation ); }