lib/efl/interfaces/efl_text.eo \
lib/efl/interfaces/efl_text_properties.eo \
lib/efl/interfaces/efl_gfx_base.eo \
+ lib/efl/interfaces/efl_gfx_stack.eo \
lib/efl/interfaces/efl_gfx_shape.eo \
lib/efl/interfaces/efl_gfx_gradient.eo \
lib/efl/interfaces/efl_gfx_gradient_linear.eo \
lib/efl/interfaces/efl_text.eo.hh \
lib/efl/interfaces/efl_text_properties.eo.hh \
lib/efl/interfaces/efl_gfx_base.eo.hh \
+ lib/efl/interfaces/efl_gfx_stack.eo.hh \
lib/efl/interfaces/efl_gfx_shape.eo.hh \
lib/efl/interfaces/efl_gfx_gradient.eo.hh \
lib/efl/interfaces/efl_gfx_gradient_linear.eo.hh \
#include "interfaces/efl_gfx_utils.h"
#include "interfaces/efl_gfx_base.eo.h"
+#include "interfaces/efl_gfx_stack.eo.h"
#include "interfaces/efl_gfx_shape.eo.h"
#include "interfaces/efl_gfx_gradient.eo.h"
#include "interfaces/efl_gfx_gradient_linear.eo.h"
--- /dev/null
+interface Efl.Gfx.Stack {
+ legacy_prefix: null;
+ properties {
+ layer {
+ set {
+ /*@
+ Sets the layer of its canvas that the given object will be part of.
+
+ If you don't use this function, you'll be dealing with an @b unique
+ layer of objects, the default one. Additional layers are handy when
+ you don't want a set of objects to interfere with another set with
+ regard to @b stacking. Two layers are completely disjoint in that
+ matter.
+
+ This is a low-level function, which you'd be using when something
+ should be always on top, for example.
+
+ @warning Be careful, it doesn't make sense to change the layer of
+ smart objects' children. Smart objects have a layer of their own,
+ which should contain all their children objects.
+
+ @see evas_object_layer_get() */
+ }
+ get {
+ /*@
+ Retrieves the layer of its canvas that the given object is part of.
+
+ @return Number of its layer
+
+ @see evas_object_layer_set() */
+ }
+ values {
+ short l; /*@ The number of the layer to place the object on.
+ Must be between #EVAS_LAYER_MIN and #EVAS_LAYER_MAX. */
+ }
+ }
+ below {
+ get {
+ /*@
+ Get the Evas object stacked right below @p obj
+
+ @return the #Efl_Gfx_Stack directly below @p obj, if any, or @c NULL,
+ if none
+
+ This function will traverse layers in its search, if there are
+ objects on layers below the one @p obj is placed at.
+
+ @see evas_object_layer_get()
+ @see evas_object_layer_set()
+ @see evas_object_below_get() */
+ return: Efl_Gfx_Stack * @warn_unused;
+ }
+ }
+ above {
+ get {
+ /*@
+ Get the Evas object stacked right above @p obj
+
+ @return the #Efl_Gfx_Stack directly above @p obj, if any, or @c NULL,
+ if none
+
+ This function will traverse layers in its search, if there are
+ objects on layers above the one @p obj is placed at.
+
+ @see evas_object_layer_get()
+ @see evas_object_layer_set()
+ @see evas_object_below_get() */
+ return: Efl_Gfx_Stack * @warn_unused;
+ }
+ }
+ }
+ methods {
+ stack_below {
+ /*@
+ Stack @p obj immediately below @p below
+
+ Objects, in a given canvas, are stacked in the order they get added
+ to it. This means that, if they overlap, the highest ones will
+ cover the lowest ones, in that order. This function is a way to
+ change the stacking order for the objects.
+
+ This function is intended to be used with <b>objects belonging to
+ the same layer</b> in a given canvas, otherwise it will fail (and
+ accomplish nothing).
+
+ If you have smart objects on your canvas and @p obj is a member of
+ one of them, then @p below must also be a member of the same
+ smart object.
+
+ Similarly, if @p obj is not a member of a smart object, @p below
+ must not be either.
+
+ @see evas_object_layer_get()
+ @see evas_object_layer_set()
+ @see evas_object_stack_below() */
+
+ params {
+ @in Efl_Gfx_Stack *below @nonull; /*@ the object below which to stack */
+ }
+ }
+ raise {
+ /*@
+ Raise @p obj to the top of its layer.
+
+ @p obj will, then, be the highest one in the layer it belongs
+ to. Object on other layers won't get touched.
+
+ @see evas_object_stack_above()
+ @see evas_object_stack_below()
+ @see evas_object_lower() */
+
+ }
+ stack_above {
+ /*@
+ Stack @p obj immediately above @p above
+
+ Objects, in a given canvas, are stacked in the order they get added
+ to it. This means that, if they overlap, the highest ones will
+ cover the lowest ones, in that order. This function is a way to
+ change the stacking order for the objects.
+
+ This function is intended to be used with <b>objects belonging to
+ the same layer</b> in a given canvas, otherwise it will fail (and
+ accomplish nothing).
+
+ If you have smart objects on your canvas and @p obj is a member of
+ one of them, then @p above must also be a member of the same
+ smart object.
+
+ Similarly, if @p obj is not a member of a smart object, @p above
+ must not be either.
+
+ @see evas_object_layer_get()
+ @see evas_object_layer_set()
+ @see evas_object_stack_below() */
+
+ params {
+ @in Efl_Gfx_Stack *above @nonull; /*@ the object above which to stack */
+ }
+ }
+ lower {
+ /*@
+ Lower @p obj to the bottom of its layer.
+
+ @p obj will, then, be the lowest one in the layer it belongs
+ to. Objects on other layers won't get touched.
+
+ @see evas_object_stack_above()
+ @see evas_object_stack_below()
+ @see evas_object_raise() */
+
+ }
+ }
+}
#include "interfaces/efl_text_properties.eo.c"
#include "interfaces/efl_gfx_base.eo.c"
+#include "interfaces/efl_gfx_stack.eo.c"
#include "interfaces/efl_gfx_shape.eo.c"
#include "interfaces/efl_gfx_gradient.eo.c"
#include "interfaces/efl_gfx_gradient_linear.eo.c"
*/
EAPI void evas_object_hide(Evas_Object *obj) EINA_ARG_NONNULL(1);
-
/**
*
* Sets the general/main color of the given Evas object to the given
*/
EAPI Eina_Bool evas_object_visible_get(const Evas_Object *obj);
+/**
+ *
+ * Sets the layer of its canvas that the given object will be part of.
+ *
+ * If you don't use this function, you'll be dealing with an @b unique
+ * layer of objects, the default one. Additional layers are handy when
+ * you don't want a set of objects to interfere with another set with
+ * regard to @b stacking. Two layers are completely disjoint in that
+ * matter.
+ *
+ * This is a low-level function, which you'd be using when something
+ * should be always on top, for example.
+ *
+ * @warning Be careful, it doesn't make sense to change the layer of
+ * smart objects' children. Smart objects have a layer of their own,
+ * which should contain all their children objects.
+ *
+ * @see evas_object_layer_get()
+ *
+ * @param[in] l The number of the layer to place the object on.
+Must be between #EVAS_LAYER_MIN and #EVAS_LAYER_MAX.
+ */
+EAPI void evas_object_layer_set(Evas_Object *obj, short l);
+
+/**
+ *
+ * Retrieves the layer of its canvas that the given object is part of.
+ *
+ * @return Number of its layer
+ *
+ * @see evas_object_layer_set()
+ *
+ */
+EAPI short evas_object_layer_get(const Evas_Object *obj);
+
+/**
+ *
+ * Get the Evas object stacked right below @p obj
+ *
+ * @return the #Evas_Object directly below @p obj, if any, or @c NULL,
+ * if none
+ *
+ * This function will traverse layers in its search, if there are
+ * objects on layers below the one @p obj is placed at.
+ *
+ * @see evas_object_layer_get()
+ * @see evas_object_layer_set()
+ * @see evas_object_below_get()
+ *
+ */
+EAPI Evas_Object *evas_object_below_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT;
+
+/**
+ *
+ * Get the Evas object stacked right above @p obj
+ *
+ * @return the #Evas_Object directly above @p obj, if any, or @c NULL,
+ * if none
+ *
+ * This function will traverse layers in its search, if there are
+ * objects on layers above the one @p obj is placed at.
+ *
+ * @see evas_object_layer_get()
+ * @see evas_object_layer_set()
+ * @see evas_object_below_get()
+ *
+ */
+EAPI Evas_Object *evas_object_above_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT;
+
+/**
+ *
+ * Stack @p obj immediately below @p below
+ *
+ * Objects, in a given canvas, are stacked in the order they get added
+ * to it. This means that, if they overlap, the highest ones will
+ * cover the lowest ones, in that order. This function is a way to
+ * change the stacking order for the objects.
+ *
+ * This function is intended to be used with <b>objects belonging to
+ * the same layer</b> in a given canvas, otherwise it will fail (and
+ * accomplish nothing).
+ *
+ * If you have smart objects on your canvas and @p obj is a member of
+ * one of them, then @p below must also be a member of the same
+ * smart object.
+ *
+ * Similarly, if @p obj is not a member of a smart object, @p below
+ * must not be either.
+ *
+ * @see evas_object_layer_get()
+ * @see evas_object_layer_set()
+ * @see evas_object_stack_below()
+ *
+ *
+ * @param[in] below the object below which to stack
+ */
+EAPI void evas_object_stack_below(Evas_Object *obj, Evas_Object *below) EINA_ARG_NONNULL(2);
+
+/**
+ *
+ * Raise @p obj to the top of its layer.
+ *
+ * @p obj will, then, be the highest one in the layer it belongs
+ * to. Object on other layers won't get touched.
+ *
+ * @see evas_object_stack_above()
+ * @see evas_object_stack_below()
+ * @see evas_object_lower()
+ *
+ *
+ */
+EAPI void evas_object_raise(Evas_Object *obj);
+
+/**
+ *
+ * Stack @p obj immediately above @p above
+ *
+ * Objects, in a given canvas, are stacked in the order they get added
+ * to it. This means that, if they overlap, the highest ones will
+ * cover the lowest ones, in that order. This function is a way to
+ * change the stacking order for the objects.
+ *
+ * This function is intended to be used with <b>objects belonging to
+ * the same layer</b> in a given canvas, otherwise it will fail (and
+ * accomplish nothing).
+ *
+ * If you have smart objects on your canvas and @p obj is a member of
+ * one of them, then @p above must also be a member of the same
+ * smart object.
+ *
+ * Similarly, if @p obj is not a member of a smart object, @p above
+ * must not be either.
+ *
+ * @see evas_object_layer_get()
+ * @see evas_object_layer_set()
+ * @see evas_object_stack_below()
+ *
+ *
+ * @param[in] above the object above which to stack
+ */
+EAPI void evas_object_stack_above(Evas_Object *obj, Evas_Object *above) EINA_ARG_NONNULL(2);
+
+/**
+ *
+ * Lower @p obj to the bottom of its layer.
+ *
+ * @p obj will, then, be the lowest one in the layer it belongs
+ * to. Objects on other layers won't get touched.
+ *
+ * @see evas_object_stack_above()
+ * @see evas_object_stack_below()
+ * @see evas_object_raise()
+ *
+ *
+ */
+EAPI void evas_object_lower(Evas_Object *obj);
+
#include "canvas/evas_common_interface.eo.legacy.h"
#include "canvas/evas_object.eo.legacy.h"
/* public functions */
+EAPI void
+evas_object_layer_set(Evas_Object *obj, short l)
+{
+ eo_do((Evas_Object *)obj, efl_gfx_stack_layer_set(l));
+}
+
EOLIAN void
-_evas_object_layer_set(Eo *eo_obj, Evas_Object_Protected_Data *obj EINA_UNUSED, short l)
+_evas_object_efl_gfx_stack_layer_set(Eo *eo_obj,
+ Evas_Object_Protected_Data *obj,
+ short l)
{
Evas *eo_e;
evas_object_inform_call_restack(eo_obj);
}
+EAPI short
+evas_object_layer_get(const Evas_Object *obj)
+{
+ short ret;
+
+ return eo_do_ret((Evas_Object *)obj, ret, efl_gfx_stack_layer_get());
+}
+
EOLIAN short
-_evas_object_layer_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
+_evas_object_efl_gfx_stack_layer_get(Eo *eo_obj EINA_UNUSED,
+ Evas_Object_Protected_Data *obj)
{
if (obj->smart.parent)
{
-abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx.Base)
+abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx.Base, Efl.Gfx.Stack)
{
eo_prefix: evas_obj;
data: Evas_Object_Protected_Data;
Evas_Coord h; /*@ Integer to use as aspect height ratio term. */
}
}
- layer {
- set {
- /*@
- Sets the layer of its canvas that the given object will be part of.
-
- If you don't use this function, you'll be dealing with an @b unique
- layer of objects, the default one. Additional layers are handy when
- you don't want a set of objects to interfere with another set with
- regard to @b stacking. Two layers are completely disjoint in that
- matter.
-
- This is a low-level function, which you'd be using when something
- should be always on top, for example.
-
- @warning Be careful, it doesn't make sense to change the layer of
- smart objects' children. Smart objects have a layer of their own,
- which should contain all their children objects.
-
- @see evas_object_layer_get() */
- }
- get {
- /*@
- Retrieves the layer of its canvas that the given object is part of.
-
- @return Number of its layer
-
- @see evas_object_layer_set() */
- }
- values {
- short l; /*@ The number of the layer to place the object on.
- Must be between #EVAS_LAYER_MIN and #EVAS_LAYER_MAX. */
- }
- }
clip {
set {
/*@
return: Evas_Object * @warn_unused;
}
}
- below {
- get {
- /*@
- Get the Evas object stacked right below @p obj
-
- @return the #Evas_Object directly below @p obj, if any, or @c NULL,
- if none
-
- This function will traverse layers in its search, if there are
- objects on layers below the one @p obj is placed at.
-
- @see evas_object_layer_get()
- @see evas_object_layer_set()
- @see evas_object_below_get() */
- return: Evas_Object * @warn_unused;
- }
- }
clipees {
get {
/*@
return: Evas_Object * @warn_unused;
}
}
- above {
- get {
- /*@
- Get the Evas object stacked right above @p obj
-
- @return the #Evas_Object directly above @p obj, if any, or @c NULL,
- if none
-
- This function will traverse layers in its search, if there are
- objects on layers above the one @p obj is placed at.
-
- @see evas_object_layer_get()
- @see evas_object_layer_set()
- @see evas_object_below_get() */
- return: Evas_Object * @warn_unused;
- }
- }
size_hint_display_mode {
get {
/*@
receiving the @p keyname events. */
}
}
- stack_below {
- /*@
- Stack @p obj immediately below @p below
-
- Objects, in a given canvas, are stacked in the order they get added
- to it. This means that, if they overlap, the highest ones will
- cover the lowest ones, in that order. This function is a way to
- change the stacking order for the objects.
-
- This function is intended to be used with <b>objects belonging to
- the same layer</b> in a given canvas, otherwise it will fail (and
- accomplish nothing).
-
- If you have smart objects on your canvas and @p obj is a member of
- one of them, then @p below must also be a member of the same
- smart object.
-
- Similarly, if @p obj is not a member of a smart object, @p below
- must not be either.
-
- @see evas_object_layer_get()
- @see evas_object_layer_set()
- @see evas_object_stack_below() */
-
- params {
- @in Evas_Object *below @nonull; /*@ the object below which to stack */
- }
- }
- raise {
- /*@
- Raise @p obj to the top of its layer.
-
- @p obj will, then, be the highest one in the layer it belongs
- to. Object on other layers won't get touched.
-
- @see evas_object_stack_above()
- @see evas_object_stack_below()
- @see evas_object_lower() */
-
- }
- stack_above {
- /*@
- Stack @p obj immediately above @p above
-
- Objects, in a given canvas, are stacked in the order they get added
- to it. This means that, if they overlap, the highest ones will
- cover the lowest ones, in that order. This function is a way to
- change the stacking order for the objects.
-
- This function is intended to be used with <b>objects belonging to
- the same layer</b> in a given canvas, otherwise it will fail (and
- accomplish nothing).
-
- If you have smart objects on your canvas and @p obj is a member of
- one of them, then @p above must also be a member of the same
- smart object.
-
- Similarly, if @p obj is not a member of a smart object, @p above
- must not be either.
-
- @see evas_object_layer_get()
- @see evas_object_layer_set()
- @see evas_object_stack_below() */
-
- params {
- @in Evas_Object *above @nonull; /*@ the object above which to stack */
- }
- }
smart_type_check @const {
/*@
Checks whether a given smart object or any of its smart object
present to trigger the event. */
}
}
- lower {
- /*@
- Lower @p obj to the bottom of its layer.
-
- @p obj will, then, be the lowest one in the layer it belongs
- to. Objects on other layers won't get touched.
-
- @see evas_object_stack_above()
- @see evas_object_stack_below()
- @see evas_object_raise() */
-
- }
clip_unset {
/*@
Disable/cease clipping on a clipped @p obj object.
Efl.Gfx.Base.color.get;
Efl.Gfx.Base.size.set;
Efl.Gfx.Base.size.get;
+ Efl.Gfx.Stack.layer.set;
+ Efl.Gfx.Stack.layer.get;
+ Efl.Gfx.Stack.below.get;
+ Efl.Gfx.Stack.above.get;
+ Efl.Gfx.Stack.stack_below;
+ Efl.Gfx.Stack.stack_above;
+ Efl.Gfx.Stack.raise;
+ Efl.Gfx.Stack.lower;
}
events {
mouse,in; /*@ Mouse In Event */
eo_do(eo_obj,
visible = efl_gfx_visible_get(),
- layer = evas_obj_layer_get(),
+ layer = efl_gfx_stack_layer_get(),
name = evas_obj_name_get(),
efl_gfx_position_get(&x, &y),
efl_gfx_size_get(&w, &h),
return NULL;
}
+EAPI void
+evas_object_raise(Evas_Object *obj)
+{
+ eo_do((Evas_Object *)obj, efl_gfx_stack_raise());
+}
+
EOLIAN void
-_evas_object_raise(Eo *eo_obj, Evas_Object_Protected_Data *obj)
+_evas_object_efl_gfx_stack_raise(Eo *eo_obj, Evas_Object_Protected_Data *obj)
{
evas_object_async_block(obj);
if (evas_object_intercept_call_raise(eo_obj, obj)) return;
}
}
+EAPI void
+evas_object_lower(Evas_Object *obj)
+{
+ eo_do((Evas_Object *)obj, efl_gfx_stack_lower());
+}
+
EOLIAN void
-_evas_object_lower(Eo *eo_obj, Evas_Object_Protected_Data *obj)
+_evas_object_efl_gfx_stack_lower(Eo *eo_obj, Evas_Object_Protected_Data *obj)
{
evas_object_async_block(obj);
if (evas_object_intercept_call_lower(eo_obj, obj)) return;
}
}
+EAPI void
+evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
+{
+ eo_do((Evas_Object *)obj, efl_gfx_stack_above(above));
+}
+
EOLIAN void
-_evas_object_stack_above(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *eo_above)
+_evas_object_efl_gfx_stack_stack_above(Eo *eo_obj, Evas_Object_Protected_Data *obj, Efl_Gfx_Stack *eo_above)
{
evas_object_async_block(obj);
if (!eo_above)
}
}
+EAPI void
+evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
+{
+ eo_do((Evas_Object *)obj, efl_gfx_stack_below(below));
+}
+
EOLIAN void
-_evas_object_stack_below(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *eo_below)
+_evas_object_efl_gfx_stack_stack_below(Eo *eo_obj, Evas_Object_Protected_Data *obj, Efl_Gfx_Stack *eo_below)
{
evas_object_async_block(obj);
if (!eo_below)
}
}
-EOLIAN Evas_Object *
-_evas_object_above_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
+EAPI Evas_Object *
+evas_object_above_get(const Evas_Object *obj)
+{
+ Evas_Object *ret;
+
+ return eo_do_ret((Evas_Object *)obj, ret, efl_gfx_stack_above_get());
+}
+
+EOLIAN Efl_Gfx_Stack *
+_evas_object_efl_gfx_stack_above_get(Eo *eo_obj EINA_UNUSED,
+ Evas_Object_Protected_Data *obj)
{
if (obj->smart.parent)
{
return NULL;
}
-EOLIAN Evas_Object *
-_evas_object_below_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
+EAPI Evas_Object *
+evas_object_below_get(const Evas_Object *obj)
+{
+ Evas_Object *ret;
+
+ return eo_do_ret((Evas_Object *)obj, ret, efl_gfx_stack_below_get());
+}
+
+EOLIAN Efl_Gfx_Stack *
+_evas_object_efl_gfx_stack_below_get(Eo *eo_obj EINA_UNUSED,
+ Evas_Object_Protected_Data *obj)
{
if (obj->smart.parent)
{