X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fdevel-api%2Factors%2Factor-devel.h;h=ff521def797b8100dd29c3dc2390324912d7e26e;hb=17f28cc04cbb2708a29a6ef7a353ce15fc434b2d;hp=20d136e52ee9ae75a7ec984e29c0afe58b1edb03;hpb=19ec3985c044a68f36ce2145db808338a97a498d;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/devel-api/actors/actor-devel.h b/dali/devel-api/actors/actor-devel.h index 20d136e..ff521de 100644 --- a/dali/devel-api/actors/actor-devel.h +++ b/dali/devel-api/actors/actor-devel.h @@ -2,7 +2,7 @@ #define DALI_ACTOR_DEVEL_H /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -20,6 +20,7 @@ // INTERNAL INCLUDES #include +#include namespace Dali { @@ -32,60 +33,62 @@ namespace Property enum Type { - PARENT_ORIGIN = Dali::Actor::Property::PARENT_ORIGIN, - PARENT_ORIGIN_X = Dali::Actor::Property::PARENT_ORIGIN_X, - PARENT_ORIGIN_Y = Dali::Actor::Property::PARENT_ORIGIN_Y, - PARENT_ORIGIN_Z = Dali::Actor::Property::PARENT_ORIGIN_Z, - ANCHOR_POINT = Dali::Actor::Property::ANCHOR_POINT, - ANCHOR_POINT_X = Dali::Actor::Property::ANCHOR_POINT_X, - ANCHOR_POINT_Y = Dali::Actor::Property::ANCHOR_POINT_Y, - ANCHOR_POINT_Z = Dali::Actor::Property::ANCHOR_POINT_Z, - SIZE = Dali::Actor::Property::SIZE, - SIZE_WIDTH = Dali::Actor::Property::SIZE_WIDTH, - SIZE_HEIGHT = Dali::Actor::Property::SIZE_HEIGHT, - SIZE_DEPTH = Dali::Actor::Property::SIZE_DEPTH, - POSITION = Dali::Actor::Property::POSITION, - POSITION_X = Dali::Actor::Property::POSITION_X, - POSITION_Y = Dali::Actor::Property::POSITION_Y, - POSITION_Z = Dali::Actor::Property::POSITION_Z, - WORLD_POSITION = Dali::Actor::Property::WORLD_POSITION, - WORLD_POSITION_X = Dali::Actor::Property::WORLD_POSITION_X, - WORLD_POSITION_Y = Dali::Actor::Property::WORLD_POSITION_Y, - WORLD_POSITION_Z = Dali::Actor::Property::WORLD_POSITION_Z, - ORIENTATION = Dali::Actor::Property::ORIENTATION, - WORLD_ORIENTATION = Dali::Actor::Property::WORLD_ORIENTATION, - SCALE = Dali::Actor::Property::SCALE, - SCALE_X = Dali::Actor::Property::SCALE_X, - SCALE_Y = Dali::Actor::Property::SCALE_Y, - SCALE_Z = Dali::Actor::Property::SCALE_Z, - WORLD_SCALE = Dali::Actor::Property::WORLD_SCALE, - VISIBLE = Dali::Actor::Property::VISIBLE, - COLOR = Dali::Actor::Property::COLOR, - COLOR_RED = Dali::Actor::Property::COLOR_RED, - COLOR_GREEN = Dali::Actor::Property::COLOR_GREEN, - COLOR_BLUE = Dali::Actor::Property::COLOR_BLUE, - COLOR_ALPHA = Dali::Actor::Property::COLOR_ALPHA, - WORLD_COLOR = Dali::Actor::Property::WORLD_COLOR, - WORLD_MATRIX = Dali::Actor::Property::WORLD_MATRIX, - NAME = Dali::Actor::Property::NAME, - SENSITIVE = Dali::Actor::Property::SENSITIVE, - LEAVE_REQUIRED = Dali::Actor::Property::LEAVE_REQUIRED, - INHERIT_ORIENTATION = Dali::Actor::Property::INHERIT_ORIENTATION, - INHERIT_SCALE = Dali::Actor::Property::INHERIT_SCALE, - COLOR_MODE = Dali::Actor::Property::COLOR_MODE, - POSITION_INHERITANCE = Dali::Actor::Property::POSITION_INHERITANCE, - DRAW_MODE = Dali::Actor::Property::DRAW_MODE, - SIZE_MODE_FACTOR = Dali::Actor::Property::SIZE_MODE_FACTOR, - WIDTH_RESIZE_POLICY = Dali::Actor::Property::WIDTH_RESIZE_POLICY, - HEIGHT_RESIZE_POLICY = Dali::Actor::Property::HEIGHT_RESIZE_POLICY, - SIZE_SCALE_POLICY = Dali::Actor::Property::SIZE_SCALE_POLICY, - WIDTH_FOR_HEIGHT = Dali::Actor::Property::WIDTH_FOR_HEIGHT, - HEIGHT_FOR_WIDTH = Dali::Actor::Property::HEIGHT_FOR_WIDTH, - PADDING = Dali::Actor::Property::PADDING, - MINIMUM_SIZE = Dali::Actor::Property::MINIMUM_SIZE, - MAXIMUM_SIZE = Dali::Actor::Property::MAXIMUM_SIZE, - INHERIT_POSITION = Dali::Actor::Property::INHERIT_POSITION, - CLIPPING_MODE = Dali::Actor::Property::CLIPPING_MODE, + PARENT_ORIGIN = Dali::Actor::Property::PARENT_ORIGIN, + PARENT_ORIGIN_X = Dali::Actor::Property::PARENT_ORIGIN_X, + PARENT_ORIGIN_Y = Dali::Actor::Property::PARENT_ORIGIN_Y, + PARENT_ORIGIN_Z = Dali::Actor::Property::PARENT_ORIGIN_Z, + ANCHOR_POINT = Dali::Actor::Property::ANCHOR_POINT, + ANCHOR_POINT_X = Dali::Actor::Property::ANCHOR_POINT_X, + ANCHOR_POINT_Y = Dali::Actor::Property::ANCHOR_POINT_Y, + ANCHOR_POINT_Z = Dali::Actor::Property::ANCHOR_POINT_Z, + SIZE = Dali::Actor::Property::SIZE, + SIZE_WIDTH = Dali::Actor::Property::SIZE_WIDTH, + SIZE_HEIGHT = Dali::Actor::Property::SIZE_HEIGHT, + SIZE_DEPTH = Dali::Actor::Property::SIZE_DEPTH, + POSITION = Dali::Actor::Property::POSITION, + POSITION_X = Dali::Actor::Property::POSITION_X, + POSITION_Y = Dali::Actor::Property::POSITION_Y, + POSITION_Z = Dali::Actor::Property::POSITION_Z, + WORLD_POSITION = Dali::Actor::Property::WORLD_POSITION, + WORLD_POSITION_X = Dali::Actor::Property::WORLD_POSITION_X, + WORLD_POSITION_Y = Dali::Actor::Property::WORLD_POSITION_Y, + WORLD_POSITION_Z = Dali::Actor::Property::WORLD_POSITION_Z, + ORIENTATION = Dali::Actor::Property::ORIENTATION, + WORLD_ORIENTATION = Dali::Actor::Property::WORLD_ORIENTATION, + SCALE = Dali::Actor::Property::SCALE, + SCALE_X = Dali::Actor::Property::SCALE_X, + SCALE_Y = Dali::Actor::Property::SCALE_Y, + SCALE_Z = Dali::Actor::Property::SCALE_Z, + WORLD_SCALE = Dali::Actor::Property::WORLD_SCALE, + VISIBLE = Dali::Actor::Property::VISIBLE, + COLOR = Dali::Actor::Property::COLOR, + COLOR_RED = Dali::Actor::Property::COLOR_RED, + COLOR_GREEN = Dali::Actor::Property::COLOR_GREEN, + COLOR_BLUE = Dali::Actor::Property::COLOR_BLUE, + COLOR_ALPHA = Dali::Actor::Property::COLOR_ALPHA, + WORLD_COLOR = Dali::Actor::Property::WORLD_COLOR, + WORLD_MATRIX = Dali::Actor::Property::WORLD_MATRIX, + NAME = Dali::Actor::Property::NAME, + SENSITIVE = Dali::Actor::Property::SENSITIVE, + LEAVE_REQUIRED = Dali::Actor::Property::LEAVE_REQUIRED, + INHERIT_ORIENTATION = Dali::Actor::Property::INHERIT_ORIENTATION, + INHERIT_SCALE = Dali::Actor::Property::INHERIT_SCALE, + COLOR_MODE = Dali::Actor::Property::COLOR_MODE, + RESERVED_PROPERTY_01 = Dali::Actor::Property::RESERVED_PROPERTY_01, + DRAW_MODE = Dali::Actor::Property::DRAW_MODE, + SIZE_MODE_FACTOR = Dali::Actor::Property::SIZE_MODE_FACTOR, + WIDTH_RESIZE_POLICY = Dali::Actor::Property::WIDTH_RESIZE_POLICY, + HEIGHT_RESIZE_POLICY = Dali::Actor::Property::HEIGHT_RESIZE_POLICY, + SIZE_SCALE_POLICY = Dali::Actor::Property::SIZE_SCALE_POLICY, + WIDTH_FOR_HEIGHT = Dali::Actor::Property::WIDTH_FOR_HEIGHT, + HEIGHT_FOR_WIDTH = Dali::Actor::Property::HEIGHT_FOR_WIDTH, + PADDING = Dali::Actor::Property::PADDING, + MINIMUM_SIZE = Dali::Actor::Property::MINIMUM_SIZE, + MAXIMUM_SIZE = Dali::Actor::Property::MAXIMUM_SIZE, + INHERIT_POSITION = Dali::Actor::Property::INHERIT_POSITION, + CLIPPING_MODE = Dali::Actor::Property::CLIPPING_MODE, + LAYOUT_DIRECTION = Dali::Actor::Property::LAYOUT_DIRECTION, + INHERIT_LAYOUT_DIRECTION = Dali::Actor::Property::INHERIT_LAYOUT_DIRECTION, /** * @brief Sets the sibling order of the actor so depth position can be defined within the same parent. @@ -94,20 +97,21 @@ enum Type * @note Raise, Lower, RaiseToTop, LowerToBottom, RaiseAbove and LowerBelow will override the * sibling order. The values set by this Property will likely change. */ - SIBLING_ORDER = CLIPPING_MODE + 1, + SIBLING_ORDER = INHERIT_LAYOUT_DIRECTION + 1, /** * @brief The opacity of the actor. * @details Name "opacity", type Property::FLOAT. */ - OPACITY = CLIPPING_MODE + 2, + OPACITY = INHERIT_LAYOUT_DIRECTION + 2, /** * @brief Returns the screen position of the Actor * @details Name "screenPosition", type Property::VECTOR2. Read-only * @note This assumes default camera and default render-task and the Z position is ZERO. + * @note The last known frame is used for the calculation. May not match a position value just set. */ - SCREEN_POSITION = CLIPPING_MODE + 3, + SCREEN_POSITION = INHERIT_LAYOUT_DIRECTION + 3, /** * @brief Determines whether the anchor point should be used to determine the position of the actor. @@ -116,19 +120,14 @@ enum Type * @note If false, then the top-left of the actor is used for the position. * @note Setting this to false will allow scaling or rotation around the anchor-point without affecting the actor's position. */ - POSITION_USES_ANCHOR_POINT = CLIPPING_MODE + 4, + POSITION_USES_ANCHOR_POINT = INHERIT_LAYOUT_DIRECTION + 4, /** - * @brief The direction of layout. - * @details Name "layoutDirection", type Property::INTEGER, @see LayoutDirection::Type for supported values. + * @brief Returns whether the actor is culled or not. + * @details Name "culled", type Property::BOOLEAN. Read-only + * @note True means that the actor is out of the view frustum. */ - LAYOUT_DIRECTION = CLIPPING_MODE + 5, - - /** - * @brief Determines whether child actors inherit the layout direction from a parent. - * @details Name "layoutDirectionInheritance", type Property::BOOLEAN. - */ - INHERIT_LAYOUT_DIRECTION = CLIPPING_MODE + 6 + CULLED = INHERIT_LAYOUT_DIRECTION + 5, }; } // namespace Property @@ -144,119 +143,93 @@ enum Type } // namespace VisibilityChange -namespace LayoutDirection -{ - -enum Type -{ - LTR, ///< Layout direction is from Left to Right direction. - RTL ///< Layout direction is from Right to Left direction. -}; - -} // namespace - typedef Signal< void ( Actor, bool, VisibilityChange::Type ) > VisibilityChangedSignalType; ///< Signal type of VisibilityChangedSignalType -typedef Signal< void ( Actor, LayoutDirection::Type ) > LayoutDirectionChangedSignalType; ///< Signal type of LayoutDirectionChangedSignal - /** - * @brief Raise actor above the next highest level of actor(s). - * - * @param[in] actor The Actor to raise - * @note Sibling order of actors within the parent will be updated automatically. - * Using this API means a limit of DevelLayer::SIBLING_ORDER_MULTIPLIER Actors. - * Initially actors added to a parent will have the same sibling order and shown in relation to insertion order. - * Raising this actor above actors with the same sibling order as each other will raise this actor above them. - * Once a raise or lower API is used that actor will then have an exclusive sibling order independent of insertion. + * @brief This signal is emitted when the visible property of this or a parent actor is changed. * + * A callback of the following type may be connected: + * @code + * void YourCallbackName( Actor actor, bool visible, VisibilityChange::Type& type ); + * @endcode + * actor: The actor, or child of actor, whose visibility has changed + * visible: Whether the actor is now visible or not + * type: Whether the actor's visible property has changed or a parent's. + * @return The signal to connect to + * @pre The Actor has been initialized. + * @note This signal is NOT emitted if the actor becomes transparent (or the reverse), it's only linked with Actor::Property::VISIBLE. */ -DALI_IMPORT_API void Raise( Actor actor ); +DALI_CORE_API VisibilityChangedSignalType& VisibilityChangedSignal( Actor actor ); /** - * @brief Lower the actor to underneath the level below actor(s). + * Calculates screen position and size. * - * @param[in] actor The Actor to lower - * @note Sibling order of actors within the parent will be updated automatically. - * Using this API means a limit of DevelLayer::SIBLING_ORDER_MULTIPLIER Actors. - * Lowering this actor below actors with the same sibling order as each other will lower this actor above them. - * Once a raise or lower API is used that actor will then have an exclusive sibling order independent of insertion. + * @return pair of two values, position of top-left corner on screen and size respectively. */ -DALI_IMPORT_API void Lower( Actor actor ); +DALI_CORE_API Rect<> CalculateScreenExtents( Actor actor ); -/** - * @brief Raise actor above all other actors. - * - * @param[in] actor The Actor to raise to the top - * @note Sibling order of actors within the parent will be updated automatically. - * Using this API means a limit of DevelLayer::SIBLING_ORDER_MULTIPLIER Actors. - * Once a raise or lower API is used that actor will then have an exclusive sibling order independent of insertion. - */ -DALI_IMPORT_API void RaiseToTop( Actor actor ); -/** - * @brief Lower actor to the bottom of all actors. - * - * @param[in] actor The Actor to lower to the bottom - * @note Sibling order of actors within the parent will be updated automatically. - * Using this API means a limit of DevelLayer::SIBLING_ORDER_MULTIPLIER Actors. - * Once a raise or lower API is used that actor will then have an exclusive sibling order independent of insertion. - */ -DALI_IMPORT_API void LowerToBottom( Actor actor ); -/** - * @brief Raise the actor to above the target actor. - * - * @param[in] actor The actor to raise - * @param[in] target Will be raised above this actor - * @note Sibling order of actors within the parent will be updated automatically. - * Actors on the level above the target actor will still be shown above this actor. - * Raising this actor above actors with the same sibling order as each other will raise this actor above them. - * Using this API means a limit of DevelLayer::SIBLING_ORDER_MULTIPLIER Actors. - * Once a raise or lower API is used that actor will then have an exclusive sibling order independent of insertion. - */ -DALI_IMPORT_API void RaiseAbove( Actor actor, Dali::Actor target ); +typedef Signal< void (Actor) > ChildChangedSignalType; ///< Called when the actor has a child added or removed /** - * @brief Lower the actor to below the target actor. + * @brief This signal is emitted when a child is added to this actor. + * + * A callback of the following type may be connected: + * @code + * void MyCallbackName( Actor child ); + * @endcode + * child: The child that has been added. * - * @param[in] actor The Actor to lower - * @param[in] target Will be lowered below this actor - * @note Sibling order of actors within the parent will be updated automatically. - * Using this API means a limit of DevelLayer::SIBLING_ORDER_MULTIPLIER Actors. - * Lowering this actor below actors with the same sibling order as each other will lower this actor above them. - * Once a raise or lower API is used that actor will then have an exclusive sibling order independent of insertion. + * @note Use this signal with caution. Changing the parent of the actor + * within this callback is possible, but DALi will prevent further signals + * being sent. + * + * @return The signal to connect to + * @pre The Actor has been initialized */ -DALI_IMPORT_API void LowerBelow( Actor actor, Dali::Actor target ); +DALI_CORE_API ChildChangedSignalType& ChildAddedSignal( Actor actor ); /** - * @brief This signal is emitted when the visible property of this or a parent actor is changed. + * @brief This signal is emitted when a child is removed from this actor. * * A callback of the following type may be connected: * @code - * void YourCallbackName( Actor actor, bool visible, VisibilityChange::Type& type ); + * void MyCallbackName( Actor child ); * @endcode - * actor: The actor, or child of actor, whose visibility has changed - * visible: Whether the actor is now visible or not - * type: Whether the actor's visible property has changed or a parent's. + * child: The child that has been removed. + * + * @note Use this signal with caution. Changing the parent of the actor + * within this callback is possible, but DALi will prevent further signals + * being sent. + * + * @note If the child actor is moved from one actor to another, then + * this signal will be emitted followed immediately by an + * ChildAddedSignal() on the new parent. + * * @return The signal to connect to - * @pre The Actor has been initialized. - * @note This signal is NOT emitted if the actor becomes transparent (or the reverse), it's only linked with Actor::Property::VISIBLE. + * @pre The Actor has been initialized */ -DALI_IMPORT_API VisibilityChangedSignalType& VisibilityChangedSignal( Actor actor ); +DALI_CORE_API ChildChangedSignalType& ChildRemovedSignal( Actor actor ); + + +typedef Signal< void (Actor) > ChildOrderChangedSignalType; ///< Used when the actor's children have changed order /** - * @brief This signal is emitted when the layout direction property of this or a parent actor is changed. + * @brief This signal is emitted when an actor's children change their sibling order * * A callback of the following type may be connected: * @code - * void YourCallbackName( Actor actor, LayoutDirection::Type type ); + * void MyCallbackName( Actor parent ); * @endcode - * actor: The actor, or child of actor, whose laytou direction has changed - * type: Whether the actor's layout direction property has changed or a parent's. + * parent The parent actor of the moved children + * * @return The signal to connect to - * @pre The Actor has been initialized. + * @pre The Actor has been initialized */ -DALI_IMPORT_API LayoutDirectionChangedSignalType& LayoutDirectionChangedSignal( Actor actor ); +DALI_CORE_API ChildOrderChangedSignalType& ChildOrderChangedSignal( Actor actor ); + + } // namespace DevelActor