Efl: Move evas size hints to Efl.Gfx.Size.Hint

This includes:
- align
- min (now content_min)
- request
- max
- padding (now margin)
- weight

This does NOT include:
- display mode (compress, expand... a hint used by naviframe only).
This commit is contained in:
Jean-Philippe Andre 2016-06-08 16:09:38 +09:00
parent cfa739fbf6
commit 7872690e73
7 changed files with 504 additions and 303 deletions

View File

@ -1,4 +1,5 @@
#define EFL_GFX_FILTER_BETA
#define EFL_GFX_SIZE_HINT_PROTECTED
#include "edje_private.h"
@ -913,7 +914,7 @@ _edje_recalc_do(Edje *ed)
ed->recalc_hints = EINA_FALSE;
edje_obj_size_min_calc(ed->obj, &w, &h);
evas_obj_size_hint_min_set(ed->obj, w, h);
efl_gfx_size_hint_content_min_set(ed->obj, w, h);
}
if (!ed->collection) return;
@ -2938,7 +2939,7 @@ _edje_part_recalc_single(Edje *ed,
evas_obj_smart_need_recalculate_set(ep->object, 1);
evas_obj_smart_calculate(ep->object);
evas_obj_size_hint_min_get(ep->object, &lminw, &lminh);
efl_gfx_size_hint_content_min_get(ep->object, &lminw, &lminh);
if (((Edje_Part_Description_Table *)chosen_desc)->table.min.h)
{
if (lminw > minw) minw = lminw;
@ -2956,7 +2957,7 @@ _edje_part_recalc_single(Edje *ed,
evas_obj_smart_need_recalculate_set(ep->object, 1);
evas_obj_smart_calculate(ep->object);
evas_obj_size_hint_min_get(ep->object, &lminw, &lminh);
efl_gfx_size_hint_content_min_get(ep->object, &lminw, &lminh);
if (((Edje_Part_Description_Box *)chosen_desc)->box.min.h)
{
if (lminw > minw) minw = lminw;

View File

@ -39,6 +39,7 @@ extern "C" {
#ifdef EFL_EFL_BUILD
# define EFL_PACK_LAYOUT_PROTECTED
# define EFL_EVENT_PROTECTED
# define EFL_GFX_SIZE_HINT_PROTECTED
#endif
/**

View File

@ -3,6 +3,7 @@ import efl_gfx_types;
interface Efl.Gfx.Size.Hint
{
methods {
/* FIXME prefix hint_ */
@property base {
set {
[[Set the hint for an object's base size used with stepping calculation
@ -22,6 +23,7 @@ interface Efl.Gfx.Size.Hint
h: int; [[The base height.]]
}
}
/* FIXME prefix hint_ */
@property step {
set {
[[Set the hint for an object stepping used with sizing calculation.
@ -41,6 +43,7 @@ interface Efl.Gfx.Size.Hint
h: int; [[The stepping height (0 disables).]]
}
}
/* FIXME prefix hint_ */
@property aspect {
[[Defines the aspect ratio to respect when scaling this object.
@ -80,5 +83,152 @@ interface Efl.Gfx.Size.Hint
*/
}
}
@property hint_max {
[[Hints on the object's maximum size.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
The object container is in charge of fetching this property and
placing the object accordingly.
Values -1 will be treated as unset hint components, when
queried by managers.
Note: Smart objects (such as elementary) can have their own
size hint policy. So calling this API may or may not affect
the size of smart objects.
]]
values {
w: int; [[Integer to use as the maximum width hint.]]
h: int; [[Integer to use as the maximum height hint.]]
}
}
@property hint_request {
[[Hints for the object's optimum size.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Values 0 will be treated as unset hint components, when
queried by managers.
Note: This property is meant to be set by applications and not by
EFL itself. Use this to request a specific size (treated as minimum
size).
]]
values {
w: int; [[Integer to use as the preferred width hint.]]
h: int; [[Integer to use as the preferred height hint.]]
}
}
@property hint_content_min @protected {
[[Internal hints for an object's minimum size.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Values 0 will be treated as unset hint components, when
queried by managers.
Note: This property is internal and meant for widget developers to
define the absolute minimum size of the object. EFL itself sets
this size internally, so any change to it from an application
might be ignored. Use @.hint_request instead.
]]
values {
w: int; [[Integer to use as the minimum width hint.]]
h: int; [[Integer to use as the minimum height hint.]]
}
}
@property hint_margin {
[[Hints for an object's margin or padding space.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
The object container is in charge of fetching this property and
placing the object accordingly.
Note: Smart objects (such as elementary) can have their own
size hint policy. So calling this API may or may not affect
the size of smart objects.
]]
/*
@image html padding-hints.png
@image rtf padding-hints.png
@image latex padding-hints.eps
*/
values {
l: int; [[Integer to specify left padding.]]
r: int; [[Integer to specify right padding.]]
t: int; [[Integer to specify top padding.]]
b: int; [[Integer to specify bottom padding.]]
}
}
@property hint_weight {
[[Hints for an object's weight.
This is a hint on how a container object should resize a given
child within its area. Containers may adhere to the simpler
logic of just expanding the child object's dimensions to fit
its own (see the #EVAS_HINT_EXPAND helper weight macro) or
the complete one of taking each child's weight hint as real
weights to how much of its size to allocate for them in each
axis. A container is supposed to, after normalizing the
weights of its children (with weight hints), distribut
the space it has to layout them by those factors -- most
weighted children get larger in this process than the least
ones.
Accepted values are zero or positive values. Some containers might
use this hint as a boolean, but some others might consider it as a
proportion, see documentation of each container.
Note: Default weight hint values are 0.0, for both axis.
]]
values {
x: double; [[Non-negative double value to use as horizontal weight hint.]]
y: double; [[Non-negative double value to use as vertical weight hint.]]
}
}
@property hint_align {
[[Hints for an object's alignment.
These are hints on how to align an object inside the
boundaries of a container/manager. Accepted values are in
the 0.0 to 1.0 range, with the special value #EVAS_HINT_FILL
used to specify "justify" or "fill" by some users. In this
case, maximum size hints should be enforced with higher
priority, if they are set. Also, any padding hint set on
objects should add up to the alignment space on the final
scene composition.
See documentation of possible users: in Evas, they are the
\@ref Evas_Object_Box "box" and \@ref Evas_Object_Table "table"
smart objects.
For the horizontal component, 0.0 means to the left, 1.0
means to the right. Analogously, for the vertical component,
0.0 to the top, 1.0 means to the bottom.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Default alignment hint values are 0.5, for both axes.
]]
/*
@image html alignment-hints.png
@image rtf alignment-hints.png
@image latex alignment-hints.eps
*/
values {
x: double; [[Double, ranging from 0.0 to 1.0 or with the special value
#EVAS_HINT_FILL, to use as horizontal alignment hint.]]
y: double; [[Double, ranging from 0.0 to 1.0 or with the special value
#EVAS_HINT_FILL, to use as vertical alignment hint.]]
}
}
/* FIXME: Also add hint_display_mode? */
}
}

View File

@ -26,7 +26,7 @@ _efl_ui_win_standard_eo_base_finalize(Eo *obj, void *pd EINA_UNUSED)
evas_object_del(obj);
return NULL;
}
evas_obj_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
efl_gfx_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
efl_pack(obj, bg);
efl_gfx_visible_set(bg, EINA_TRUE);

View File

@ -857,6 +857,250 @@ EAPI void evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
*/
EAPI Eina_Bool evas_object_visible_get(const Evas_Object *obj);
/**
* @brief Sets the hints for an object's maximum size.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* Values -1 will be treated as unset hint components, when queried by
* managers.
*
* @note Smart objects (such as elementary) can have their own size hint
* policy. So calling this API may or may not affect the size of smart objects.
*
* @param[in] w Integer to use as the maximum width hint.
* @param[in] h Integer to use as the maximum height hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_max_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
/**
* @brief Retrieves the hints for an object's maximum size.
*
* These are hints on the maximum sizes @c obj should have. This is not a size
* enforcement in any way, it's just a hint that should be used whenever
* appropriate.
*
* @note Use @c null pointers on the hint components you're not interested in:
* they'll be ignored by the function.
*
* @param[out] w Integer to use as the maximum width hint.
* @param[out] h Integer to use as the maximum height hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_max_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
/**
* @brief Sets the hints for an object's optimum size.
*
* This is not a size enforcement in any way, it's just a hint that hould be
* used whenever appropriate.
*
* Values 0 will be treated as unset hint components, when queried by managers.
*
* @note Smart objects(such as elementary) can have their own size hint policy.
* So calling this API may or may not affect the size of smart objects.
*
* @param[in] w Integer to use as the preferred width hint.
* @param[in] h Integer to use as the preferred height hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_request_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
/**
* @brief Retrieves the hints for an object's optimum size.
*
* These are hints on the optimum sizes @c obj should have. This is not a size
* enforcement in any way, it's just a hint that should be used whenever
* appropriate.
*
* @note Use @c null pointers on the hint components you're not interested in:
* they'll be ignored by the function.
*
* @param[out] w Integer to use as the preferred width hint.
* @param[out] h Integer to use as the preferred height hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_request_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
/**
* @brief Sets the hints for an object's minimum size.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* Values 0 will be treated as unset hint components, when queried by managers.
*
* @note Smart objects(such as elementary) can have their own size hint policy.
* So calling this API may or may not affect the size of smart objects.
*
* @param[in] w Integer to use as the minimum width hint.
* @param[in] h Integer to use as the minimum height hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_min_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
/**
* @brief Retrieves the hints for an object's minimum size.
*
* These are hints on the minimum sizes @c obj should have. This is not a size
* enforcement in any way, it's just a hint that should be used whenever
* appropriate.
*
* @note Use @c null pointers on the hint components you're not interested in:
* they'll be ignored by the function.
*
* @param[out] w Integer to use as the minimum width hint.
* @param[out] h Integer to use as the minimum height hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_min_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
/**
* @brief Sets the hints for an object's padding space.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* @note Smart objects(such as elementary) can have their own size hint policy.
* So calling this API may or may not affect the size of smart objects.
*
* @param[in] l Integer to specify left padding.
* @param[in] r Integer to specify right padding.
* @param[in] t Integer to specify top padding.
* @param[in] b Integer to specify bottom padding.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_padding_set(Evas_Object *obj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b);
/**
* @brief Retrieves the hints for an object's padding space.
*
* Padding is extra space an object takes on each of its delimiting rectangle
* sides, in canvas units.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* @note Use @c null pointers on the hint components you're not interested in:
* they'll be ignored by the function.
*
* @param[out] l Integer to specify left padding.
* @param[out] r Integer to specify right padding.
* @param[out] t Integer to specify top padding.
* @param[out] b Integer to specify bottom padding.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_padding_get(const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b);
/**
* @brief Sets the hints for an object's weight.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* This is a hint on how a container object should resize a given child within
* its area. Containers may adhere to the simpler logic of just expanding the
* child object's dimensions to fit its own (see the #EVAS_HINT_EXPAND helper
* weight macro) or the complete one of taking each child's weight hint as real
* weights to how much of its size to allocate for them in each axis. A
* container is supposed to, after normalizing the weights of its children
* (with weight hints), distribut the space it has to layout them by those
* factors -- most weighted children get larger in this process than the least
* ones.
*
* @note Default weight hint values are 0.0, for both axis.
*
* @param[in] x Non-negative double value to use as horizontal weight hint.
* @param[in] y Non-negative double value to use as vertical weight hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_weight_set(Evas_Object *obj, double x, double y);
/**
* @brief Retrieves the hints for an object's weight.
*
* Accepted values are zero or positive values. Some users might use this hint
* as a boolean, but some might consider it as a proportion, see documentation
* of possible users, which in Evas are the @ref Evas_Object_Box "box" and @ref
* Evas_Object_Table "table" smart objects.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* @note Use @c null pointers on the hint components you're not interested in:
* they'll be ignored by the function.
*
* @note If @c obj is invalid, then the hint components will be set with 0.0.
*
* @param[out] x Non-negative double value to use as horizontal weight hint.
* @param[out] y Non-negative double value to use as vertical weight hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_weight_get(const Evas_Object *obj, double *x, double *y);
/**
* @brief Sets the hints for an object's alignment.
*
* These are hints on how to align an object inside the boundaries of a
* container/manager. Accepted values are in the 0.0 to 1.0 range, with the
* special value #EVAS_HINT_FILL used to specify "justify" or "fill" by some
* users. In this case, maximum size hints should be enforced with higher
* priority, if they are set. Also, any padding hint set on objects should add
* up to the alignment space on the final scene composition.
*
* See documentation of possible users: in Evas, they are the @ref
* Evas_Object_Box "box" and @ref Evas_Object_Table "table" smart objects.
*
* For the horizontal component, 0.0 means to the left, 1.0 means to the right.
* Analogously, for the vertical component, 0.0 to the top, 1.0 means to the
* bottom.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* @note Default alignment hint values are 0.5, for both axis.
*
* @param[in] x Double, ranging from 0.0 to 1.0 or with the special value
* #EVAS_HINT_FILL, to use as horizontal alignment hint.
* @param[in] y Double, ranging from 0.0 to 1.0 or with the special value
* #EVAS_HINT_FILL, to use as vertical alignment hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_align_set(Evas_Object *obj, double x, double y);
/**
* @brief Retrieves the hints for on object's alignment.
*
* This is not a size enforcement in any way, it's just a hint that should be
* used whenever appropriate.
*
* @note Use @c null pointers on the hint components you're not interested in:
* they'll be ignored by the function.
*
* @note If @c obj is invalid, then the hint components will be set with 0.5
*
* @param[out] x Double, ranging from 0.0 to 1.0 or with the special value
* #EVAS_HINT_FILL, to use as horizontal alignment hint.
* @param[out] y Double, ranging from 0.0 to 1.0 or with the special value
* #EVAS_HINT_FILL, to use as vertical alignment hint.
*
* @ingroup Evas_Object
*/
EAPI void evas_object_size_hint_align_get(const Evas_Object *obj, double *x, double *y);
/**
* @brief Sets the hints for an object's aspect ratio.
*

View File

@ -11,78 +11,6 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
legacy_ctor @protected {
[[Internal function. Do not use.]]
}
@property size_hint_max {
set {
[[Sets the hints for an object's maximum size.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Values -1 will be treated as unset hint components, when
queried by managers.
Note: Smart objects (such as elementary) can have their own
size hint policy. So calling this API may or may not affect
the size of smart objects.
]]
/* FIXME-doc
Example:
@dontinclude evas-hints.c
@skip evas_object_size_hint_max_set
@until return
In this example the maximum size hints change the behavior of an
Evas box when layouting its children. See the full @ref
Example_Evas_Size_Hints "example".
*/
}
get {
[[Retrieves the hints for an object's maximum size.
These are hints on the maximum sizes $obj should have. This is
not a size enforcement in any way, it's just a hint that
should be used whenever appropriate.
Note: Use $null pointers on the hint components you're not
interested in: they'll be ignored by the function.
]]
}
values {
w: Evas.Coord; [[Integer to use as the maximum width hint.]]
h: Evas.Coord; [[Integer to use as the maximum height hint.]]
}
}
@property size_hint_request {
set {
[[Sets the hints for an object's optimum size.
This is not a size enforcement in any way, it's just a hint
that hould be used whenever appropriate.
Values 0 will be treated as unset hint components, when
queried by managers.
Note: Smart objects(such as elementary) can have their own
size hint policy. So calling this API may or may not affect
the size of smart objects.
]]
}
get {
[[Retrieves the hints for an object's optimum size.
These are hints on the optimum sizes $obj should have.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Use $null pointers on the hint components you're not
interested in: they'll be ignored by the function.
]]
}
values {
w: Evas.Coord; [[Integer to use as the preferred width hint.]]
h: Evas.Coord; [[Integer to use as the preferred height hint.]]
}
}
@property type {
set {
[[Sets the type of the given Evas object.]]
@ -113,47 +41,6 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
type: string; [[The type of the object.]]
}
}
@property size_hint_min {
set {
[[Sets the hints for an object's minimum size.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Values 0 will be treated as unset hint components, when
queried by managers.
Note: Smart objects(such as elementary) can have their own
size hint policy. So calling this API may or may not affect
the size of smart objects.
]]
/* FIXME-doc
Example:
@dontinclude evas-hints.c
@skip evas_object_size_hint_min_set
@until return
In this example the minimum size hints change the behavior of an
Evas box when layouting its children. See the full @ref
Example_Evas_Size_Hints "example".
*/
}
get {
[[Retrieves the hints for an object's minimum size.
These are hints on the minimum sizes $obj should have. This
is not a size enforcement in any way, it's just a hint that
should be used whenever appropriate.
Note: Use $null pointers on the hint components you're not
interested in: they'll be ignored by the function.
]]
}
values {
w: Evas.Coord; [[Integer to use as the minimum width hint.]]
h: Evas.Coord; [[Integer to use as the minimum height hint.]]
}
}
@property pointer_mode {
set {
[[Set pointer behavior.
@ -381,55 +268,6 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
clip: Evas.Object @nonull; [[The object to clip $obj by.]]
}
}
@property size_hint_padding {
set {
[[Sets the hints for an object's padding space.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Smart objects(such as elementary) can have their own
size hint policy. So calling this API may or may not affect
the size of smart objects.
]]
}
get {
[[Retrieves the hints for an object's padding space.
Padding is extra space an object takes on each of its
delimiting rectangle sides, in canvas units.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Use $null pointers on the hint components you're not
interested in: they'll be ignored by the function.
]]
/* FIXME-doc
This space will be rendered
transparent, naturally, as in the following figure:
@image html padding-hints.png
@image rtf padding-hints.png
@image latex padding-hints.eps
---
Example:
@dontinclude evas-hints.c
@skip evas_object_size_hint_padding_set
@until return
In this example the padding hints change the behavior of an Evas box
when layouting its children. See the full @ref
Example_Evas_Size_Hints "example".
*/
}
values {
l: Evas.Coord; [[Integer to specify left padding.]]
r: Evas.Coord; [[Integer to specify right padding.]]
t: Evas.Coord; [[Integer to specify top padding.]]
b: Evas.Coord; [[Integer to specify bottom padding.]]
}
}
@property repeat_events {
set {
[[Set whether an Evas object is to repeat events.
@ -458,62 +296,6 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
not ($false).]]
}
}
@property size_hint_weight {
set {
[[Sets the hints for an object's weight.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
This is a hint on how a container object should resize a given
child within its area. Containers may adhere to the simpler
logic of just expanding the child object's dimensions to fit
its own (see the #EVAS_HINT_EXPAND helper weight macro) or
the complete one of taking each child's weight hint as real
weights to how much of its size to allocate for them in each
axis. A container is supposed to, after normalizing the
weights of its children (with weight hints), distribut
the space it has to layout them by those factors -- most
weighted children get larger in this process than the least
ones.
Note: Default weight hint values are 0.0, for both axis.
]]
/* FIXME-doc
Example:
@dontinclude evas-hints.c
@skip evas_object_size_hint_weight_set
@until return
In this example the weight hints change the behavior of an Evas box
when layouting its children. See the full @ref
Example_Evas_Size_Hints "example".
*/
}
get {
[[Retrieves the hints for an object's weight.
Accepted values are zero or positive values. Some users might
use this hint as a boolean, but some might consider it as a
proportion, see documentation of possible users, which in
Evas are the \@ref Evas_Object_Box "box" and
\@ref Evas_Object_Table "table" smart objects.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Use $null pointers on the hint components you're not
interested in: they'll be ignored by the function.
Note: If $obj is invalid, then the hint components will be
set with 0.0.
]]
}
values {
x: double; [[Non-negative double value to use as horizontal weight hint.]]
y: double; [[Non-negative double value to use as vertical weight hint.]]
}
}
@property name {
set {
[[Sets the name of the given Evas object to the given name.
@ -700,69 +482,6 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
detection or not. The default value is false.]]
}
}
@property size_hint_align {
set {
[[Sets the hints for an object's alignment.
These are hints on how to align an object inside the
boundaries of a container/manager. Accepted values are in
the 0.0 to 1.0 range, with the special value #EVAS_HINT_FILL
used to specify "justify" or "fill" by some users. In this
case, maximum size hints should be enforced with higher
priority, if they are set. Also, any padding hint set on
objects should add up to the alignment space on the final
scene composition.
See documentation of possible users: in Evas, they are the
\@ref Evas_Object_Box "box" and \@ref Evas_Object_Table "table"
smart objects.
For the horizontal component, 0.0 means to the left, 1.0
means to the right. Analogously, for the vertical component,
0.0 to the top, 1.0 means to the bottom.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Default alignment hint values are 0.5, for both axis.
]]
/* FIXME-doc
See the following figure:
@image html alignment-hints.png
@image rtf alignment-hints.png
@image latex alignment-hints.eps
---
Example:
@dontinclude evas-hints.c
@skip evas_object_size_hint_align_set
@until return
In this example the alignment hints change the behavior of an Evas
box when layouting its children. See the full @ref
Example_Evas_Size_Hints "example".
*/
}
get {
[[Retrieves the hints for on object's alignment.
This is not a size enforcement in any way, it's just a hint
that should be used whenever appropriate.
Note: Use $null pointers on the hint components you're not
interested in: they'll be ignored by the function.
Note: If $obj is invalid, then the hint components will be
set with 0.5
]]
}
values {
x: double; [[Double, ranging from 0.0 to 1.0 or with the special value
#EVAS_HINT_FILL, to use as horizontal alignment hint.]]
y: double; [[Double, ranging from 0.0 to 1.0 or with the special value
#EVAS_HINT_FILL, to use as vertical alignment hint.]]
}
}
@property propagate_events {
set {
[[Set whether events on a smart object's member should get
@ -915,6 +634,7 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
parent: Evas.Object; [[The parent smart object of $obj or $null.]]
}
}
/* FIXME: is this really necessary? */
@property size_hint_display_mode {
get {
[[Retrieves the hints for an object's display mode
@ -1180,6 +900,18 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
Efl.Gfx.Stack.lower;
Efl.Gfx.Size.Hint.aspect.set;
Efl.Gfx.Size.Hint.aspect.get;
Efl.Gfx.Size.Hint.hint_align.set;
Efl.Gfx.Size.Hint.hint_align.get;
Efl.Gfx.Size.Hint.hint_content_min.set;
Efl.Gfx.Size.Hint.hint_content_min.get;
Efl.Gfx.Size.Hint.hint_max.set;
Efl.Gfx.Size.Hint.hint_max.get;
Efl.Gfx.Size.Hint.hint_margin.set;
Efl.Gfx.Size.Hint.hint_margin.get;
Efl.Gfx.Size.Hint.hint_request.set;
Efl.Gfx.Size.Hint.hint_request.get;
Efl.Gfx.Size.Hint.hint_weight.set;
Efl.Gfx.Size.Hint.hint_weight.get;
}
events {
/* FIXME: remove events from Efl.Input.Interface */
@ -1205,6 +937,7 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
del; [[Object Being Deleted (called before Free) ]]
hold; [[Events go on/off hold ]]
changed,size,hints; [[Size hints changed event ]]
/* FIXME: move to image */
image,preloaded; [[Image has been preloaded ]]
image,resize; [[Image resize ]]
image,unloaded; [[Image data has been unloaded (by some mechanism in

View File

@ -1,4 +1,5 @@
#define EVAS_OBJECT_PROTECTED
#define EFL_GFX_SIZE_HINT_PROTECTED
#include "evas_common_private.h"
#include "evas_private.h"
@ -1104,7 +1105,7 @@ _evas_object_size_hint_display_mode_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Prot
}
EOLIAN static void
_evas_object_size_hint_min_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *w, Evas_Coord *h)
_evas_object_efl_gfx_size_hint_hint_content_min_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *w, Evas_Coord *h)
{
if ((!obj->size_hints) || obj->delete_me)
{
@ -1117,7 +1118,7 @@ _evas_object_size_hint_min_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Dat
}
EOLIAN static void
_evas_object_size_hint_min_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h)
_evas_object_efl_gfx_size_hint_hint_content_min_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h)
{
if (obj->delete_me)
return;
@ -1131,7 +1132,7 @@ _evas_object_size_hint_min_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas
}
EOLIAN static void
_evas_object_size_hint_max_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *w, Evas_Coord *h)
_evas_object_efl_gfx_size_hint_hint_max_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *w, Evas_Coord *h)
{
if ((!obj->size_hints) || obj->delete_me)
{
@ -1144,7 +1145,7 @@ _evas_object_size_hint_max_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Dat
}
EOLIAN static void
_evas_object_size_hint_max_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h)
_evas_object_efl_gfx_size_hint_hint_max_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h)
{
if (obj->delete_me)
return;
@ -1158,7 +1159,7 @@ _evas_object_size_hint_max_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas
}
EOLIAN static void
_evas_object_size_hint_request_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *w, Evas_Coord *h)
_evas_object_efl_gfx_size_hint_hint_request_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *w, Evas_Coord *h)
{
if ((!obj->size_hints) || obj->delete_me)
{
@ -1171,7 +1172,7 @@ _evas_object_size_hint_request_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected
}
EOLIAN static void
_evas_object_size_hint_request_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h)
_evas_object_efl_gfx_size_hint_hint_request_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w, Evas_Coord h)
{
if (obj->delete_me)
return;
@ -1215,7 +1216,7 @@ _evas_object_efl_gfx_size_hint_aspect_set(Eo *eo_obj, Evas_Object_Protected_Data
}
EOLIAN static void
_evas_object_size_hint_align_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, double *x, double *y)
_evas_object_efl_gfx_size_hint_hint_align_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, double *x, double *y)
{
if ((!obj->size_hints) || obj->delete_me)
{
@ -1228,7 +1229,7 @@ _evas_object_size_hint_align_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_D
}
EOLIAN static void
_evas_object_size_hint_align_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, double x, double y)
_evas_object_efl_gfx_size_hint_hint_align_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, double x, double y)
{
if (obj->delete_me)
return;
@ -1242,7 +1243,7 @@ _evas_object_size_hint_align_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, do
}
EOLIAN static void
_evas_object_size_hint_weight_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, double *x, double *y)
_evas_object_efl_gfx_size_hint_hint_weight_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, double *x, double *y)
{
if ((!obj->size_hints) || obj->delete_me)
{
@ -1255,7 +1256,7 @@ _evas_object_size_hint_weight_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_
}
EOLIAN static void
_evas_object_size_hint_weight_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, double x, double y)
_evas_object_efl_gfx_size_hint_hint_weight_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, double x, double y)
{
if (obj->delete_me)
return;
@ -1269,7 +1270,7 @@ _evas_object_size_hint_weight_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, d
}
EOLIAN static void
_evas_object_size_hint_padding_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b)
_evas_object_efl_gfx_size_hint_hint_margin_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b)
{
if ((!obj->size_hints) || obj->delete_me)
{
@ -1286,7 +1287,7 @@ _evas_object_size_hint_padding_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected
}
EOLIAN static void
_evas_object_size_hint_padding_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b)
_evas_object_efl_gfx_size_hint_hint_margin_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b)
{
if (obj->delete_me)
return;
@ -1726,11 +1727,11 @@ _evas_object_eo_base_dbg_info_get(Eo *eo_obj, Evas_Object_Protected_Data *obj EI
efl_gfx_position_get(eo_obj, &x, &y);
efl_gfx_size_get(eo_obj, &w, &h);
scale = evas_obj_scale_get(eo_obj);
evas_obj_size_hint_min_get(eo_obj, &minw, &minh);
evas_obj_size_hint_max_get(eo_obj, &maxw, &maxh);
evas_obj_size_hint_request_get(eo_obj, &requestw, &requesth);
evas_obj_size_hint_align_get(eo_obj, &dblx, &dbly);
evas_obj_size_hint_weight_get(eo_obj, &dblw, &dblh);
efl_gfx_size_hint_content_min_get(eo_obj, &minw, &minh);
efl_gfx_size_hint_max_get(eo_obj, &maxw, &maxh);
efl_gfx_size_hint_request_get(eo_obj, &requestw, &requesth);
efl_gfx_size_hint_align_get(eo_obj, &dblx, &dbly);
efl_gfx_size_hint_weight_get(eo_obj, &dblw, &dblh);
efl_gfx_color_get(eo_obj, &r, &g, &b, &a);
focus = evas_obj_focus_get(eo_obj);
m = evas_obj_pointer_mode_get(eo_obj);
@ -2145,5 +2146,76 @@ evas_object_size_hint_aspect_get(const Evas_Object *obj, Evas_Aspect_Control *as
efl_gfx_size_hint_aspect_get(obj, aspect, w, h);
}
#include "canvas/evas_object.eo.c"
EAPI void
evas_object_size_hint_max_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{
efl_gfx_size_hint_max_set(obj, w, h);
}
EAPI void
evas_object_size_hint_max_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
{
efl_gfx_size_hint_max_get(obj, w, h);
}
EAPI void
evas_object_size_hint_request_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{
efl_gfx_size_hint_request_set(obj, w, h);
}
EAPI void
evas_object_size_hint_request_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
{
efl_gfx_size_hint_request_get(obj, w, h);
}
EAPI void
evas_object_size_hint_min_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{
efl_gfx_size_hint_content_min_set(obj, w, h);
}
EAPI void
evas_object_size_hint_min_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
{
efl_gfx_size_hint_content_min_get(obj, w, h);
}
EAPI void
evas_object_size_hint_padding_set(Evas_Object *obj, Evas_Coord l, Evas_Coord r, Evas_Coord t, Evas_Coord b)
{
efl_gfx_size_hint_margin_set(obj, l, r, t, b);
}
EAPI void
evas_object_size_hint_padding_get(const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b)
{
efl_gfx_size_hint_margin_get(obj, l, r, t, b);
}
EAPI void
evas_object_size_hint_weight_set(Evas_Object *obj, double x, double y)
{
efl_gfx_size_hint_weight_set(obj, x, y);
}
EAPI void
evas_object_size_hint_weight_get(const Evas_Object *obj, double *x, double *y)
{
efl_gfx_size_hint_weight_get(obj, x, y);
}
EAPI void
evas_object_size_hint_align_set(Evas_Object *obj, double x, double y)
{
efl_gfx_size_hint_align_set(obj, x, y);
}
EAPI void
evas_object_size_hint_align_get(const Evas_Object *obj, double *x, double *y)
{
efl_gfx_size_hint_align_get(obj, x, y);
}
#include "canvas/evas_object.eo.c"