Merge "Add BuildPickingRay to devel api" into devel/master
[platform/core/uifw/dali-core.git] / dali / public-api / events / gesture.h
index 2696f7b..571a593 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_GESTURE_H__
-#define __DALI_GESTURE_H__
+#ifndef DALI_GESTURE_H
+#define DALI_GESTURE_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
@@ -23,6 +23,8 @@
 
 // INTERNAL INCLUDES
 #include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/events/gesture-enumerations.h>
+#include <dali/public-api/object/base-handle.h>
 
 namespace Dali
 {
@@ -31,6 +33,11 @@ namespace Dali
  * @{
  */
 
+namespace Internal DALI_INTERNAL
+{
+class Gesture;
+}
+
 /**
  * @brief Base structure for different gestures that an application can receive.
  *
@@ -41,93 +48,105 @@ namespace Dali
  * To receive a particular gesture, the application has to create and connect to the appropriate
  * GestureDetector.
  *
- * @SINCE_1_0.0
+ * @SINCE_1_9.28
  * @note An instance of this class cannot be created.
  * @see GestureDetector
  *
  */
-struct DALI_CORE_API Gesture
+class DALI_CORE_API Gesture : public BaseHandle
 {
+public:
   /**
-   * @brief Copy constructor.
-   * @SINCE_1_0.0
-   * @param[in] rhs A reference to the copied handle
+   * @brief Creates an uninitialized Gesture handle.
+   *
+   * Calling member functions with an uninitialized Actor handle is not allowed.
+   * @SINCE_1_9.28
    */
-  Gesture( const Gesture& rhs );
+  Gesture();
 
   /**
-   * @brief Assignment operator.
-   * @SINCE_1_0.0
+   * @brief Copy constructor.
+   * @SINCE_1_9.28
    * @param[in] rhs A reference to the copied handle
-   * @return A reference to this
    */
-  Gesture& operator=( const Gesture& rhs );
+  Gesture(const Gesture& rhs);
 
-  // Destruction
+  /**
+   * @brief Move constructor.
+   * @SINCE_1_9.28
+   * @param[in] rhs A reference to the handle to move
+   */
+  Gesture(Gesture&& rhs) noexcept;
 
   /**
-   * @brief Virtual destructor.
-   * @SINCE_1_0.0
+   * @brief Assignment operator.
+   * @SINCE_1_9.28
+   * @param[in] rhs A reference to the copied handle
+   * @return A reference to this
    */
-  virtual ~Gesture();
+  Gesture& operator=(const Gesture& rhs);
 
   /**
-   * @brief Enumeration for type of gesture.
-   * @SINCE_1_0.0
+   * @brief Move assignment operator.
+   * @SINCE_1_9.28
+   * @param[in] rhs A reference to the handle to move
+   * @return A reference to this
    */
-  enum Type
-  {
-    Pinch      = 1 << 0, ///< When two touch points move away or towards each other. @SINCE_1_0.0
-    Pan        = 1 << 1, ///< When the user drags their finger(s) in a particular direction. @SINCE_1_0.0
-    Tap        = 1 << 2, ///< When the user taps the screen. @SINCE_1_0.0
-    LongPress  = 1 << 3  ///< When the user continues to touch the same area on the screen for the device configured time. @SINCE_1_0.0
-  };
+  Gesture& operator=(Gesture&& rhs) noexcept;
 
   /**
-   * @brief Enumeration for state of the gesture.
-   * @SINCE_1_0.0
+   * @brief Non virtual destructor.
+   * @SINCE_1_9.28
    */
-  enum State
-  {
-    Clear,      ///< There is no state associated with this gesture. @SINCE_1_0.0
-    Started,    ///< The touched points on the screen have moved enough to be considered a gesture. @SINCE_1_0.0
-    Continuing, ///< The gesture is continuing. @SINCE_1_0.0
-    Finished,   ///< The user has lifted a finger or touched an additional point on the screen. @SINCE_1_0.0
-    Cancelled,  ///< The gesture has been cancelled. @SINCE_1_0.0
-    Possible    ///< A gesture is possible. @SINCE_1_0.0
-  };
-
-  // Data
+  ~Gesture();
 
   /**
    * @brief The gesture type.
+   * @SINCE_1_9.28
+   * @return The gesture type
    */
-  Type type;
+  GestureType::Value GetType() const;
 
   /**
    * @brief The gesture state.
    *
    * Please see the description in the sub-classes to see the states
    * used by the actual gesture.
+   * @SINCE_1_9.28
+   * @return The state of the gesture
    */
-  State state;
+  GestureState GetState() const;
 
   /**
    * @brief The time the gesture took place.
+   * @SINCE_1_9.28
+   * @return The time the gesture took place
    */
-  uint32_t time;
+  uint32_t GetTime() const;
 
-protected: // Creation
+  /**
+   * @brief Gets the value of which source the gesture was started with. (ex : mouse)
+   * @SINCE_2_2.0
+   * @return The gesture input source.
+   */
+  GestureSourceType GetSourceType() const;
 
   /**
-   * @brief This constructor is only used by derived classes.
-   *
-   * @SINCE_1_0.0
-   * @param[in] gestureType   The type of gesture event.
-   * @param[in] gestureState  The state of the gesture event.
+   * @brief Gets the data of the source type.
+   * @SINCE_2_2.0
+   * @return The gesture source data.
    */
-  Gesture(Type gestureType, State gestureState);
+  GestureSourceData GetSourceData() const;
 
+public: // Not intended for application developers
+  /// @cond internal
+  /**
+   * @brief Internal constructor.
+   * @SINCE_1_9.28
+   * @param[in] gesture Pointer to internal gesture
+   */
+  explicit DALI_INTERNAL Gesture(Internal::Gesture* gesture);
+  /// @endcond
 };
 
 /**
@@ -135,4 +154,4 @@ protected: // Creation
  */
 } // namespace Dali
 
-#endif // __DALI_GESTURE_H__
+#endif // DALI_GESTURE_H