/*
- * 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.
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);
mGestureDetectors.push_back(gestureDetector);
- // Set the pan scene object on the gesture detector
- gestureDetector->SetSceneObject( mSceneObject );
-
if (firstRegistration)
{
mMinTouchesRequired = gestureDetector->GetMinimumTouchesRequired();
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());
const Integration::PanGestureEvent& panEvent,
Vector2 localCurrent,
Gesture::State state,
- Dali::RenderTask renderTask )
+ RenderTaskPtr renderTask )
{
if ( actor && !gestureDetectors.empty() )
{
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 );
// 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<float>( panEvent.timeDelta );
+ pan.velocity.y = pan.displacement.y / static_cast<float>( 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<float>( panEvent.timeDelta );
+ pan.screenVelocity.y = pan.screenDisplacement.y / static_cast<float>( panEvent.timeDelta );
}
// When the gesture ends, we may incorrectly get a ZERO velocity (as we have lifted our finger without any movement)
{
// 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 ) );
/////////////////////////////
// | //
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 );