X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fpage-turn-view%2Fpage-turn-view-impl.cpp;h=3f98e54c344f8b7d1c7bfd0317e458e05f3e5d72;hb=31df2b9472ccbe0ae460a958535be8ef790c96f2;hp=6ede563072e9baa9d89f0b68561d1643176cf5fa;hpb=620ac79821b89142af1926f3577c7fa003f16ad3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.cpp b/dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.cpp index 6ede563..3f98e54 100644 --- a/dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.cpp +++ b/dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,13 +21,15 @@ // EXTERNAL INCLUDES #include #include -#include +#include #include -#include +#include #include // INTERNAL INCLUDES #include +#include +#include using namespace Dali; @@ -295,26 +297,26 @@ PageTurnView::~PageTurnView() void PageTurnView::OnInitialize() { // create the two book spine effect for static images, left and right side pages respectively - mSpineEffectFront = PageTurnBookSpineEffect::New(); - mSpineEffectFront.SetIsBackImageVisible( false ); - mSpineEffectFront.SetPageWidth( mPageSize.width ); - mSpineEffectFront.SetShadowWidth( 0.f ); - mSpineEffectFront.SetSpineShadowParameter( mSpineShadowParameter ); - - mSpineEffectBack = PageTurnBookSpineEffect::New(); - mSpineEffectBack.SetIsBackImageVisible( true ); - mSpineEffectBack.SetPageWidth( mPageSize.width ); - mSpineEffectBack.SetShadowWidth( 0.f ); - mSpineEffectBack.SetSpineShadowParameter( mSpineShadowParameter ); + mSpineEffectFront = CreatePageTurnBookSpineEffect(); + mSpineEffectFront.SetUniform("uIsBackImageVisible", false ); + mSpineEffectFront.SetUniform("uPageWidth", mPageSize.width ); + mSpineEffectFront.SetUniform("uShadowWidth", 0.f ); + mSpineEffectFront.SetUniform("uSpineShadowParameter", mSpineShadowParameter ); + + mSpineEffectBack = CreatePageTurnBookSpineEffect(); + mSpineEffectBack.SetUniform("uIsBackImageVisible", true ); + mSpineEffectBack.SetUniform("uPageWidth", mPageSize.width ); + mSpineEffectBack.SetUniform("uShadowWidth", 0.f ); + mSpineEffectBack.SetUniform("uSpineShadowParameter", mSpineShadowParameter ); // create the page turn effect objects for( int i = 0; i < MAXIMUM_TURNING_NUM; i++ ) { - mTurnEffect[i] = Toolkit::PageTurnEffect::New( false ); + mTurnEffect[i] = CreatePageTurnEffect( false ); mTurnEffect[i].SetProperty( ShaderEffect::Property::GRID_DENSITY, Property::Value( DEFAULT_GRID_DENSITY ) ); - mTurnEffect[i].SetPageSize( mPageSize ); - mTurnEffect[i].SetShadowWidth(0.f); - mTurnEffect[i].SetSpineShadowParameter( mSpineShadowParameter ); + mTurnEffect[i].SetUniform( "uPageSize", mPageSize ); + mTurnEffect[i].SetUniform( "uShadowWidth", 0.f); + mTurnEffect[i].SetUniform( "uSpineShadowParameter", mSpineShadowParameter ); mIsAnimating[i] = false; mIsSliding[i] = false; mPropertyPanDisplacement[i] = Self().RegisterProperty("PAN_DISPLACEMENT_PROPERTY_"+i, 0.0f); @@ -423,13 +425,13 @@ void PageTurnView::SetupShadowView() mShadowView.Activate(); } -void PageTurnView::OnControlStageConnection() +void PageTurnView::OnStageConnection( unsigned int depth ) { SetupShadowView(); mTurningPageLayer.RaiseToTop(); } -void PageTurnView::OnControlStageDisconnection() +void PageTurnView::OnStageDisconnection() { if(mShadowView) { @@ -453,22 +455,16 @@ void PageTurnView::OnControlStageDisconnection() } } -void PageTurnView::OnControlSizeSet( const Vector3& size ) -{ - // disable the SetSize of the control from the application - Self().SetSize( mControlSize ); -} - void PageTurnView::SetSpineShadowParameter( const Vector2& spineShadowParameter ) { mSpineShadowParameter = spineShadowParameter; // set spine shadow parameter to all the shader effects - mSpineEffectFront.SetSpineShadowParameter( mSpineShadowParameter ); - mSpineEffectBack.SetSpineShadowParameter( mSpineShadowParameter ); + mSpineEffectFront.SetUniform("uSpineShadowParameter", mSpineShadowParameter ); + mSpineEffectBack.SetUniform("uSpineShadowParameter", mSpineShadowParameter ); for( int i = 0; i < MAXIMUM_TURNING_NUM; i++ ) { - mTurnEffect[i].SetSpineShadowParameter( mSpineShadowParameter ); + mTurnEffect[i].SetUniform("uSpineShadowParameter", mSpineShadowParameter ); } } @@ -754,7 +750,7 @@ void PageTurnView::PanStarted( const Vector2& gesturePosition ) } mOriginalCenter = gesturePosition; - mTurnEffect[mIndex].SetIsTurningBack( mIsTurnBack[ mPanActor] ); + mTurnEffect[mIndex].SetUniform("uIsTurningBack", mIsTurnBack[ mPanActor] ); mPress = false; mPageUpdated = false; @@ -791,9 +787,9 @@ void PageTurnView::PanContinuing( const Vector2& gesturePosition ) mDistanceBottomCorner = ( mOriginalCenter - Vector2( 0.0f, mPageSize.height ) ).Length(); mShadowView.Add( mPanActor ); SetShaderEffect( mPanActor, mTurnEffect[mIndex] ); - mTurnEffect[mIndex].SetOriginalCenter( mOriginalCenter ); + mTurnEffect[mIndex].SetUniform("uOriginalCenter", mOriginalCenter ); mCurrentCenter = mOriginalCenter; - mTurnEffect[mIndex].SetCurrentCenter( mCurrentCenter ); + mTurnEffect[mIndex].SetUniform("uCurrentCenter", mCurrentCenter ); mPanDisplacement = 0.f; mConstraints = true; mPress = true; @@ -806,8 +802,8 @@ void PageTurnView::PanContinuing( const Vector2& gesturePosition ) self.SetProperty( mPropertyPanDisplacement[mIndex], 0.f ); Constraint shadowBlurStrengthConstraint = Constraint::New( mShadowView, mShadowView.GetBlurStrengthPropertyIndex(), ShadowBlurStrengthConstraint( mPageSize.width*PAGE_TURN_OVER_THRESHOLD_RATIO ) ); - shadowBlurStrengthConstraint.AddSource( Source(mTurnEffect[mIndex], mTurnEffect[mIndex].GetPropertyIndex(mTurnEffect[mIndex].PageTurnEffect::GetCurrentCenterPropertyName())) ); - shadowBlurStrengthConstraint.AddSource( Source(mTurnEffect[mIndex], mTurnEffect[mIndex].GetPropertyIndex(mTurnEffect[mIndex].PageTurnEffect::GetOriginalCenterPropertyName())) ); + shadowBlurStrengthConstraint.AddSource( Source(mTurnEffect[mIndex], mTurnEffect[mIndex].GetPropertyIndex("uCurrentCenter")) ); + shadowBlurStrengthConstraint.AddSource( Source(mTurnEffect[mIndex], mTurnEffect[mIndex].GetPropertyIndex("uOriginalCenter")) ); shadowBlurStrengthConstraint.AddSource( Source( self, mPropertyPanDisplacement[mIndex] ) ); shadowBlurStrengthConstraint.Apply(); } @@ -872,18 +868,18 @@ void PageTurnView::PanContinuing( const Vector2& gesturePosition ) offset *= k; Actor self = Self(); - Property::Index shaderOriginalCenterPropertyIndex = mTurnEffect[mIndex].GetPropertyIndex(mTurnEffect[mIndex].PageTurnEffect::GetOriginalCenterPropertyName()); + Property::Index shaderOriginalCenterPropertyIndex = mTurnEffect[mIndex].GetPropertyIndex("uOriginalCenter"); Constraint originalCenterConstraint = Constraint::New( mTurnEffect[mIndex], shaderOriginalCenterPropertyIndex, OriginalCenterConstraint( mOriginalCenter, offset )); originalCenterConstraint.AddSource( Source( self, mPropertyPanDisplacement[mIndex] ) ); originalCenterConstraint.Apply(); - Property::Index shaderCurrentCenterPropertyIndex = mTurnEffect[mIndex].GetPropertyIndex(mTurnEffect[mIndex].PageTurnEffect::GetCurrentCenterPropertyName()); + Property::Index shaderCurrentCenterPropertyIndex = mTurnEffect[mIndex].GetPropertyIndex("uCurrentCenter"); Constraint currentCenterConstraint = Constraint::New( mTurnEffect[mIndex], shaderCurrentCenterPropertyIndex, CurrentCenterConstraint(mPageSize.width)); currentCenterConstraint.AddSource( Source(self, mPropertyCurrentCenter[mIndex]) ); currentCenterConstraint.AddSource( Source(mTurnEffect[mIndex], shaderOriginalCenterPropertyIndex) ); currentCenterConstraint.Apply(); - GetImpl( mTurnEffect[mIndex] ).ApplyInternalConstraint(); + PageTurnApplyInternalConstraint(mTurnEffect[mIndex]); float distance = offset.Length(); Constraint rotationConstraint = Constraint::New( mPanActor, Actor::Property::ORIENTATION, RotationConstraint(distance, mPageSize.width, mIsTurnBack[mPanActor])); @@ -899,14 +895,14 @@ void PageTurnView::PanContinuing( const Vector2& gesturePosition ) { mPanActor.RemoveConstraints(); mTurnEffect[mIndex].RemoveConstraints(); - mTurnEffect[mIndex].SetOriginalCenter( mOriginalCenter ); + mTurnEffect[mIndex].SetUniform("uOriginalCenter",mOriginalCenter ); mConstraints = true; mPanDisplacement = 0.f; } - mTurnEffect[mIndex].SetCurrentCenter( currentCenter ); + mTurnEffect[mIndex].SetUniform("uCurrentCenter", currentCenter ); mCurrentCenter = currentCenter; - GetImpl( mTurnEffect[mIndex] ).ApplyInternalConstraint(); + PageTurnApplyInternalConstraint(mTurnEffect[mIndex]); } } } @@ -964,7 +960,7 @@ void PageTurnView::PanFinished( const Vector2& gesturePosition, float gestureSpe else // the pan finished position is far away from the spine, set up an animation to slide the page back instead of turning over { Animation animation= Animation::New( PAGE_SLIDE_BACK_ANIMATION_DURATION * (mOriginalCenter.x - mCurrentCenter.x) / mPageSize.width / PAGE_TURN_OVER_THRESHOLD_RATIO ); - animation.AnimateTo( Property( mTurnEffect[mIndex], mTurnEffect[mIndex].PageTurnEffect::GetCurrentCenterPropertyName() ), + animation.AnimateTo( Property( mTurnEffect[mIndex], "uCurrentCenter" ), mOriginalCenter, AlphaFunction::LINEAR ); mAnimationActorPair[animation] = actor; mAnimationIndexPair[animation] = mIndex;