Moved Gesture::State and -::Type to gesture-enumerations.h.
[platform/core/uifw/dali-core.git] / dali / internal / event / actors / actor-impl.h
old mode 100755 (executable)
new mode 100644 (file)
index bf58f23..81bc969
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_ACTOR_H
 
 /*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -30,7 +30,6 @@
 #include <dali/public-api/math/viewport.h>
 #include <dali/public-api/object/ref-object.h>
 #include <dali/public-api/size-negotiation/relayout-container.h>
-#include <dali/devel-api/events/gesture-devel.h>
 #include <dali/internal/common/memory-pool-object-allocator.h>
 #include <dali/internal/event/actors/actor-declarations.h>
 #include <dali/internal/event/common/object-impl.h>
 namespace Dali
 {
 
-struct KeyEvent;
+class KeyEvent;
 class TouchData;
-struct HoverEvent;
-struct WheelEvent;
+class TouchEvent;
+class WheelEvent;
 
 namespace Internal
 {
@@ -158,9 +157,9 @@ public:
   }
 
   /**
-   * Query whether the actor is connected to the Stage.
+   * Query whether the actor is connected to the Scene.
    */
-  bool OnStage() const;
+  bool OnScene() const;
 
   /**
    * Query whether the actor has any renderers.
@@ -757,7 +756,7 @@ public:
    */
   inline int32_t GetHierarchyDepth() const
   {
-    if( mIsOnStage )
+    if( mIsOnScene )
     {
       return mDepth;
     }
@@ -981,7 +980,7 @@ public:
   /**
    * @brief Request a relayout, which means performing a size negotiation on this actor, its parent and children (and potentially whole scene)
    *
-   * This method is automatically called from OnStageConnection(), OnChildAdd(),
+   * This method is automatically called from OnSceneConnection(), OnChildAdd(),
    * OnChildRemove(), SetSizePolicy(), SetMinimumSize() and SetMaximumSize().
    *
    * This method can also be called from a derived class every time it needs a different size.
@@ -1374,6 +1373,15 @@ public:
    */
   bool IsHittable() const;
 
+  /**
+   * Query whether the actor captures all touch after it starts even if touch leaves its boundary.
+   * @return true, if it captures all touch after start
+   */
+  bool CapturesAllTouchAfterStart() const
+  {
+    return mCaptureAllTouchAfterStart;
+  }
+
   // Gestures
 
   /**
@@ -1391,31 +1399,30 @@ public:
    * @param[in] type The gesture type.
    * @return True if the gesture is required, false otherwise.
    */
-  bool IsGestureRequred( DevelGesture::Type type ) const;
+  bool IsGestureRequired( GestureType::Value type ) const;
 
   // Signals
 
   /**
    * Used by the EventProcessor to emit touch event signals.
-   * @param[in] event The touch event (Old API).
    * @param[in] touch The touch data.
    * @return True if the event was consumed.
    */
-  bool EmitTouchEventSignal( const TouchEvent& event, const Dali::TouchData& touch );
+  bool EmitTouchEventSignal( const Dali::TouchEvent& touch );
 
   /**
    * Used by the EventProcessor to emit hover event signals.
    * @param[in] event The hover event.
    * @return True if the event was consumed.
    */
-  bool EmitHoverEventSignal( const HoverEvent& event );
+  bool EmitHoverEventSignal( const Dali::HoverEvent& event );
 
   /**
    * Used by the EventProcessor to emit wheel event signals.
    * @param[in] event The wheel event.
    * @return True if the event was consumed.
    */
-  bool EmitWheelEventSignal( const WheelEvent& event );
+  bool EmitWheelEventSignal( const Dali::WheelEvent& event );
 
   /**
    * @brief Emits the visibility change signal for this actor and all its children.
@@ -1445,12 +1452,7 @@ public:
   /**
    * @copydoc Dali::Actor::TouchedSignal()
    */
-  Dali::Actor::TouchSignalType& TouchedSignal();
-
-  /**
-   * @copydoc Dali::Actor::TouchEventSignal()
-   */
-  Dali::Actor::TouchDataSignalType& TouchSignal();
+  Dali::Actor::TouchEventSignalType& TouchedSignal();
 
   /**
    * @copydoc Dali::Actor::HoveredSignal()
@@ -1463,14 +1465,14 @@ public:
   Dali::Actor::WheelEventSignalType& WheelEventSignal();
 
   /**
-   * @copydoc Dali::Actor::OnStageSignal()
+   * @copydoc Dali::Actor::OnSceneSignal()
    */
-  Dali::Actor::OnStageSignalType& OnStageSignal();
+  Dali::Actor::OnSceneSignalType& OnSceneSignal();
 
   /**
-   * @copydoc Dali::Actor::OffStageSignal()
+   * @copydoc Dali::Actor::OffSceneSignal()
    */
-  Dali::Actor::OffStageSignalType& OffStageSignal();
+  Dali::Actor::OffSceneSignalType& OffSceneSignal();
 
   /**
    * @copydoc Dali::Actor::OnRelayoutSignal()
@@ -1564,18 +1566,18 @@ protected:
   virtual ~Actor();
 
   /**
-   * Called on a child during Add() when the parent actor is connected to the Stage.
+   * Called on a child during Add() when the parent actor is connected to the Scene.
    * @param[in] parentDepth The depth of the parent in the hierarchy.
    */
-  void ConnectToStage( uint32_t parentDepth );
+  void ConnectToScene( uint32_t parentDepth );
 
   /**
-   * Helper for ConnectToStage, to recursively connect a tree of actors.
+   * Helper for ConnectToScene, to recursively connect a tree of actors.
    * This is atomic i.e. not interrupted by user callbacks.
    * @param[in]  depth The depth in the hierarchy of the actor
    * @param[out] connectionList On return, the list of connected actors which require notification.
    */
-  void RecursiveConnectToStage( ActorContainer& connectionList, uint32_t depth );
+  void RecursiveConnectToScene( ActorContainer& connectionList, uint32_t depth );
 
   /**
    * Connect the Node associated with this Actor to the scene-graph.
@@ -1583,7 +1585,7 @@ protected:
   void ConnectToSceneGraph();
 
   /**
-   * Helper for ConnectToStage, to notify a connected actor through the public API.
+   * Helper for ConnectToScene, to notify a connected actor through the public API.
    */
   void NotifyStageConnection();
 
@@ -1610,8 +1612,8 @@ protected:
   void NotifyStageDisconnection();
 
   /**
-   * When the Actor is OnStage, checks whether the corresponding Node is connected to the scene graph.
-   * @return True if the Actor is OnStage & has a Node connected to the scene graph.
+   * When the Actor is OnScene, checks whether the corresponding Node is connected to the scene graph.
+   * @return True if the Actor is OnScene & has a Node connected to the scene graph.
    */
   bool IsNodeConnected() const;
 
@@ -1771,10 +1773,10 @@ private:
 
   /**
    * For use in internal derived classes.
-   * This is called during ConnectToStage(), after the actor has finished adding its node to the scene-graph.
+   * This is called during ConnectToScene(), after the actor has finished adding its node to the scene-graph.
    * The derived class must not modify the actor hierachy (Add/Remove children) during this callback.
    */
-  virtual void OnStageConnectionInternal()
+  virtual void OnSceneConnectionInternal()
   {
   }
 
@@ -1783,15 +1785,15 @@ private:
    * This is called during DisconnectFromStage(), before the actor removes its node from the scene-graph.
    * The derived class must not modify the actor hierachy (Add/Remove children) during this callback.
    */
-  virtual void OnStageDisconnectionInternal()
+  virtual void OnSceneDisconnectionInternal()
   {
   }
 
   /**
    * For use in external (CustomActor) derived classes.
-   * This is called after the atomic ConnectToStage() traversal has been completed.
+   * This is called after the atomic ConnectToScene() traversal has been completed.
    */
-  virtual void OnStageConnectionExternal( int depth )
+  virtual void OnSceneConnectionExternal( int depth )
   {
   }
 
@@ -1799,7 +1801,7 @@ private:
    * For use in external (CustomActor) derived classes.
    * This is called after the atomic DisconnectFromStage() traversal has been completed.
    */
-  virtual void OnStageDisconnectionExternal()
+  virtual void OnSceneDisconnectionExternal()
   {
   }
 
@@ -1829,17 +1831,6 @@ private:
 
   /**
    * For use in derived classes.
-   * This is only called if mDerivedRequiresTouch is true, and the touch-signal was not consumed.
-   * @param[in] event The touch event.
-   * @return True if the event should be consumed.
-   */
-  virtual bool OnTouchEvent( const TouchEvent& event )
-  {
-    return false;
-  }
-
-  /**
-   * For use in derived classes.
    * This is only called if mDerivedRequiresHover is true, and the hover-signal was not consumed.
    * @param[in] event The hover event.
    * @return True if the event should be consumed.
@@ -1946,6 +1937,18 @@ private:
    */
   void InheritLayoutDirectionRecursively( ActorPtr actor, Dali::LayoutDirection::Type direction, bool set = false );
 
+  /**
+   * @brief Sets the update size hint of an actor.
+   * @param [in] updateSizeHint The update size hint.
+   */
+  void SetUpdateSizeHint( const Vector2& updateSizeHint );
+
+  /**
+   * @brief Return the update size hint of actor
+   * @return Return the update size hint
+   */
+  Vector2 GetUpdateSizeHint() const;
+
 protected:
 
   Scene* mScene;                  ///< The scene the actor is added to
@@ -1963,12 +1966,11 @@ protected:
   ActorGestureData* mGestureData;   ///< Optional Gesture data. Only created when actor requires gestures
 
   // Signals
-  Dali::Actor::TouchSignalType             mTouchedSignal;
-  Dali::Actor::TouchDataSignalType         mTouchSignal;
+  Dali::Actor::TouchEventSignalType        mTouchedSignal;
   Dali::Actor::HoverSignalType             mHoveredSignal;
   Dali::Actor::WheelEventSignalType        mWheelEventSignal;
-  Dali::Actor::OnStageSignalType           mOnStageSignal;
-  Dali::Actor::OffStageSignalType          mOffStageSignal;
+  Dali::Actor::OnSceneSignalType           mOnSceneSignal;
+  Dali::Actor::OffSceneSignalType          mOffSceneSignal;
   Dali::Actor::OnRelayoutSignalType        mOnRelayoutSignal;
   DevelActor::VisibilityChangedSignalType  mVisibilityChangedSignal;
   Dali::Actor::LayoutDirectionChangedSignalType  mLayoutDirectionChangedSignal;
@@ -1990,14 +1992,14 @@ protected:
 
   const bool mIsRoot                               : 1; ///< Flag to identify the root actor
   const bool mIsLayer                              : 1; ///< Flag to identify that this is a layer
-  bool mIsOnStage                                  : 1; ///< Flag to identify whether the actor is on-stage
+  bool mIsOnScene                                  : 1; ///< Flag to identify whether the actor is on-scene
   bool mSensitive                                  : 1; ///< Whether the actor emits touch event signals
   bool mLeaveRequired                              : 1; ///< Whether a touch event signal is emitted when the a touch leaves the actor's bounds
   bool mKeyboardFocusable                          : 1; ///< Whether the actor should be focusable by keyboard navigation
   bool mDerivedRequiresTouch                       : 1; ///< Whether the derived actor type requires touch event signals
   bool mDerivedRequiresHover                       : 1; ///< Whether the derived actor type requires hover event signals
   bool mDerivedRequiresWheelEvent                  : 1; ///< Whether the derived actor type requires wheel event signals
-  bool mOnStageSignalled                           : 1; ///< Set to true before OnStageConnection signal is emitted, and false before OnStageDisconnection
+  bool mOnSceneSignalled                           : 1; ///< Set to true before OnSceneConnection signal is emitted, and false before OnSceneDisconnection
   bool mInsideOnSizeSet                            : 1; ///< Whether we are inside OnSizeSet
   bool mInheritPosition                            : 1; ///< Cached: Whether the parent's position should be inherited.
   bool mInheritOrientation                         : 1; ///< Cached: Whether the parent's orientation should be inherited.
@@ -2005,6 +2007,7 @@ protected:
   bool mPositionUsesAnchorPoint                    : 1; ///< Cached: Whether the position uses the anchor point or not.
   bool mVisible                                    : 1; ///< Cached: Whether the actor is visible or not.
   bool mInheritLayoutDirection                     : 1; ///< Whether the actor inherits the layout direction from parent.
+  bool mCaptureAllTouchAfterStart                  : 1; ///< Whether the actor should capture all touch after touch starts even if the motion moves outside of the actor area.
   LayoutDirection::Type mLayoutDirection           : 2; ///< Layout direction, Left to Right or Right to Left.
   DrawMode::Type mDrawMode                         : 3; ///< Cached: How the actor and its children should be drawn
   ColorMode mColorMode                             : 3; ///< Cached: Determines whether mWorldColor is inherited