X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali%2Finternal%2Fevent%2Factors%2Factor-impl.h;h=b1050a74850b1662b0edabf336fdb3a827d10476;hb=032363632332b2657f0afe41d1b47ead0621b374;hp=eb0ee8219a6b7f6de9ccac7cb7fc0d722d305448;hpb=fbf46ff6a4ab07372fc9007b9c24c81d040f5b4e;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 eb0ee82..b1050a7 100644 --- a/dali/internal/event/actors/actor-impl.h +++ b/dali/internal/event/actors/actor-impl.h @@ -22,24 +22,28 @@ #include // INTERNAL INCLUDES +#include +#include +#include +#include +#include +#include +#include + #include #include + #include #include #include #include #include #include +#include +#include #include #include #include -#include -#include -#include -#include -#include -#include -#include namespace Dali { @@ -57,10 +61,6 @@ class RenderTask; class Renderer; class Scene; -using RendererPtr = IntrusivePtr; -using RendererContainer = std::vector; -using RendererIter = RendererContainer::iterator; - class ActorDepthTreeNode; using DepthNodeMemoryPool = Dali::Internal::MemoryPoolObjectAllocator; @@ -78,41 +78,6 @@ class Actor : public Object, public ActorParent { public: /** - * @brief Struct to hold an actor and a dimension - */ - struct ActorDimensionPair - { - /** - * @brief Constructor - * - * @param[in] newActor The actor to assign - * @param[in] newDimension The dimension to assign - */ - ActorDimensionPair(Actor* newActor, Dimension::Type newDimension) - : actor(newActor), - dimension(newDimension) - { - } - - /** - * @brief Equality operator - * - * @param[in] lhs The left hand side argument - * @param[in] rhs The right hand side argument - */ - bool operator==(const ActorDimensionPair& rhs) - { - return (actor == rhs.actor) && (dimension == rhs.dimension); - } - - Actor* actor; ///< The actor to hold - Dimension::Type dimension; ///< The dimension to hold - }; - - using ActorDimensionStack = std::vector; - -public: - /** * Create a new actor. * @return A smart-pointer to the newly allocated Actor. */ @@ -170,7 +135,7 @@ public: bool IsRenderable() const { // inlined as this is called a lot in hit testing - return mRenderers && !mRenderers->empty(); + return mRenderers && !mRenderers->IsEmpty(); } /** @@ -192,12 +157,17 @@ public: /** * @copydoc Dali::Internal::ActorParent::Add() */ - void Add(Actor& child) override; + void Add(Actor& child, bool notify = true) override; /** * @copydoc Dali::Internal::ActorParent::Remove() */ - void Remove(Actor& child) override; + void Remove(Actor& child, bool notify = true) override; + + /** + * @copydoc Dali::DevelActor::SwitchParent() + */ + void SwitchParent(Actor& newParent); /** * @copydoc Dali::Actor::Unparent @@ -254,6 +224,23 @@ public: Rect<> CalculateScreenExtents() const; /** + * @copydoc DevelActor::SetNeedGesturePropagation. + */ + void SetNeedGesturePropagation(bool propagation) + { + mNeedGesturePropagation = propagation; + } + + /** + * Retrieve need gesture propagation value + * @return The actor's need gesture propagation value. + */ + bool NeedGesturePropagation() const + { + return mNeedGesturePropagation; + } + + /** * Sets the size of an actor. * This does not interfere with the actors scale factor. * @param [in] width The new width. @@ -278,13 +265,6 @@ public: void SetSize(const Vector2& size); /** - * Sets the update size for an actor. - * - * @param[in] size The size to set. - */ - void SetSizeInternal(const Vector2& size); - - /** * Sets the size of an actor. * This does not interfere with the actors scale factor. * @param [in] size The new size. @@ -292,13 +272,6 @@ public: void SetSize(const Vector3& size); /** - * Sets the update size for an actor. - * - * @param[in] size The size to set. - */ - void SetSizeInternal(const Vector3& size); - - /** * Set the width component of the Actor's size. * @param [in] width The new width component. */ @@ -370,6 +343,13 @@ public: const Vector3& GetCurrentAnchorPoint() const; /** + * If the position uses the anchor point, return the anchor point, otherwise + * return top left. + * @return The anchor point for positioning. + */ + Vector3 GetAnchorPointForPosition() const; + + /** * Sets the position of the Actor. * The coordinates are relative to the Actor's parent. * The Actor's z position will be set to 0.0f. @@ -664,6 +644,41 @@ public: } /** + * Sets whether an actor should be enabled all user interaction including touch, focus and activation. + * This value have higher priority over the sensitve and focusable in negative action, + * which means IsSensitive() or IsFocusable() and enable is false, actor will not emits touch or focus event. + * An actor is enabled by default. + * + * If the application wishes to temporarily disable user interaction: + * @code + * actor.SetUserInteractionEnabled(false); + * @endcode + * + * Then, to re-enable user interaction, the application should call: + * @code + * actor.SetUserInteractionEnabled(true); + * @endcode + * + * @see IsSensitive(), IsHittable(), IsKeyboardFocusable() and IsTouchFocusable(). + * @note If an actor's disabled, child still can be enabled. + * @param[in] enabled true to enable user interaction, false otherwise. + */ + void SetUserInteractionEnabled(bool enabled) + { + mUserInteractionEnabled = enabled; + } + + /** + * Query whether an actor is enabled user interaction. + * @see SetSensitive(bool) + * @return true, if user interaction is enabled, false otherwise. + */ + bool IsUserInteractionEnabled() const + { + return mUserInteractionEnabled; + } + + /** * @copydoc Dali::Actor::SetDrawMode */ void SetDrawMode(DrawMode::Type drawMode); @@ -754,11 +769,20 @@ public: * * @return The depth used for hit-testing and renderer sorting */ - uint32_t GetSortingDepth() + inline uint32_t GetSortingDepth() { return mSortedDepth; } + /** + * Set the actor's sorted depth. Used during recreation of depth tree + * @param[in] sortedDepth the new sorted depth + */ + inline void SetSortingDepth(uint32_t sortedDepth) + { + mSortedDepth = sortedDepth; + } + public: // Size negotiation virtual functions @@ -822,16 +846,6 @@ public: virtual bool RelayoutDependentOnChildren(Dimension::Type dimension = Dimension::ALL_DIMENSIONS); /** - * @brief Determine if this actor is dependent on it's children for relayout. - * - * Called from deriving classes - * - * @param dimension The dimension(s) to check for - * @return Return if the actor is dependent on it's children - */ - virtual bool RelayoutDependentOnChildrenBase(Dimension::Type dimension = Dimension::ALL_DIMENSIONS); - - /** * @brief Calculate the size for a child * * @param[in] child The child actor to calculate the size for @@ -878,24 +892,6 @@ public: void NegotiateSize(const Vector2& size, RelayoutContainer& container); /** - * @brief Set whether size negotiation should use the assigned size of the actor - * during relayout for the given dimension(s) - * - * @param[in] use Whether the assigned size of the actor should be used - * @param[in] dimension The dimension(s) to set. Can be a bitfield of multiple dimensions - */ - void SetUseAssignedSize(bool use, Dimension::Type dimension = Dimension::ALL_DIMENSIONS); - - /** - * @brief Returns whether size negotiation should use the assigned size of the actor - * during relayout for a single dimension - * - * @param[in] dimension The dimension to get - * @return Return whether the assigned size of the actor should be used. If more than one dimension is requested, just return the first one found - */ - bool GetUseAssignedSize(Dimension::Type dimension) const; - - /** * @copydoc Dali::Actor::SetResizePolicy() */ void SetResizePolicy(ResizePolicy::Type policy, Dimension::Type dimension = Dimension::ALL_DIMENSIONS); @@ -906,26 +902,6 @@ public: ResizePolicy::Type GetResizePolicy(Dimension::Type dimension) const; /** - * @copydoc Dali::Actor::SetSizeScalePolicy() - */ - void SetSizeScalePolicy(SizeScalePolicy::Type policy); - - /** - * @copydoc Dali::Actor::GetSizeScalePolicy() - */ - SizeScalePolicy::Type GetSizeScalePolicy() const; - - /** - * @copydoc Dali::Actor::SetDimensionDependency() - */ - void SetDimensionDependency(Dimension::Type dimension, Dimension::Type dependency); - - /** - * @copydoc Dali::Actor::GetDimensionDependency() - */ - Dimension::Type GetDimensionDependency(Dimension::Type dimension) const; - - /** * @brief Set the size negotiation relayout enabled on this actor * * @param[in] relayoutEnabled Boolean to enable or disable relayout @@ -941,6 +917,7 @@ public: /** * @brief Mark an actor as having it's layout dirty + * @note Only called from RelayoutController * * @param dirty Whether to mark actor as dirty or not * @param dimension The dimension(s) to mark as dirty @@ -949,6 +926,7 @@ public: /** * @brief Return if any of an actor's dimensions are marked as dirty + * @note Only called from RelayoutController * * @param dimension The dimension(s) to check * @return Return if any of the requested dimensions are dirty @@ -957,6 +935,7 @@ public: /** * @brief Returns if relayout is enabled and the actor is not dirty + * @note Only called from RelayoutController * * @return Return if it is possible to relayout the actor */ @@ -964,6 +943,7 @@ public: /** * @brief Returns if relayout is enabled and the actor is dirty + * @note Only called from RelayoutController * * @return Return if it is required to relayout the actor */ @@ -986,6 +966,7 @@ public: /** * @brief Determine if this actor is dependent on it's parent for relayout + * @note Only called from RelayoutController * * @param dimension The dimension(s) to check for * @return Return if the actor is dependent on it's parent @@ -994,6 +975,7 @@ public: /** * @brief Determine if this actor has another dimension depedent on the specified one + * @note Only called from RelayoutController * * @param dimension The dimension to check for * @param dependentDimension The dimension to check for dependency with @@ -1002,63 +984,6 @@ public: bool RelayoutDependentOnDimension(Dimension::Type dimension, Dimension::Type dependentDimension); /** - * @brief Calculate the size of a dimension - * - * @param[in] dimension The dimension to calculate the size for - * @param[in] maximumSize The upper bounds on the size - * @return Return the calculated size for the dimension - */ - float CalculateSize(Dimension::Type dimension, const Vector2& maximumSize); - - /** - * Negotiate a dimension based on the size of the parent - * - * @param[in] dimension The dimension to negotiate on - * @return Return the negotiated size - */ - float NegotiateFromParent(Dimension::Type dimension); - - /** - * Negotiate a dimension based on the size of the parent. Fitting inside. - * - * @param[in] dimension The dimension to negotiate on - * @return Return the negotiated size - */ - float NegotiateFromParentFit(Dimension::Type dimension); - - /** - * Negotiate a dimension based on the size of the parent. Flooding the whole space. - * - * @param[in] dimension The dimension to negotiate on - * @return Return the negotiated size - */ - float NegotiateFromParentFlood(Dimension::Type dimension); - - /** - * @brief Negotiate a dimension based on the size of the children - * - * @param[in] dimension The dimension to negotiate on - * @return Return the negotiated size - */ - float NegotiateFromChildren(Dimension::Type dimension); - - /** - * Set the negotiated dimension value for the given dimension(s) - * - * @param negotiatedDimension The value to set - * @param dimension The dimension(s) to set the value for - */ - void SetNegotiatedDimension(float negotiatedDimension, Dimension::Type dimension = Dimension::ALL_DIMENSIONS); - - /** - * Return the value of negotiated dimension for the given dimension - * - * @param dimension The dimension to retrieve - * @return Return the value of the negotiated dimension - */ - float GetNegotiatedDimension(Dimension::Type dimension) const; - - /** * @brief Set the padding for a dimension * * @param[in] padding Padding for the dimension. X = start (e.g. left, bottom), y = end (e.g. right, top) @@ -1075,22 +1000,6 @@ public: Vector2 GetPadding(Dimension::Type dimension) const; /** - * Return the actor size for a given dimension - * - * @param[in] dimension The dimension to retrieve the size for - * @return Return the size for the given dimension - */ - float GetSize(Dimension::Type dimension) const; - - /** - * Return the natural size of the actor for a given dimension - * - * @param[in] dimension The dimension to retrieve the size for - * @return Return the natural size for the given dimension - */ - float GetNaturalSize(Dimension::Type dimension) const; - - /** * @brief Return the amount of size allocated for relayout * * May include padding @@ -1101,21 +1010,6 @@ public: float GetRelayoutSize(Dimension::Type dimension) const; /** - * @brief If the size has been negotiated return that else return normal size - * - * @param[in] dimension The dimension to retrieve - * @return Return the size - */ - float GetLatestSize(Dimension::Type dimension) const; - - /** - * Apply the negotiated size to the actor - * - * @param[in] container The container to fill with actors that require further relayout - */ - void SetNegotiatedSize(RelayoutContainer& container); - - /** * @brief Flag the actor as having it's layout dimension negotiated. * * @param[in] negotiated The status of the flag to set. @@ -1146,7 +1040,7 @@ public: float GetWidthForHeightBase(float height); /** - * @brief Calculate the size for a child + * @brief provides the Actor implementation of CalculateChildSize * * @param[in] child The child actor to calculate the size for * @param[in] dimension The dimension to calculate the size for. E.g. width or height. @@ -1155,18 +1049,12 @@ public: float CalculateChildSizeBase(const Dali::Actor& child, Dimension::Type dimension); /** - * @brief Set the preferred size for size negotiation - * - * @param[in] size The preferred size to set - */ - void SetPreferredSize(const Vector2& size); - - /** - * @brief Return the preferred size used for size negotiation + * @brief Determine if this actor is dependent on it's children for relayout. * - * @return Return the preferred size + * @param dimension The dimension(s) to check for + * @return Return if the actor is dependent on it's children */ - Vector2 GetPreferredSize() const; + bool RelayoutDependentOnChildrenBase(Dimension::Type dimension = Dimension::ALL_DIMENSIONS); /** * @copydoc Dali::Actor::SetMinimumSize @@ -1214,7 +1102,7 @@ public: void RemoveRenderer(uint32_t index); /** - * Set BlendEquation at each renderer that added on this Actor. + * @brief Set BlendEquation at each renderer that added on this Actor. */ void SetBlendEquation(DevelBlendEquation::Type blendEquation); @@ -1223,6 +1111,16 @@ public: */ DevelBlendEquation::Type GetBlendEquation() const; + /** + * @brief Set this Actor is transparent or not without any affection on the child Actors. + */ + void SetTransparent(bool transparent); + + /** + * @brief Get this Actor is transparent or not. + */ + bool IsTransparent() const; + public: /** * Converts screen coordinates into the actor's coordinate system. @@ -1308,6 +1206,40 @@ public: } /** + * @copydoc Dali::Actor::SetKeyboardFocusableChildren() + */ + void SetKeyboardFocusableChildren(bool focusable) + { + mKeyboardFocusableChildren = focusable; + } + + /** + * @copydoc Dali::Actor::AreChildrenKeyBoardFocusable() + */ + bool AreChildrenKeyBoardFocusable() const + { + return mKeyboardFocusableChildren; + } + + /** + * Set whether this view can focus by touch. + * @param[in] focusable focuable by touch. + */ + void SetTouchFocusable(bool focusable) + { + mTouchFocusable = focusable; + } + + /** + * This returns whether this actor can focus by touch. + * @return true if this actor can focus by touch. + */ + bool IsTouchFocusable() const + { + return mTouchFocusable; + } + + /** * Query whether the application or derived actor type requires intercept touch events. * @return True if intercept touch events are required. */ @@ -1350,7 +1282,7 @@ public: */ bool IsHittable() const { - return IsSensitive() && IsVisible() && (GetCurrentWorldColor().a > FULLY_TRANSPARENT) && IsNodeConnected(); + return (IsUserInteractionEnabled()) && IsSensitive() && IsVisible() && (GetCurrentWorldColor().a > FULLY_TRANSPARENT) && IsNodeConnected(); } /** @@ -1529,31 +1461,6 @@ public: */ DevelActor::ChildOrderChangedSignalType& ChildOrderChangedSignal(); - /** - * Connects a callback function with the object's signals. - * @param[in] object The object providing the signal. - * @param[in] tracker Used to disconnect the signal. - * @param[in] signalName The signal to connect to. - * @param[in] functor A newly allocated FunctorDelegate. - * @return True if the signal was connected. - * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor. - */ - static bool DoConnectSignal(BaseObject* object, - ConnectionTrackerInterface* tracker, - const std::string& signalName, - FunctorDelegate* functor); - - /** - * Performs actions as requested using the action name. - * @param[in] object The object on which to perform the action. - * @param[in] actionName The action to perform. - * @param[in] attributes The attributes with which to perfrom this action. - * @return true if the action was done. - */ - static bool DoAction(BaseObject* object, - const std::string& actionName, - const Property::Map& attributes); - public: // For Animation @@ -1594,16 +1501,9 @@ protected: /** * 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. + * @param[in] notify Emits notification if set to true. */ - void ConnectToScene(uint32_t parentDepth); - - /** - * 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 RecursiveConnectToScene(ActorContainer& connectionList, uint32_t depth); + void ConnectToScene(uint32_t parentDepth, bool notify); /** * Connect the Node associated with this Actor to the scene-graph. @@ -1612,20 +1512,15 @@ protected: /** * Helper for ConnectToScene, to notify a connected actor through the public API. + * @param[in] notify Emits notification if set to true. */ - void NotifyStageConnection(); + void NotifyStageConnection(bool notify); /** * Called on a child during Remove() when the actor was previously on the Stage. + * @param[in] notify Emits notification if set to true. */ - void DisconnectFromStage(); - - /** - * Helper for DisconnectFromStage, to recursively disconnect a tree of actors. - * This is atomic i.e. not interrupted by user callbacks. - * @param[out] disconnectionList On return, the list of disconnected actors which require notification. - */ - void RecursiveDisconnectFromStage(ActorContainer& disconnectionList); + void DisconnectFromStage(bool notify); /** * Disconnect the Node associated with this Actor from the scene-graph. @@ -1634,8 +1529,9 @@ protected: /** * Helper for DisconnectFromStage, to notify a disconnected actor through the public API. + * @param[in] notify Emits notification if set to true. */ - void NotifyStageDisconnection(); + void NotifyStageDisconnection(bool notify); /** * When the Actor is OnScene, checks whether the corresponding Node is connected to the scene graph. @@ -1651,14 +1547,6 @@ public: */ void RebuildDepthTree(); -protected: - /** - * Traverse the actor tree, inserting actors into the depth tree in sibling order. - * @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& sceneGraphNodeDepths, int32_t& depthIndex); - public: // Default property extensions from Object @@ -1780,19 +1668,6 @@ private: }; }; - struct AnimatedSizeFlag - { - enum Type - { - CLEAR = 0, - WIDTH = 1, - HEIGHT = 2, - DEPTH = 4 - }; - }; - - struct Relayouter; - // Remove default constructor and copy constructor Actor() = delete; Actor(const Actor&) = delete; @@ -1801,8 +1676,9 @@ private: /** * Set the actor's parent. * @param[in] parent The new parent. + * @param[in] notify Emits notification if set to true. Default is true. */ - void SetParent(ActorParent* parent); + void SetParent(ActorParent* parent, bool notify = true); /** * For use in derived classes, called after Initialize() @@ -1886,19 +1762,6 @@ private: bool GetCurrentPropertyValue(Property::Index index, Property::Value& value) const; /** - * @brief Ensure the relayouter is allocated - */ - Relayouter& EnsureRelayouter(); - - /** - * @brief Apply the size set policy to the input size - * - * @param[in] size The size to apply the policy to - * @return Return the adjusted size - */ - Vector2 ApplySizeSetPolicy(const Vector2& size); - - /** * Retrieve the parent object of an Actor. * @return The parent object, or NULL if the Actor does not have a parent. */ @@ -1977,34 +1840,19 @@ private: } /** - * @brief Propagates layout direction recursively. - * @param[in] direction New layout direction. - */ - void InheritLayoutDirectionRecursively(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 Recursively emits the visibility-changed-signal on the actor tree. - * - * @param[in] visible The new visibility of the actor - * @param[in] type Whether the actor's visible property has changed or a parent's - */ - void EmitVisibilityChangedSignalRecursively(bool visible, - DevelActor::VisibilityChange::Type type); - protected: ActorParentImpl mParentImpl; ///< Implementation of ActorParent; + ActorSizer mSizer; ///< Implementation for managing actor size ActorParent* mParent; ///< Each actor (except the root) can have one parent Scene* mScene; ///< The scene the actor is added to RendererContainer* mRenderers; ///< Renderer container Vector3* mParentOrigin; ///< NULL means ParentOrigin::DEFAULT. ParentOrigin is non-animatable Vector3* mAnchorPoint; ///< NULL means AnchorPoint::DEFAULT. AnchorPoint is non-animatable - Relayouter* mRelayoutData; ///< Struct to hold optional collection of relayout variables ActorGestureData* mGestureData; ///< Optional Gesture data. Only created when actor requires gestures // Signals @@ -2020,16 +1868,13 @@ protected: Quaternion mTargetOrientation; ///< Event-side storage for orientation Vector4 mTargetColor; ///< Event-side storage for color - Vector3 mTargetSize; ///< Event-side storage for size (not a pointer as most actors will have a size) Vector3 mTargetPosition; ///< Event-side storage for position (not a pointer as most actors will have a position) Vector3 mTargetScale; ///< Event-side storage for scale - Vector3 mAnimatedSize; ///< Event-side storage for size animation Rect mTouchAreaOffset; ///< touch area offset (left, right, bottom, top) - ConstString mName; ///< Name of the actor - uint32_t mSortedDepth; ///< The sorted depth index. A combination of tree traversal and sibling order. - int16_t mDepth; ///< The depth in the hierarchy of the actor. Only 32,767 levels of depth are supported - uint16_t mUseAnimatedSize; ///< Whether the size is animated. + ConstString mName; ///< Name of the actor + uint32_t mSortedDepth; ///< The sorted depth index. A combination of tree traversal and sibling order. + 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 @@ -2037,8 +1882,9 @@ protected: 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 mKeyboardFocusableChildren : 1; ///< Whether the children of this actor can be focusable by keyboard navigation. + bool mTouchFocusable : 1; ///< Whether the actor should be focusable by touch 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. bool mInheritScale : 1; ///< Cached: Whether the parent's scale should be inherited. @@ -2046,12 +1892,14 @@ protected: 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. + bool mIsBlendEquationSet : 1; ///< Flag to identify whether the Blend equation is set + bool mNeedGesturePropagation : 1; ///< Whether the parent listens for gesture events or not + bool mUserInteractionEnabled : 1; ///< Whether the actor should be enabled user interaction. 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 ClippingMode::Type mClippingMode : 3; ///< Cached: Determines which clipping mode (if any) to use. DevelBlendEquation::Type mBlendEquation : 16; ///< Cached: Determines which blend equation will be used to render renderers. - bool mIsBlendEquationSet : 1; ///< Flag to identify whether the Blend equation is set private: static ActorContainer mNullChildren; ///< Empty container (shared by all actors, returned by GetChildren() const) @@ -2060,6 +1908,7 @@ private: struct SiblingHandler; friend class ActorParentImpl; // Allow impl to call private methods on actor + friend class ActorSizer; // Allow sizer to call private methods on actor }; } // namespace Internal