Add methods to set variables for Pinch and Rotation gesture processing
[platform/core/uifw/dali-core.git] / dali / internal / event / events / rotation-gesture / rotation-gesture-processor.cpp
index f65642e..474f0e7 100644 (file)
@@ -41,6 +41,8 @@ namespace Internal
 
 namespace
 {
+const uint32_t MINIMUM_TOUCH_EVENTS_REQUIRED = 4u;
+const uint32_t MINIMUM_TOUCH_EVENTS_REQUIRED_AFTER_START = 4u;
 
 /**
  * Creates a RotationGesture and asks the specified detector to emit its detected signal.
@@ -103,7 +105,9 @@ RotationGestureProcessor::RotationGestureProcessor()
 : GestureProcessor( DevelGesture::Rotation ),
   mRotationGestureDetectors(),
   mCurrentRotationEmitters(),
-  mCurrentRotationEvent( nullptr )
+  mCurrentRotationEvent( nullptr ),
+  mMinimumTouchEvents( MINIMUM_TOUCH_EVENTS_REQUIRED ),
+  mMinimumTouchEventsAfterStart( MINIMUM_TOUCH_EVENTS_REQUIRED_AFTER_START )
 {
 }
 
@@ -196,7 +200,7 @@ void RotationGestureProcessor::AddGestureDetector( RotationGestureDetector* gest
 
   if (createRecognizer)
   {
-    mGestureRecognizer = new RotationGestureRecognizer( *this );
+    mGestureRecognizer = new RotationGestureRecognizer( *this, mMinimumTouchEvents, mMinimumTouchEventsAfterStart );
   }
 }
 
@@ -228,6 +232,40 @@ void RotationGestureProcessor::RemoveGestureDetector( RotationGestureDetector* g
   }
 }
 
+void RotationGestureProcessor::SetMinimumTouchEvents( uint32_t value )
+{
+  if( value > 1u && mMinimumTouchEvents != value )
+  {
+    mMinimumTouchEvents = value;
+
+    if( mGestureRecognizer )
+    {
+      RotationGestureRecognizer* rotationRecognizer = dynamic_cast<RotationGestureRecognizer*>( mGestureRecognizer.Get() );
+      if( rotationRecognizer )
+      {
+        rotationRecognizer->SetMinimumTouchEvents( value );
+      }
+    }
+  }
+}
+
+void RotationGestureProcessor::SetMinimumTouchEventsAfterStart( uint32_t value )
+{
+  if( value > 1u && mMinimumTouchEventsAfterStart != value )
+  {
+    mMinimumTouchEventsAfterStart = value;
+
+    if( mGestureRecognizer )
+    {
+      RotationGestureRecognizer* rotationRecognizer = dynamic_cast<RotationGestureRecognizer*>( mGestureRecognizer.Get() );
+      if( rotationRecognizer )
+      {
+        rotationRecognizer->SetMinimumTouchEventsAfterStart( value );
+      }
+    }
+  }
+}
+
 void RotationGestureProcessor::OnGesturedActorStageDisconnection()
 {
   mCurrentRotationEmitters.clear();