[ATSPI] Add CalculateScreenExtents function
[platform/core/uifw/dali-core.git] / dali / devel-api / actors / actor-devel.h
index 254ca39..ff521de 100644 (file)
@@ -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 <dali/public-api/actors/actor.h>
+#include <dali/public-api/math/rect.h>
 
 namespace Dali
 {
@@ -73,7 +74,7 @@ enum Type
   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,
+  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,
@@ -108,6 +109,7 @@ enum Type
    * @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 = INHERIT_LAYOUT_DIRECTION + 3,
 
@@ -119,6 +121,13 @@ enum Type
    * @note Setting this to false will allow scaling or rotation around the anchor-point without affecting the actor's position.
    */
   POSITION_USES_ANCHOR_POINT = INHERIT_LAYOUT_DIRECTION + 4,
+
+  /**
+   * @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.
+   */
+  CULLED = INHERIT_LAYOUT_DIRECTION + 5,
 };
 
 } // namespace Property
@@ -150,7 +159,77 @@ typedef Signal< void ( Actor, bool, VisibilityChange::Type ) > VisibilityChanged
  * @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 VisibilityChangedSignalType& VisibilityChangedSignal( Actor actor );
+DALI_CORE_API VisibilityChangedSignalType& VisibilityChangedSignal( Actor actor );
+
+/**
+ * Calculates screen position and size.
+ *
+ * @return pair of two values, position of top-left corner on screen and size respectively.
+ */
+DALI_CORE_API Rect<> CalculateScreenExtents( Actor actor );
+
+
+
+typedef Signal< void (Actor) > ChildChangedSignalType; ///< Called when the actor has a child added or removed
+
+/**
+ * @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.
+ *
+ * @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_CORE_API ChildChangedSignalType& ChildAddedSignal( Actor actor );
+
+/**
+ * @brief This signal is emitted when a child is removed from this actor.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ *   void MyCallbackName( Actor child );
+ * @endcode
+ * 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
+ */
+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 an actor's children change their sibling order
+ *
+ * A callback of the following type may be connected:
+ * @code
+ *   void MyCallbackName( Actor parent );
+ * @endcode
+ * parent The parent actor of the moved children
+ *
+ * @return The signal to connect to
+ * @pre The Actor has been initialized
+ */
+DALI_CORE_API ChildOrderChangedSignalType& ChildOrderChangedSignal( Actor actor );
+
+
 
 } // namespace DevelActor