X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fevents%2Fpan-gesture-processor.cpp;h=d95fe0f394c032a794a5b1c98982479149af84ae;hb=c114bfe4714e8f02c54b25e381a41d80bdcb2d93;hp=0943066b705b49ceea8c7b984f012af0097f7cd8;hpb=cf70a56a2d77c517c30f66bd9eb5a6144b774227;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/events/pan-gesture-processor.cpp b/dali/internal/event/events/pan-gesture-processor.cpp index 0943066..d95fe0f 100644 --- a/dali/internal/event/events/pan-gesture-processor.cpp +++ b/dali/internal/event/events/pan-gesture-processor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -195,7 +195,7 @@ void PanGestureProcessor::Process( const Integration::PanGestureEvent& panEvent if ( !outsideTouchesRangeEmitters.empty() || !mCurrentPanEmitters.empty() ) { - currentGesturedActor->ScreenToLocal( GetImplementation( mCurrentRenderTask ), actorCoords.x, actorCoords.y, panEvent.currentPosition.x, panEvent.currentPosition.y ); + currentGesturedActor->ScreenToLocal( *mCurrentRenderTask.Get(), actorCoords.x, actorCoords.y, panEvent.currentPosition.x, panEvent.currentPosition.y ); // EmitPanSignal checks whether we have a valid actor and whether the container we are passing in has emitters before it emits the pan. EmitPanSignal( currentGesturedActor, outsideTouchesRangeEmitters, panEvent, actorCoords, Gesture::Finished, mCurrentRenderTask); @@ -238,9 +238,6 @@ void PanGestureProcessor::AddGestureDetector( PanGestureDetector* gestureDetecto mGestureDetectors.push_back(gestureDetector); - // Set the pan scene object on the gesture detector - gestureDetector->SetSceneObject( mSceneObject ); - if (firstRegistration) { mMinTouchesRequired = gestureDetector->GetMinimumTouchesRequired(); @@ -360,6 +357,51 @@ void PanGestureProcessor::SetSmoothingAmount(float amount) mSceneObject->SetSmoothingAmount(amount); } +void PanGestureProcessor::SetUseActualTimes( bool value ) +{ + mSceneObject->SetUseActualTimes( value ); +} + +void PanGestureProcessor::SetInterpolationTimeRange( int value ) +{ + mSceneObject->SetInterpolationTimeRange( value ); +} + +void PanGestureProcessor::SetScalarOnlyPredictionEnabled( bool value ) +{ + mSceneObject->SetScalarOnlyPredictionEnabled( value ); +} + +void PanGestureProcessor::SetTwoPointPredictionEnabled( bool value ) +{ + mSceneObject->SetTwoPointPredictionEnabled( value ); +} + +void PanGestureProcessor::SetTwoPointInterpolatePastTime( int value ) +{ + mSceneObject->SetTwoPointInterpolatePastTime( value ); +} + +void PanGestureProcessor::SetTwoPointVelocityBias( float value ) +{ + mSceneObject->SetTwoPointVelocityBias( value ); +} + +void PanGestureProcessor::SetTwoPointAccelerationBias( float value ) +{ + mSceneObject->SetTwoPointAccelerationBias( value ); +} + +void PanGestureProcessor::SetMultitapSmoothingRange( int value ) +{ + mSceneObject->SetMultitapSmoothingRange( value ); +} + +const SceneGraph::PanGesture& PanGestureProcessor::GetSceneObject() const +{ + return *mSceneObject; +} + void PanGestureProcessor::UpdateDetection() { DALI_ASSERT_DEBUG(!mGestureDetectors.empty()); @@ -404,7 +446,7 @@ void PanGestureProcessor::EmitPanSignal( Actor* actor, const Integration::PanGestureEvent& panEvent, Vector2 localCurrent, Gesture::State state, - Dali::RenderTask renderTask ) + RenderTaskPtr renderTask ) { if ( actor && !gestureDetectors.empty() ) { @@ -415,7 +457,7 @@ void PanGestureProcessor::EmitPanSignal( Actor* actor, pan.screenPosition = panEvent.currentPosition; pan.position = localCurrent; - RenderTask& renderTaskImpl( GetImplementation( renderTask ) ); + RenderTask& renderTaskImpl( *renderTask.Get() ); Vector2 localPrevious; actor->ScreenToLocal( renderTaskImpl, localPrevious.x, localPrevious.y, panEvent.previousPosition.x, panEvent.previousPosition.y ); @@ -432,11 +474,11 @@ void PanGestureProcessor::EmitPanSignal( Actor* actor, // Avoid dividing by 0 if ( panEvent.timeDelta > 0 ) { - pan.velocity.x = pan.displacement.x / panEvent.timeDelta; - pan.velocity.y = pan.displacement.y / panEvent.timeDelta; + pan.velocity.x = pan.displacement.x / static_cast( panEvent.timeDelta ); + pan.velocity.y = pan.displacement.y / static_cast( panEvent.timeDelta ); - pan.screenVelocity.x = pan.screenDisplacement.x / panEvent.timeDelta; - pan.screenVelocity.y = pan.screenDisplacement.y / panEvent.timeDelta; + pan.screenVelocity.x = pan.screenDisplacement.x / static_cast( panEvent.timeDelta ); + pan.screenVelocity.y = pan.screenDisplacement.y / static_cast( panEvent.timeDelta ); } // When the gesture ends, we may incorrectly get a ZERO velocity (as we have lifted our finger without any movement) @@ -490,14 +532,14 @@ bool PanGestureProcessor::CheckGestureDetector( GestureDetector* detector, Actor { // It does, calculate the angle of the pan in local actor coordinates and ensures it fits // the detector's criteria. - RenderTask& renderTaskImpl( GetImplementation( mCurrentRenderTask ) ); + RenderTask& renderTaskImpl = *mCurrentRenderTask.Get(); Vector2 startPosition, currentPosition; actor->ScreenToLocal( renderTaskImpl, startPosition.x, startPosition.y, mPossiblePanPosition.x, mPossiblePanPosition.y ); actor->ScreenToLocal( renderTaskImpl, currentPosition.x, currentPosition.y, mCurrentPanEvent->currentPosition.x, mCurrentPanEvent->currentPosition.y ); Vector2 displacement( currentPosition - startPosition ); - Radian angle( atan( displacement.y / displacement.x ) ); + Radian angle( atanf( displacement.y / displacement.x ) ); ///////////////////////////// // | // @@ -552,7 +594,7 @@ void PanGestureProcessor::EmitGestureSignal( Actor* actor, const GestureDetector mCurrentPanEmitters.clear(); ResetActor(); - actor->ScreenToLocal( GetImplementation(mCurrentRenderTask), actorCoordinates.x, actorCoordinates.y, mCurrentPanEvent->currentPosition.x, mCurrentPanEvent->currentPosition.y ); + actor->ScreenToLocal( *mCurrentRenderTask.Get(), actorCoordinates.x, actorCoordinates.y, mCurrentPanEvent->currentPosition.x, mCurrentPanEvent->currentPosition.y ); EmitPanSignal( actor, gestureDetectors, *mCurrentPanEvent, actorCoordinates, mCurrentPanEvent->state, mCurrentRenderTask );