X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Factors%2Factor-impl.h;h=6be3f77be9d4ee0fa41a5f4092f23b4cdbcff656;hb=a6f3e736b329550feb5a76dbda528e4c8b707c8b;hp=301ea16e5924cc26bc3fa41ffffb5a73ba90edb6;hpb=3daa7b602a8d7409c9f39746fc1767b6f3b52844;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/actors/actor-impl.h b/dali/internal/event/actors/actor-impl.h index 301ea16..6be3f77 100644 --- a/dali/internal/event/actors/actor-impl.h +++ b/dali/internal/event/actors/actor-impl.h @@ -22,24 +22,20 @@ #include // INTERNAL INCLUDES -#include -#include #include +#include #include #include #include -#include +#include #include -#include #include -#include #include +#include +#include +#include #include -#ifdef DYNAMICS_SUPPORT -#include -#endif - namespace Dali { @@ -56,10 +52,8 @@ class ActorGestureData; class Animation; class RenderTask; class Renderer; -struct DynamicsData; -typedef IntrusivePtr< Actor > ActorPtr; -typedef std::vector< Dali::Actor > ActorContainer; // Store handles to return via public-api +typedef std::vector< ActorPtr > ActorContainer; typedef ActorContainer::iterator ActorIter; typedef ActorContainer::const_iterator ActorConstIter; @@ -203,16 +197,6 @@ public: void Add( Actor& child ); /** - * Inserts a child Actor to this Actor's child list - * @pre The child actor is not the same as the parent actor. - * @pre The child actor does not already have a parent. - * @param [in] index in childlist to insert child at - * @param [in] child The child. - * @post The child will be referenced by its parent. - */ - void Insert( unsigned int index, Actor& child ); - - /** * Removes a child Actor from this Actor. * @param [in] child The child. * @post The child will be unreferenced. @@ -233,7 +217,7 @@ public: /** * @copydoc Dali::Actor::GetChildAt */ - Dali::Actor GetChildAt( unsigned int index ) const; + ActorPtr GetChildAt( unsigned int index ) const; /** * Retrieve a reference to Actor's children. @@ -762,6 +746,19 @@ public: */ const Vector4& GetCurrentWorldColor() const; + /** + * @copydoc Dali::Actor::GetHierarchyDepth() + */ + int GetHierarchyDepth() const + { + if( mIsOnStage ) + { + return static_cast(mDepth); + } + + return -1; + } + public: // Size negotiation virtual functions @@ -1225,93 +1222,8 @@ public: */ void RemoveRenderer( unsigned int index ); -#ifdef DYNAMICS_SUPPORT - - // Dynamics - - /// @copydoc Dali::Actor::DisableDynamics - void DisableDynamics(); - - /// @copydoc Dali::Actor::EnableDynamics(Dali::DynamicsBodyConfig) - DynamicsBodyPtr EnableDynamics(DynamicsBodyConfigPtr bodyConfig); - - /// @copydoc Dali::Actor::GetDynamicsBody - DynamicsBodyPtr GetDynamicsBody() const; - - /// @copydoc Dali::Actor::AddDynamicsJoint(Dali::Actor,const Vector3&) - DynamicsJointPtr AddDynamicsJoint( ActorPtr attachedActor, const Vector3& offset ); - - /// @copydoc Dali::Actor::AddDynamicsJoint(Dali::Actor,const Vector3&,const Vector3&) - DynamicsJointPtr AddDynamicsJoint( ActorPtr attachedActor, const Vector3& offsetA, const Vector3& offsetB ); - - /// @copydoc Dali::Actor::GetNumberOfJoints - const int GetNumberOfJoints() const; - - /// @copydoc Dali::Actor::GetDynamicsJointByIndex - DynamicsJointPtr GetDynamicsJointByIndex( const int index ) const; - - /// @copydoc Dali::Actor::GetDynamicsJoint - DynamicsJointPtr GetDynamicsJoint( ActorPtr attachedActor ) const; - - /// @copydoc Dali::Actor::RemoveDynamicsJoint - void RemoveDynamicsJoint( DynamicsJointPtr joint ); - - /** - * Hold a reference to a DynamicsJoint - * @param[in] joint The joint - */ - void ReferenceJoint( DynamicsJointPtr joint ); - - /** - * Release a reference to a DynamicsJoint - * @param[in] joint The joint - */ - void ReleaseJoint( DynamicsJointPtr joint ); - - /** - * Set this actor to be the root actor in the dynamics simulation - * All children of the actor are added/removed from the simulation. - * @param[in] flag When true sets this actor to be the simulation world root actor and - * if OnStage() all dynamics enabled child actors are added to the simulation, - * when false stops this actor being the simulation root and if OnStage() all - * dynamics enabled child actors are removed from the simulation. - */ - void SetDynamicsRoot(bool flag); - -private: - /** - * Check if this actor is the root actor in the dynamics simulation - * @return true if this is the dynamics root actor. - */ - bool IsDynamicsRoot() const; - - /** - * Add actor to the dynamics simulation - * Invoked when the actor is staged, or it's parent becomes the simulation root - */ - void ConnectDynamics(); - - /** - * Remove actor from the dynamics simulation - * Invoked when the actor is unstaged, or it's parent stops being the the simulation root - */ - void DisconnectDynamics(); - - /** - * An actor in a DynamicsJoint relationship has been staged - * @param[in] actor The actor passed into AddDynamicsJoint() - */ - void AttachedActorOnStage( Dali::Actor actor ); - - /** - * An actor in a DynamicsJoint relationship has been unstaged - * @param[in] actor The actor passed into AddDynamicsJoint() - */ - void AttachedActorOffStage( Dali::Actor actor ); - -#endif // DYNAMICS_SUPPORT - public: + /** * Converts screen coordinates into the actor's coordinate system. * @note The actor coordinates are relative to the top-left (0.0, 0.0, 0.5) @@ -1580,26 +1492,22 @@ protected: /** * Called on a child during Add() when the parent actor is connected to the Stage. - * @param[in] stage The stage. - * @param[in] parentDepth The depth of the parent in the hierarchy - * @param[in] index If set, it is only used for positioning the actor within the parent's child list. + * @param[in] parentDepth The depth of the parent in the hierarchy. */ - void ConnectToStage( unsigned int parentDepth, int index = -1 ); + void ConnectToStage( unsigned int parentDepth ); /** * Helper for ConnectToStage, to recursively connect a tree of actors. * This is atomic i.e. not interrupted by user callbacks. - * @param[in] index If set, it is only used for positioning the actor within the parent's child list. - * @param[in] depth The depth in the hierarchy of the actor + * @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, int index = -1 ); + void RecursiveConnectToStage( ActorContainer& connectionList, unsigned int depth ); /** * Connect the Node associated with this Actor to the scene-graph. - * @param[in] index If set, it is only used for positioning the actor within the parent's child list. */ - void ConnectToSceneGraph( int index = -1 ); + void ConnectToSceneGraph(); /** * Helper for ConnectToStage, to notify a connected actor through the public API. @@ -1634,27 +1542,8 @@ protected: */ bool IsNodeConnected() const; - /** - * Calculate the size of the z dimension for a 2D size - * - * @param[in] size The 2D size (X, Y) to calculate Z from - * - * @return Return the Z dimension for this size - */ - float CalculateSizeZ( const Vector2& size ) const; - - /** - * Return the depth in the hierarchy of the actor. - * The value returned is only valid if the actor is on the stage. - * - * @return Depth of the actor in the hierarchy - */ - unsigned int GetDepth() const - { - return mDepth; - } - public: + // Default property extensions from Object /** @@ -1751,9 +1640,8 @@ private: /** * Set the actors parent. * @param[in] parent The new parent. - * @param[in] index If set, it is only used for positioning the actor within the parent's child list. */ - void SetParent( Actor* parent, int index = -1 ); + void SetParent( Actor* parent ); /** * Helper to create a Node for this Actor. @@ -1791,7 +1679,7 @@ private: * For use in external (CustomActor) derived classes. * This is called after the atomic ConnectToStage() traversal has been completed. */ - virtual void OnStageConnectionExternal( unsigned int depth ) + virtual void OnStageConnectionExternal( int depth ) { } @@ -1863,7 +1751,7 @@ private: /** * @brief Ensure the relayout data is allocated */ - void EnsureRelayoutData() const; + void EnsureRelayoutData(); /** * @brief Apply the size set policy to the input size @@ -1882,11 +1770,7 @@ protected: Vector3* mAnchorPoint; ///< NULL means AnchorPoint::DEFAULT. AnchorPoint is non-animatable struct RelayoutData; - mutable RelayoutData* mRelayoutData; ///< Struct to hold optional collection of relayout variables - -#ifdef DYNAMICS_SUPPORT - DynamicsData* mDynamicsData; ///< optional physics data -#endif + RelayoutData* mRelayoutData; ///< Struct to hold optional collection of relayout variables ActorGestureData* mGestureData; ///< Optional Gesture data. Only created when actor requires gestures @@ -1906,12 +1790,11 @@ protected: std::string mName; ///< Name of the actor unsigned int mId; ///< A unique ID to identify the actor starting from 1, and 0 is reserved - unsigned int mDepth :12; ///< The depth in the hierarchy of the actor. Only 4096 levels of depth are supported + unsigned short mDepth :12; ///< Cached: The depth in the hierarchy of the actor. Only 4096 levels of depth are supported const bool mIsRoot : 1; ///< Flag to identify the root actor const bool mIsRenderable : 1; ///< Flag to identify that this is a renderable 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 mIsDynamicsRoot : 1; ///< Flag to identify if this is the dynamics world root 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