X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fevents%2Fpinch-gesture%2Fpinch-gesture-processor.cpp;h=6d2f6a121bed627f6b24e78597c9b39d1190bdd0;hp=c373fae602be458ea8d4b4950731b1378142ac5c;hb=c649ee4a50956a61a5b761383b4b79a80efa2c2d;hpb=370710a39b6ad9e9af3dd1078d6ffc338b2d2d5b diff --git a/dali/internal/event/events/pinch-gesture/pinch-gesture-processor.cpp b/dali/internal/event/events/pinch-gesture/pinch-gesture-processor.cpp index c373fae..6d2f6a1 100644 --- a/dali/internal/event/events/pinch-gesture/pinch-gesture-processor.cpp +++ b/dali/internal/event/events/pinch-gesture/pinch-gesture-processor.cpp @@ -40,6 +40,8 @@ namespace Internal namespace { +const uint32_t MINIMUM_TOUCH_EVENTS_REQUIRED = 4u; +const uint32_t MINIMUM_TOUCH_EVENTS_REQUIRED_AFTER_START = 4u; /** * Creates a PinchGesture and asks the specified detector to emit its detected signal. @@ -106,7 +108,9 @@ PinchGestureProcessor::PinchGestureProcessor() mPinchGestureDetectors(), mCurrentPinchEmitters(), mCurrentPinchEvent(NULL), - mMinimumPinchDistance(-1.0f) + mMinimumPinchDistance(-1.0f), + mMinimumTouchEvents( MINIMUM_TOUCH_EVENTS_REQUIRED ), + mMinimumTouchEventsAfterStart( MINIMUM_TOUCH_EVENTS_REQUIRED_AFTER_START ) { } @@ -128,6 +132,40 @@ void PinchGestureProcessor::SetMinimumPinchDistance( float value ) } } +void PinchGestureProcessor::SetMinimumTouchEvents( uint32_t value ) +{ + if( value > 1u && mMinimumTouchEvents != value ) + { + mMinimumTouchEvents = value; + + if( mGestureRecognizer ) + { + PinchGestureRecognizer* pinchRecognizer = dynamic_cast( mGestureRecognizer.Get() ); + if( pinchRecognizer ) + { + pinchRecognizer->SetMinimumTouchEvents( value ); + } + } + } +} + +void PinchGestureProcessor::SetMinimumTouchEventsAfterStart( uint32_t value ) +{ + if( value > 1u && mMinimumTouchEventsAfterStart != value ) + { + mMinimumTouchEventsAfterStart = value; + + if( mGestureRecognizer ) + { + PinchGestureRecognizer* pinchRecognizer = dynamic_cast( mGestureRecognizer.Get() ); + if( pinchRecognizer ) + { + pinchRecognizer->SetMinimumTouchEventsAfterStart( value ); + } + } + } +} + void PinchGestureProcessor::Process( Scene& scene, const PinchGestureEvent& pinchEvent ) { switch ( pinchEvent.state ) @@ -222,7 +260,7 @@ void PinchGestureProcessor::AddGestureDetector( PinchGestureDetector* gestureDet if (createRecognizer) { Size size = scene.GetSize(); - mGestureRecognizer = new PinchGestureRecognizer( *this, Vector2(size.width, size.height), scene.GetDpi(), mMinimumPinchDistance ); + mGestureRecognizer = new PinchGestureRecognizer( *this, Vector2(size.width, size.height), scene.GetDpi(), mMinimumPinchDistance, mMinimumTouchEventsAfterStart, mMinimumTouchEventsAfterStart ); } }