Merge "Remove TypeRegistration from deprecated Image classes" into devel/master
[platform/core/uifw/dali-core.git] / dali / internal / event / actors / actor-impl.h
old mode 100644 (file)
new mode 100755 (executable)
index 1a45748..92e25e5
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_ACTOR_H
 
 /*
- * 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.
@@ -136,7 +136,7 @@ public:
   /**
    * @copydoc Dali::Actor::GetId
    */
-  unsigned int GetId() const;
+  uint32_t GetId() const;
 
   // Containment
 
@@ -205,12 +205,12 @@ public:
    * Retrieve the number of children held by the actor.
    * @return The number of children
    */
-  unsigned int GetChildCount() const;
+  uint32_t GetChildCount() const;
 
   /**
    * @copydoc Dali::Actor::GetChildAt
    */
-  ActorPtr GetChildAt( unsigned int index ) const;
+  ActorPtr GetChildAt( uint32_t index ) const;
 
   /**
    * Retrieve a reference to Actor's children.
@@ -231,7 +231,7 @@ public:
   /**
    * @copydoc Dali::Actor::FindChildById
    */
-  ActorPtr FindChildById( const unsigned int id );
+  ActorPtr FindChildById( const uint32_t id );
 
   /**
    * Retrieve the parent of an Actor.
@@ -750,11 +750,11 @@ public:
   /**
    * @copydoc Dali::Actor::GetHierarchyDepth()
    */
-  inline int GetHierarchyDepth() const
+  inline int32_t GetHierarchyDepth() const
   {
     if( mIsOnStage )
     {
-      return static_cast<int>(mDepth);
+      return mDepth;
     }
 
     return -1;
@@ -765,7 +765,7 @@ public:
    *
    * @return The depth used for hit-testing and renderer sorting
    */
-  unsigned int GetSortingDepth();
+  uint32_t GetSortingDepth();
 
 public:
 
@@ -1226,17 +1226,17 @@ public:
   /**
    * @copydoc Dali::Actor::AddRenderer()
    */
-  unsigned int AddRenderer( Renderer& renderer );
+  uint32_t AddRenderer( Renderer& renderer );
 
   /**
    * @copydoc Dali::Actor::GetRendererCount()
    */
-  unsigned int GetRendererCount() const;
+  uint32_t GetRendererCount() const;
 
   /**
    * @copydoc Dali::Actor::GetRendererAt()
    */
-  RendererPtr GetRendererAt( unsigned int index );
+  RendererPtr GetRendererAt( uint32_t index );
 
   /**
    * @copydoc Dali::Actor::RemoveRenderer()
@@ -1246,7 +1246,7 @@ public:
   /**
    * @copydoc Dali::Actor::RemoveRenderer()
    */
-  void RemoveRenderer( unsigned int index );
+  void RemoveRenderer( uint32_t index );
 
 public:
 
@@ -1422,7 +1422,19 @@ public:
    * @brief Emits the layout direction change signal for this actor and all its children.
    * @param[in] type Whether the actor's layout direction property has changed or a parent's.
    */
-  void EmitLayoutDirectionChangedSignal( DevelActor::LayoutDirection::Type type );
+  void EmitLayoutDirectionChangedSignal( LayoutDirection::Type type );
+
+  /**
+   * @brief Emits the ChildAdded signal for this actor
+   * @param[in] child The child actor that has been added
+   */
+  void EmitChildAddedSignal( Actor& child );
+
+  /**
+   * @brief Emits the ChildRemoved signal for this actor
+   * @param[in] child The child actor that has been removed
+   */
+  void EmitChildRemovedSignal( Actor& child );
 
   /**
    * @copydoc Dali::Actor::TouchedSignal()
@@ -1465,9 +1477,24 @@ public:
   DevelActor::VisibilityChangedSignalType& VisibilityChangedSignal();
 
   /**
-   * @copydoc DevelActor::LayoutDirectionChangedSignal
+   * @copydoc LayoutDirectionChangedSignal
    */
-  DevelActor::LayoutDirectionChangedSignalType& LayoutDirectionChangedSignal();
+  Dali::Actor::LayoutDirectionChangedSignalType& LayoutDirectionChangedSignal();
+
+  /**
+   * @copydoc DevelActor::ChildAddedSignal
+   */
+  DevelActor::ChildChangedSignalType& ChildAddedSignal();
+
+  /**
+   * @copydoc DevelActor::ChildRemovedSignal
+   */
+  DevelActor::ChildChangedSignalType& ChildRemovedSignal();
+
+  /**
+   * @copydoc DevelActor::ChildOrderChangedSignal
+   */
+  DevelActor::ChildOrderChangedSignalType& ChildOrderChangedSignal();
 
   /**
    * Connects a callback function with the object's signals.
@@ -1533,7 +1560,7 @@ protected:
    * Called on a child during Add() when the parent actor is connected to the Stage.
    * @param[in] parentDepth The depth of the parent in the hierarchy.
    */
-  void ConnectToStage( unsigned int parentDepth );
+  void ConnectToStage( uint32_t parentDepth );
 
   /**
    * Helper for ConnectToStage, to recursively connect a tree of actors.
@@ -1541,7 +1568,7 @@ protected:
    * @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, unsigned int depth );
+  void RecursiveConnectToStage( ActorContainer& connectionList, uint32_t depth );
 
   /**
    * Connect the Node associated with this Actor to the scene-graph.
@@ -1596,53 +1623,13 @@ protected:
    * @param[in] sceneGraphNodeDepths A vector capturing the nodes and their depth index
    * @param[in,out] depthIndex The current depth index (traversal index)
    */
-  void DepthTraverseActorTree( OwnerPointer<SceneGraph::NodeDepths>& sceneGraphNodeDepths, int& depthIndex );
+  void DepthTraverseActorTree( OwnerPointer<SceneGraph::NodeDepths>& sceneGraphNodeDepths, int32_t& depthIndex );
 
 public:
 
   // Default property extensions from Object
 
   /**
-   * @copydoc Dali::Internal::Object::GetDefaultPropertyCount()
-   */
-  virtual unsigned int GetDefaultPropertyCount() const;
-
-  /**
-   * @copydoc Dali::Internal::Object::GetDefaultPropertyIndices()
-   */
-  virtual void GetDefaultPropertyIndices( Property::IndexContainer& indices ) const;
-
-  /**
-   * @copydoc Dali::Internal::Object::GetDefaultPropertyName()
-   */
-  virtual const char* GetDefaultPropertyName( Property::Index index ) const;
-
-  /**
-   * @copydoc Dali::Internal::Object::GetDefaultPropertyIndex()
-   */
-  virtual Property::Index GetDefaultPropertyIndex( const std::string& name ) const;
-
-  /**
-   * @copydoc Dali::Internal::Object::IsDefaultPropertyWritable()
-   */
-  virtual bool IsDefaultPropertyWritable( Property::Index index ) const;
-
-  /**
-   * @copydoc Dali::Internal::Object::IsDefaultPropertyAnimatable()
-   */
-  virtual bool IsDefaultPropertyAnimatable( Property::Index index ) const;
-
-  /**
-   * @copydoc Dali::Internal::Object::IsDefaultPropertyAConstraintInput()
-   */
-  virtual bool IsDefaultPropertyAConstraintInput( Property::Index index ) const;
-
-  /**
-   * @copydoc Dali::Internal::Object::GetDefaultPropertyType()
-   */
-  virtual Property::Type GetDefaultPropertyType( Property::Index index ) const;
-
-  /**
    * @copydoc Dali::Internal::Object::SetDefaultProperty()
    */
   virtual void SetDefaultProperty( Property::Index index, const Property::Value& propertyValue );
@@ -1693,6 +1680,15 @@ public:
   virtual int GetPropertyComponentIndex( Property::Index index ) const;
 
   /**
+   * Retrieve the actor's node.
+   * @return The node used by this actor
+   */
+  const SceneGraph::Node& GetNode() const
+  {
+    return *mNode;
+  }
+
+  /**
    * @copydoc Dali::DevelActor::Raise()
    */
   void Raise();
@@ -1733,11 +1729,9 @@ private:
     };
   };
 
-  // Undefined
-  Actor();
-
-  // Undefined
-  Actor( const Actor& );
+  // Remove default constructor and copy constructor
+  Actor()=delete;
+  Actor( const Actor& )=delete;
 
   // Undefined
   Actor& operator=( const Actor& rhs );
@@ -1893,13 +1887,13 @@ private:
    * @param[in] order The sibling order this Actor should be. It will place
    * the actor at this index in it's parent's child array.
    */
-  void SetSiblingOrder( unsigned int order);
+  void SetSiblingOrder( uint32_t order);
 
   /**
    * Get Sibling order
    * @return the order of this actor amongst it's siblings
    */
-  unsigned int GetSiblingOrder() const;
+  uint32_t GetSiblingOrder() const;
 
   /**
    * Request that the stage rebuilds the actor depth indices.
@@ -1937,7 +1931,7 @@ private:
    * @param[in] actor The actor for seting layout direction.
    * @param[in] direction New layout direction.
    */
-  void InheritLayoutDirectionRecursively( ActorPtr actor, Dali::DevelActor::LayoutDirection::Type direction, bool set = false );
+  void InheritLayoutDirectionRecursively( ActorPtr actor, Dali::LayoutDirection::Type direction, bool set = false );
 
 protected:
 
@@ -1963,7 +1957,10 @@ protected:
   Dali::Actor::OffStageSignalType          mOffStageSignal;
   Dali::Actor::OnRelayoutSignalType        mOnRelayoutSignal;
   DevelActor::VisibilityChangedSignalType  mVisibilityChangedSignal;
-  DevelActor::LayoutDirectionChangedSignalType  mLayoutDirectionChangedSignal;
+  Dali::Actor::LayoutDirectionChangedSignalType  mLayoutDirectionChangedSignal;
+  DevelActor::ChildChangedSignalType       mChildAddedSignal;
+  DevelActor::ChildChangedSignalType       mChildRemovedSignal;
+  DevelActor::ChildOrderChangedSignalType  mChildOrderChangedSignal;
 
   Quaternion      mTargetOrientation; ///< Event-side storage for orientation
   Vector4         mTargetColor;       ///< Event-side storage for color
@@ -1972,11 +1969,9 @@ protected:
   Vector3         mTargetScale;       ///< Event-side storage for scale
 
   std::string     mName;      ///< Name of the actor
-  unsigned int    mId;        ///< A unique ID to identify the actor starting from 1, and 0 is reserved
-
+  uint32_t        mId;        ///< A unique ID to identify the actor starting from 1, and 0 is reserved
   uint32_t mSortedDepth;      ///< The sorted depth index. A combination of tree traversal and sibling order.
-  uint16_t mDepth;            ///< The depth in the hierarchy of the actor. Only 4096 levels of depth are supported
-
+  int16_t mDepth;             ///< The depth in the hierarchy of the actor. Only 32,767 levels of depth are supported
 
   const bool mIsRoot                               : 1; ///< Flag to identify the root actor
   const bool mIsLayer                              : 1; ///< Flag to identify that this is a layer
@@ -1995,16 +1990,16 @@ 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.
-  DevelActor::LayoutDirection::Type mLayoutDirection  : 1; ///< Layout direction, Left to Right or Right to Left.
-  DrawMode::Type mDrawMode                         : 2; ///< Cached: How the actor and its children should be drawn
-  PositionInheritanceMode mPositionInheritanceMode : 2; ///< Cached: Determines how position is inherited
-  ColorMode mColorMode                             : 2; ///< Cached: Determines whether mWorldColor is inherited
-  ClippingMode::Type mClippingMode                 : 2; ///< Cached: Determines which clipping mode (if any) to use.
+  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
+  PositionInheritanceMode mPositionInheritanceMode : 3; ///< Cached: Determines how position is inherited
+  ColorMode mColorMode                             : 3; ///< Cached: Determines whether mWorldColor is inherited
+  ClippingMode::Type mClippingMode                 : 3; ///< Cached: Determines which clipping mode (if any) to use.
 
 private:
 
   static ActorContainer mNullChildren;  ///< Empty container (shared by all actors, returned by GetChildren() const)
-  static unsigned int mActorCounter;    ///< A counter to track the actor instance creation
+  static uint32_t mActorCounter;        ///< A counter to track the actor instance creation
 };
 
 } // namespace Internal