-interface Efl.Gfx.Size.Hint {
+import efl_gfx_types;
+
+interface Efl.Gfx.Size.Hint
+{
methods {
@property base {
set {
h: int; [[The stepping height (0 disables).]]
}
}
+ @property aspect {
+ [[Defines the aspect ratio to respect when scaling this object.
+
+ The aspect ratio is defined as the width / height ratio of the
+ object. Depending on the object and its container, this hint may
+ or may not be fully respected.
+
+ If any of the given aspect ratio terms are 0, the object's container
+ will ignore the aspect and scale this object to occupy the whole
+ available area, for any given policy.
+ ]]
+ /*
+ @image html any-policy.png
+ @image rtf any-policy.png
+ @image latex any-policy.eps
+
+ @image html aspect-control-none-neither.png
+ @image rtf aspect-control-none-neither.png
+ @image latex aspect-control-none-neither.eps
+
+ @image html aspect-control-both.png
+ @image rtf aspect-control-both.png
+ @image latex aspect-control-both.eps
+
+ @image html aspect-control-horizontal.png
+ @image rtf aspect-control-horizontal.png
+ @image latex aspect-control-horizontal.eps
+ */
+ values {
+ mode: Efl.Gfx.Size.Hint.Aspect; [[Mode of interpretation.]]
+ w: int;
+ h: int;
+
+ /* FIXME: do we want min/max like Edje instead??
+ min: double; [[Default: 0.0 (no preference).]]
+ max: double @optional; [[Default: 0.0, may be ignored.]]
+ */
+ }
+ }
}
}
updated_area: list <Eina.Rectangle>; [[A list of rectangles that were
updated in the canvas.]]
}
+
+enum Efl.Gfx.Size.Hint.Aspect
+{
+ [[Aspect types/policies for scaling size hints.
+
+ See also $Efl.Gfx.Size.Hint.aspect.
+ ]]
+
+ none = 0, [[No preference on either direction of the container
+ for aspect ratio control.]]
+ neither = 1, [[Same effect as disabling aspect ratio preference]]
+ horizontal = 2, [[Use all horizontal container space to place an object,
+ using the given aspect.]]
+ vertical = 3, [[Use all vertical container space to place an object, using
+ the given aspect.]]
+ both = 4 [[Use all horizontal and vertical container spaces to place an
+ object (never growing it out of those bounds), using the given
+ aspect.]]
+}
#define EVAS_EVENT_FLAG_ON_HOLD EFL_EVENT_FLAGS_ON_HOLD
#define EVAS_EVENT_FLAG_ON_SCROLL EFL_EVENT_FLAGS_ON_SCROLL
+typedef Efl_Gfx_Size_Hint_Aspect Evas_Aspect_Control; /**< Aspect types/policies for scaling size hints, used for evas_object_size_hint_aspect_set */
+
+#define EVAS_ASPECT_CONTROL_NONE EFL_GFX_SIZE_HINT_ASPECT_NONE
+#define EVAS_ASPECT_CONTROL_NEITHER EFL_GFX_SIZE_HINT_ASPECT_NEITHER
+#define EVAS_ASPECT_CONTROL_HORIZONTAL EFL_GFX_SIZE_HINT_ASPECT_HORIZONTAL
+#define EVAS_ASPECT_CONTROL_VERTICAL EFL_GFX_SIZE_HINT_ASPECT_VERTICAL
+#define EVAS_ASPECT_CONTROL_BOTH EFL_GFX_SIZE_HINT_ASPECT_BOTH
+
struct _Evas_Engine_Info /** Generic engine information. Generic info is useless */
{
int magic; /**< Magic number */
EAPI Eina_Bool evas_object_visible_get(const Evas_Object *obj);
/**
+ * @brief Sets the hints for an object's aspect ratio.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should be
+ * used whenever appropriate.
+ *
+ * If any of the given aspect ratio terms are 0, the object's container will
+ * ignore the aspect and scale @c obj to occupy the whole available area, for
+ * any given policy.
+ *
+ * @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] aspect The policy/type of aspect ratio to apply to @c obj.
+ * @param[in] w Integer to use as aspect width ratio term.
+ * @param[in] h Integer to use as aspect height ratio term.
+ *
+ * @ingroup Evas_Object
+ */
+EAPI void evas_object_size_hint_aspect_set(Evas_Object *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h);
+
+/**
+ * @brief Retrieves the hints for an object's aspect ratio.
+ *
+ * The different aspect ratio policies are documented in the
+ * #Evas_Aspect_Control type. A container respecting these size hints would
+ * resize its children accordingly to those policies.
+ *
+ * For any policy, if any of the given aspect ratio terms are 0, the object's
+ * container should ignore the aspect and scale @c obj to occupy the whole
+ * available area. If they are both positive integers, that proportion will be
+ * respected, under each scaling policy.
+ *
+ * @note Use @c null pointers on the hint components you're not interested in:
+ * they'll be ignored by the function.
+ *
+ * @param[out] aspect The policy/type of aspect ratio to apply to @c obj.
+ * @param[out] w Integer to use as aspect width ratio term.
+ * @param[out] h Integer to use as aspect height ratio term.
+ *
+ * @ingroup Evas_Object
+ */
+EAPI void evas_object_size_hint_aspect_get(const Evas_Object *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h);
+
+/**
*
* Sets the layer of its canvas that the given object will be part of.
*
import evas_types;
abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack,
- Efl.Animator, Efl.Input.Interface)
+ Efl.Animator, Efl.Input.Interface, Efl.Gfx.Size.Hint)
{
legacy_prefix: evas_object;
eo_prefix: evas_obj;
map: const(Evas.Map)*; [[The map.]]
}
}
- @property size_hint_aspect {
- set {
- [[Sets the hints for an object's aspect ratio.
-
- This is not a size enforcement in any way, it's just a hint
- that should be used whenever appropriate.
-
- If any of the given aspect ratio terms are 0, the object's
- container will ignore the aspect and scale $obj to occupy
- the whole available area, for any given policy.
-
- 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 aspect ratio.
-
- The different aspect ratio policies are documented in the
- #Evas_Aspect_Control type. A container respecting these size
- hints would resize its children accordingly to those policies.
-
- For any policy, if any of the given aspect ratio terms are 0,
- the object's container should ignore the aspect and scale $obj
- to occupy the whole available area. If they are both positive
- integers, that proportion will be respected, under each
- scaling policy.
-
- Note: Use $null pointers on the hint components you're not
- interested in: they'll be ignored by the function.
- ]]
- /* FIXME-doc
- These images illustrate some of the #Evas_Aspect_Control policies:
-
- @image html any-policy.png
- @image rtf any-policy.png
- @image latex any-policy.eps
-
- @image html aspect-control-none-neither.png
- @image rtf aspect-control-none-neither.png
- @image latex aspect-control-none-neither.eps
-
- @image html aspect-control-both.png
- @image rtf aspect-control-both.png
- @image latex aspect-control-both.eps
-
- @image html aspect-control-horizontal.png
- @image rtf aspect-control-horizontal.png
- @image latex aspect-control-horizontal.eps
-
- This is not a size enforcement in any way, it's just a hint that
- should be used whenever appropriate.
- ---
- Example:
- @dontinclude evas-aspect-hints.c
- @skip if (strcmp(ev->key, "c") == 0)
- @until }
-
- See the full @ref Example_Evas_Aspect_Hints "example".
- */
- }
- values {
- aspect: Evas.Aspect_Control; [[The policy/type of aspect ratio to apply to $obj.]]
- w: Evas.Coord; [[Integer to use as aspect width ratio term.]]
- h: Evas.Coord; [[Integer to use as aspect height ratio term.]]
- }
- }
@property clip {
set {
[[Clip one object to another.
Efl.Gfx.Stack.stack_above;
Efl.Gfx.Stack.raise;
Efl.Gfx.Stack.lower;
+ Efl.Gfx.Size.Hint.aspect.set;
+ Efl.Gfx.Size.Hint.aspect.get;
}
events {
/* FIXME: remove events from Efl.Input.Interface */
}
EOLIAN static void
-_evas_object_size_hint_aspect_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h)
+_evas_object_efl_gfx_size_hint_aspect_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Efl_Gfx_Size_Hint_Aspect *aspect, Evas_Coord *w, Evas_Coord *h)
{
if ((!obj->size_hints) || obj->delete_me)
{
}
EOLIAN static void
-_evas_object_size_hint_aspect_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h)
+_evas_object_efl_gfx_size_hint_aspect_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Efl_Gfx_Size_Hint_Aspect aspect, Evas_Coord w, Evas_Coord h)
{
if (obj->delete_me)
return;
obj->legacy = EINA_TRUE;
}
+/* legacy */
+
+EAPI void
+evas_object_size_hint_aspect_set(Evas_Object *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h)
+{
+ efl_gfx_size_hint_aspect_set(obj, aspect, w, h);
+}
+
+EAPI void
+evas_object_size_hint_aspect_get(const Evas_Object *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h)
+{
+ efl_gfx_size_hint_aspect_get(obj, aspect, w, h);
+}
+
#include "canvas/evas_object.eo.c"
type Evas.Modifier_Mask: ullong; [[An Evas modifier mask type]]
type Evas.Coord: int; [[A type for coordinates]]
-enum Evas.Aspect_Control {
- [[Aspect types/policies for scaling size hints, used for
- evas_object_size_hint_aspect_set()]]
- none = 0, [[Preference on scaling unset]]
- neither = 1, [[Same effect as unset preference on scaling]]
- horizontal = 2, [[Use all horizontal container space to place an object,
- using the given aspect]]
- vertical = 3, [[Use all vertical container space to place an object, using
- the given aspect]]
- both = 4 [[Use all horizontal and vertical container spaces to place an
- object (never growing it out of those bounds), using the given
- aspect]]
-}
enum Evas.Render_Op {
[[How the object should be rendered to output.]]