#define DALI_ACTOR_H
/*
- * Copyright (c) 2016 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.
// EXTERNAL INCLUDES
#include <string>
+#include <cstdint> // uint32_t
// INTERNAL INCLUDES
#include <dali/public-api/actors/actor-enumerations.h>
#include <dali/public-api/object/property-index-ranges.h>
#include <dali/public-api/signals/dali-signal.h>
+#undef SIZE_WIDTH // Defined in later versions of cstdint but is used in this header
+
namespace Dali
{
/**
* @SINCE_1_0.0
*/
-class DALI_IMPORT_API Actor : public Handle
+class DALI_CORE_API Actor : public Handle
{
public:
INHERIT_ORIENTATION, ///< name "inheritOrientation", type bool @SINCE_1_0.0
INHERIT_SCALE, ///< name "inheritScale", type bool @SINCE_1_0.0
COLOR_MODE, ///< name "colorMode", type std::string @SINCE_1_0.0
- POSITION_INHERITANCE, ///< name "positionInheritance", type std::string @DEPRECATED_1_1.24 Use INHERIT_POSITION instead
DRAW_MODE, ///< name "drawMode", type std::string @SINCE_1_0.0
SIZE_MODE_FACTOR, ///< name "sizeModeFactor", type Vector3 @SINCE_1_0.0
WIDTH_RESIZE_POLICY, ///< name "widthResizePolicy", type String @SINCE_1_0.0
MAXIMUM_SIZE, ///< name "maximumSize", type Vector2 @SINCE_1_0.0
INHERIT_POSITION, ///< name "inheritPosition", type bool @SINCE_1_1.24
CLIPPING_MODE, ///< name "clippingMode", type String @SINCE_1_2_5
+
+ /**
+ * @brief The direction of the layout.
+ * @details Name "layoutDirection", type LayoutDirection::Type (Property::INTEGER) or Property::STRING.
+ * @SINCE_1_2.60
+ * @see LayoutDirection::Type for supported values.
+ */
+ LAYOUT_DIRECTION,
+
+ /**
+ * @brief Determines whether child actors inherit the layout direction from a parent.
+ * @details Name "layoutDirectionInheritance", type Property::BOOLEAN.
+ * @SINCE_1_2.60
+ */
+ INHERIT_LAYOUT_DIRECTION,
};
};
typedef Signal< void (Actor) > OnStageSignalType; ///< Stage connection signal type @SINCE_1_0.0
typedef Signal< void (Actor) > OffStageSignalType; ///< Stage disconnection signal type @SINCE_1_0.0
typedef Signal< void (Actor) > OnRelayoutSignalType; ///< Called when the actor is relaid out @SINCE_1_0.0
+ typedef Signal< void ( Actor, LayoutDirection::Type ) > LayoutDirectionChangedSignalType; ///< Layout direction changes signal type. @SINCE_1_2.60
// Creation
* @return The ID
* @pre The Actor has been initialized.
*/
- unsigned int GetId() const;
+ uint32_t GetId() const;
// Containment
* @return The number of children
* @pre The Actor has been initialized.
*/
- unsigned int GetChildCount() const;
+ uint32_t GetChildCount() const;
/**
* @brief Retrieve and child actor by index.
* @return The actor for the given index or empty handle if children not initialized
* @pre The Actor has been initialized.
*/
- Actor GetChildAt(unsigned int index) const;
+ Actor GetChildAt( uint32_t index ) const;
/**
* @brief Search through this actor's hierarchy for an actor with the given name.
* @return A handle to the actor if found, or an empty handle if not
* @pre The Actor has been initialized.
*/
- Actor FindChildById(const unsigned int id);
+ Actor FindChildById( const uint32_t id );
/**
* @brief Retrieves the actor's parent.
* @return The actor's target size
* @pre The actor has been initialized.
* @note This return is the value that was set using SetSize or the target size of an animation.
+ * It may not match the current value in some cases, i.e. when the animation is progressing or the maximum or minimum size is set.
*/
Vector3 GetTargetSize() const;
Vector3 GetCurrentWorldPosition() const;
/**
- * @DEPRECATED_1_1.24 Use SetInheritPosition instead
- * @brief Sets the actors position inheritance mode.
- *
- * The default is to inherit.
- * Switching this off means that using SetPosition() sets the actor's world position.
- * @SINCE_1_0.0
- * @param[in] mode to use
- * @pre The Actor has been initialized.
- * @see PositionInheritanceMode
- */
- void SetPositionInheritanceMode( PositionInheritanceMode mode ) DALI_DEPRECATED_API;
-
- /**
* @brief Sets whether a child actor inherits it's parent's position.
*
* Default is to inherit.
}
/**
- * @DEPRECATED_1_1.24 Use IsPositionInherited
- * @brief Returns the actors position inheritance mode.
- *
- * @SINCE_1_0.0
- * @return Return the position inheritance mode
- * @pre The Actor has been initialized.
- */
- PositionInheritanceMode GetPositionInheritanceMode() const DALI_DEPRECATED_API;
-
- /**
* @brief Returns whether the actor inherits its parent's position.
*
* @SINCE_1_1.24
*/
bool IsKeyboardFocusable() const;
+ /**
+ * @brief Raise actor above the next sibling actor.
+ *
+ * @SINCE_1_2.60
+ * @pre The Actor has been initialized.
+ * @pre The Actor has been parented.
+ */
+ void Raise();
+
+ /**
+ * @brief Lower the actor below the previous sibling actor.
+ *
+ * @SINCE_1_2.60
+ * @pre The Actor has been initialized.
+ * @pre The Actor has been parented.
+ */
+ void Lower();
+
+ /**
+ * @brief Raise actor above all other sibling actors.
+ *
+ * @SINCE_1_2.60
+ * @pre The Actor has been initialized.
+ * @pre The Actor has been parented.
+ */
+ void RaiseToTop();
+
+ /**
+ * @brief Lower actor to the bottom of all other sibling actors.
+ *
+ * @SINCE_1_2.60
+ * @pre The Actor has been initialized.
+ * @pre The Actor has been parented.
+ */
+ void LowerToBottom();
+
+ /**
+ * @brief Raises the actor above the target actor.
+ *
+ * @SINCE_1_2.60
+ * @param[in] target The target actor
+ * @pre The Actor has been initialized.
+ * @pre The Actor has been parented.
+ * @pre The target actor is a sibling.
+ */
+ void RaiseAbove( Actor target );
+
+ /**
+ * @brief Lower the actor to below the target actor.
+ *
+ * @SINCE_1_2.60
+ * @param[in] target The target actor
+ * @pre The Actor has been initialized.
+ * @pre The Actor has been parented.
+ * @pre The target actor is a sibling.
+ */
+ void LowerBelow( Actor target );
+
// SIZE NEGOTIATION
/**
* @brief Returns the minimum relayout size.
*
* @SINCE_1_0.0
- * @return Return the mininmum size
+ * @return Return the minimum size
*/
Vector2 GetMinimumSize();
* @SINCE_1_0.0
* @return The current depth in the hierarchy of the actor, or @c -1 if actor is not in the hierarchy
*/
- int GetHierarchyDepth();
+ int32_t GetHierarchyDepth();
public: // Renderer
* @pre The renderer must be initialized.
*
*/
- unsigned int AddRenderer( Renderer& renderer );
+ uint32_t AddRenderer( Renderer& renderer );
/**
* @brief Gets the number of renderers on this actor.
* @SINCE_1_0.0
* @return The number of renderers on this actor
*/
- unsigned int GetRendererCount() const;
+ uint32_t GetRendererCount() const;
/**
* @brief Gets a Renderer by index.
* @pre The index must be between 0 and GetRendererCount()-1
*
*/
- Renderer GetRendererAt( unsigned int index );
+ Renderer GetRendererAt( uint32_t index );
/**
* @brief Removes a renderer from the actor.
* @pre The index must be between 0 and GetRendererCount()-1
*
*/
- void RemoveRenderer( unsigned int index );
+ void RemoveRenderer( uint32_t index );
public: // Signals
*/
OnRelayoutSignalType& OnRelayoutSignal();
+ /**
+ * @brief This signal is emitted when the layout direction property of this or a parent actor is changed.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ * void YourCallbackName( Actor actor, LayoutDirection::Type type );
+ * @endcode
+ * actor: The actor, or child of actor, whose layout direction has changed
+ * type: Whether the actor's layout direction property has changed or a parent's.
+ *
+ * @SINCE_1_2.60
+ * @return The signal to connect to
+ * @pre The Actor has been initialized.
+ */
+ LayoutDirectionChangedSignalType& LayoutDirectionChangedSignal();
+
public: // Not intended for application developers
/// @cond internal