#include <dali/public-api/animation/animation.h>
#include <dali/public-api/object/type-registry.h>
#include <dali/devel-api/object/type-registry-helper.h>
#include <dali/public-api/animation/animation.h>
#include <dali/public-api/object/type-registry.h>
#include <dali/devel-api/object/type-registry-helper.h>
if( mCurrentPageIndex < mTotalPageCount )
{
mPanActor = mPageActors[mCurrentPageIndex%NUMBER_OF_CACHED_PAGES];
if( mCurrentPageIndex < mTotalPageCount )
{
mPanActor = mPageActors[mCurrentPageIndex%NUMBER_OF_CACHED_PAGES];
if( mCurrentPageIndex > 0 && gestureSpeed > GESTURE_SPEED_THRESHOLD && offset.x > fabs( offset.y ))
{
ImageActor actor = mPageActors[ (mCurrentPageIndex-1) % NUMBER_OF_CACHED_PAGES ];
if( mCurrentPageIndex > 0 && gestureSpeed > GESTURE_SPEED_THRESHOLD && offset.x > fabs( offset.y ))
{
ImageActor actor = mPageActors[ (mCurrentPageIndex-1) % NUMBER_OF_CACHED_PAGES ];
// Guard against destruction during signal emission
//Emit signal, to notify that page[mCurrentPageIndex-1] is turning backwards
Toolkit::PageTurnView handle( GetOwner() );
// 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<unsigned int>(mCurrentPageIndex-1), false );
+ mTurningPageIndex = mCurrentPageIndex-1;
+ mPageTurnStartedSignal.Emit( handle, static_cast<unsigned int>(mTurningPageIndex), false );
// Add the page to tuning page layer and set up PageTurnEffect
mShadowView.Add( actor );
actor.SetShaderEffect( mTurnEffect[mIndex] );
PageTurnApplyInternalConstraint(mTurnEffect[mIndex]);
mIsAnimating[mIndex] = 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;
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 ) );
// Start an animation to turn the previous page back
Animation animation = Animation::New( PAGE_TURN_OVER_ANIMATION_DURATION );
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 ) );
// Start an animation to turn the previous page back
Animation animation = Animation::New( PAGE_TURN_OVER_ANIMATION_DURATION );
mAnimationIndexPair[animation] = mIndex;
animation.AnimateTo( Property( mTurnEffect[mIndex], "uCurrentCenter" ),
mAnimationIndexPair[animation] = mIndex;
animation.AnimateTo( Property( mTurnEffect[mIndex], "uCurrentCenter" ),
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();
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 );
- 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 );
+ }