lv_obj_pos.h

Functions

void lv_obj_set_pos(struct _lv_obj_t *obj, lv_coord_t x, lv_coord_t y)

Set the position of an object relative to the set alignment.

Note

With default alignment it's the distance from the top left corner

Note

E.g. LV_ALIGN_CENTER alignment it's the offset from the center of the parent

Note

The position is interpreted on the content area of the parent

Note

The values can be set in pixel or in percentage of parent size with lv_pct(v)

Parameters:
  • obj -- pointer to an object

  • x -- new x coordinate

  • y -- new y coordinate

void lv_obj_set_x(struct _lv_obj_t *obj, lv_coord_t x)

Set the x coordinate of an object

Note

With default alignment it's the distance from the top left corner

Note

E.g. LV_ALIGN_CENTER alignment it's the offset from the center of the parent

Note

The position is interpreted on the content area of the parent

Note

The values can be set in pixel or in percentage of parent size with lv_pct(v)

Parameters:
  • obj -- pointer to an object

  • x -- new x coordinate

void lv_obj_set_y(struct _lv_obj_t *obj, lv_coord_t y)

Set the y coordinate of an object

Note

With default alignment it's the distance from the top left corner

Note

E.g. LV_ALIGN_CENTER alignment it's the offset from the center of the parent

Note

The position is interpreted on the content area of the parent

Note

The values can be set in pixel or in percentage of parent size with lv_pct(v)

Parameters:
  • obj -- pointer to an object

  • y -- new y coordinate

void lv_obj_set_size(struct _lv_obj_t *obj, lv_coord_t w, lv_coord_t h)

Set the size of an object.

Note

possible values are: pixel simple set the size accordingly LV_SIZE_CONTENT set the size to involve all children in the given direction LV_SIZE_PCT(x) to set size in percentage of the parent's content area size (the size without paddings). x should be in [0..1000]% range

Parameters:
  • obj -- pointer to an object

  • w -- the new width

  • h -- the new height

bool lv_obj_refr_size(struct _lv_obj_t *obj)

Recalculate the size of the object

Parameters:

obj -- pointer to an object

Returns:

true: the size has been changed

void lv_obj_set_width(struct _lv_obj_t *obj, lv_coord_t w)

Set the width of an object

Note

possible values are: pixel simple set the size accordingly LV_SIZE_CONTENT set the size to involve all children in the given direction lv_pct(x) to set size in percentage of the parent's content area size (the size without paddings). x should be in [0..1000]% range

Parameters:
  • obj -- pointer to an object

  • w -- the new width

void lv_obj_set_height(struct _lv_obj_t *obj, lv_coord_t h)

Set the height of an object

Note

possible values are: pixel simple set the size accordingly LV_SIZE_CONTENT set the size to involve all children in the given direction lv_pct(x) to set size in percentage of the parent's content area size (the size without paddings). x should be in [0..1000]% range

Parameters:
  • obj -- pointer to an object

  • h -- the new height

void lv_obj_set_content_width(struct _lv_obj_t *obj, lv_coord_t w)

Set the width reduced by the left and right padding and the border width.

Parameters:
  • obj -- pointer to an object

  • w -- the width without paddings in pixels

void lv_obj_set_content_height(struct _lv_obj_t *obj, lv_coord_t h)

Set the height reduced by the top and bottom padding and the border width.

Parameters:
  • obj -- pointer to an object

  • h -- the height without paddings in pixels

void lv_obj_set_layout(struct _lv_obj_t *obj, uint32_t layout)

Set a layout for an object

Parameters:
  • obj -- pointer to an object

  • layout -- pointer to a layout descriptor to set

bool lv_obj_is_layout_positioned(const struct _lv_obj_t *obj)

Test whether the and object is positioned by a layout or not

Parameters:

obj -- pointer to an object to test

Returns:

true: positioned by a layout; false: not positioned by a layout

void lv_obj_mark_layout_as_dirty(struct _lv_obj_t *obj)

Mark the object for layout update.

Parameters:

obj -- pointer to an object whose children needs to be updated

void lv_obj_update_layout(const struct _lv_obj_t *obj)

Update the layout of an object.

Parameters:

obj -- pointer to an object whose children needs to be updated

void lv_obj_set_align(struct _lv_obj_t *obj, lv_align_t align)

Change the alignment of an object.

Parameters:
  • obj -- pointer to an object to align

  • align -- type of alignment (see 'lv_align_t' enum) LV_ALIGN_OUT_... can't be used.

void lv_obj_align(struct _lv_obj_t *obj, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)

Change the alignment of an object and set new coordinates. Equivalent to: lv_obj_set_align(obj, align); lv_obj_set_pos(obj, x_ofs, y_ofs);

Parameters:
  • obj -- pointer to an object to align

  • align -- type of alignment (see 'lv_align_t' enum) LV_ALIGN_OUT_... can't be used.

  • x_ofs -- x coordinate offset after alignment

  • y_ofs -- y coordinate offset after alignment

void lv_obj_align_to(struct _lv_obj_t *obj, const struct _lv_obj_t *base, lv_align_t align, lv_coord_t x_ofs, lv_coord_t y_ofs)

Align an object to an other object.

Note

if the position or size of base changes obj needs to be aligned manually again

Parameters:
  • obj -- pointer to an object to align

  • base -- pointer to an other object (if NULL objs parent is used). 'obj' will be aligned to it.

  • align -- type of alignment (see 'lv_align_t' enum)

  • x_ofs -- x coordinate offset after alignment

  • y_ofs -- y coordinate offset after alignment

static inline void lv_obj_center(struct _lv_obj_t *obj)

Align an object to the center on its parent.

Note

if the parent size changes obj needs to be aligned manually again

Parameters:

obj -- pointer to an object to align

void lv_obj_get_coords(const struct _lv_obj_t *obj, lv_area_t *coords)

Copy the coordinates of an object to an area

Parameters:
  • obj -- pointer to an object

  • coords -- pointer to an area to store the coordinates

lv_coord_t lv_obj_get_x(const struct _lv_obj_t *obj)

Get the x coordinate of object.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Note

Zero return value means the object is on the left padding of the parent, and not on the left edge.

Note

Scrolling of the parent doesn't change the returned value.

Note

The returned value is always the distance from the parent even if obj is positioned by a layout.

Parameters:

obj -- pointer to an object

Returns:

distance of obj from the left side of its parent plus the parent's left padding

lv_coord_t lv_obj_get_x2(const struct _lv_obj_t *obj)

Get the x2 coordinate of object.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Note

Zero return value means the object is on the right padding of the parent, and not on the right edge.

Note

Scrolling of the parent doesn't change the returned value.

Note

The returned value is always the distance from the parent even if obj is positioned by a layout.

Parameters:

obj -- pointer to an object

Returns:

distance of obj from the right side of its parent plus the parent's right padding

lv_coord_t lv_obj_get_y(const struct _lv_obj_t *obj)

Get the y coordinate of object.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Note

Zero return value means the object is on the top padding of the parent, and not on the top edge.

Note

Scrolling of the parent doesn't change the returned value.

Note

The returned value is always the distance from the parent even if obj is positioned by a layout.

Parameters:

obj -- pointer to an object

Returns:

distance of obj from the top side of its parent plus the parent's top padding

lv_coord_t lv_obj_get_y2(const struct _lv_obj_t *obj)

Get the y2 coordinate of object.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Note

Zero return value means the object is on the bottom padding of the parent, and not on the bottom edge.

Note

Scrolling of the parent doesn't change the returned value.

Note

The returned value is always the distance from the parent even if obj is positioned by a layout.

Parameters:

obj -- pointer to an object

Returns:

distance of obj from the bottom side of its parent plus the parent's bottom padding

lv_coord_t lv_obj_get_x_aligned(const struct _lv_obj_t *obj)

Get the actually set x coordinate of object, i.e. the offset form the set alignment

Parameters:

obj -- pointer to an object

Returns:

the set x coordinate

lv_coord_t lv_obj_get_y_aligned(const struct _lv_obj_t *obj)

Get the actually set y coordinate of object, i.e. the offset form the set alignment

Parameters:

obj -- pointer to an object

Returns:

the set y coordinate

lv_coord_t lv_obj_get_width(const struct _lv_obj_t *obj)

Get the width of an object

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Parameters:

obj -- pointer to an object

Returns:

the width in pixels

lv_coord_t lv_obj_get_height(const struct _lv_obj_t *obj)

Get the height of an object

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Parameters:

obj -- pointer to an object

Returns:

the height in pixels

lv_coord_t lv_obj_get_content_width(const struct _lv_obj_t *obj)

Get the width reduced by the left and right padding and the border width.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Parameters:

obj -- pointer to an object

Returns:

the width which still fits into its parent without causing overflow (making the parent scrollable)

lv_coord_t lv_obj_get_content_height(const struct _lv_obj_t *obj)

Get the height reduced by the top and bottom padding and the border width.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Parameters:

obj -- pointer to an object

Returns:

the height which still fits into the parent without causing overflow (making the parent scrollable)

void lv_obj_get_content_coords(const struct _lv_obj_t *obj, lv_area_t *area)

Get the area reduced by the paddings and the border width.

Note

The position of the object is recalculated only on the next redraw. To force coordinate recalculation call lv_obj_update_layout(obj).

Parameters:
  • obj -- pointer to an object

  • area -- the area which still fits into the parent without causing overflow (making the parent scrollable)

lv_coord_t lv_obj_get_self_width(const struct _lv_obj_t *obj)

Get the width occupied by the "parts" of the widget. E.g. the width of all columns of a table.

Note

This size independent from the real size of the widget. It just tells how large the internal ("virtual") content is.

Parameters:

obj -- pointer to an objects

Returns:

the width of the virtually drawn content

lv_coord_t lv_obj_get_self_height(const struct _lv_obj_t *obj)

Get the height occupied by the "parts" of the widget. E.g. the height of all rows of a table.

Note

This size independent from the real size of the widget. It just tells how large the internal ("virtual") content is.

Parameters:

obj -- pointer to an objects

Returns:

the width of the virtually drawn content

bool lv_obj_refresh_self_size(struct _lv_obj_t *obj)

Handle if the size of the internal ("virtual") content of an object has changed.

Parameters:

obj -- pointer to an object

Returns:

false: nothing happened; true: refresh happened

void lv_obj_refr_pos(struct _lv_obj_t *obj)
void lv_obj_move_to(struct _lv_obj_t *obj, lv_coord_t x, lv_coord_t y)
void lv_obj_move_children_by(struct _lv_obj_t *obj, lv_coord_t x_diff, lv_coord_t y_diff, bool ignore_floating)
void lv_obj_transform_point(const struct _lv_obj_t *obj, lv_point_t *p, bool recursive, bool inv)

Transform a point using the angle and zoom style properties of an object

Parameters:
  • obj -- pointer to an object whose style properties should be used

  • p -- a point to transform, the result will be written back here too

  • recursive -- consider the transformation properties of the parents too

  • inv -- do the inverse of the transformation (-angle and 1/zoom)

void lv_obj_get_transformed_area(const struct _lv_obj_t *obj, lv_area_t *area, bool recursive, bool inv)

Transform an area using the angle and zoom style properties of an object

Parameters:
  • obj -- pointer to an object whose style properties should be used

  • area -- an area to transform, the result will be written back here too

  • recursive -- consider the transformation properties of the parents too

  • inv -- do the inverse of the transformation (-angle and 1/zoom)

void lv_obj_invalidate_area(const struct _lv_obj_t *obj, const lv_area_t *area)

Mark an area of an object as invalid. The area will be truncated to the object's area and marked for redraw.

Parameters:
  • obj -- pointer to an object

  • area -- the area to redraw

void lv_obj_invalidate(const struct _lv_obj_t *obj)

Mark the object as invalid to redrawn its area

Parameters:

obj -- pointer to an object

bool lv_obj_area_is_visible(const struct _lv_obj_t *obj, lv_area_t *area)

Tell whether an area of an object is visible (even partially) now or not

Parameters:
  • obj -- pointer to an object

  • area -- the are to check. The visible part of the area will be written back here.

Returns:

true visible; false not visible (hidden, out of parent, on other screen, etc)

bool lv_obj_is_visible(const struct _lv_obj_t *obj)

Tell whether an object is visible (even partially) now or not

Parameters:

obj -- pointer to an object

Returns:

true: visible; false not visible (hidden, out of parent, on other screen, etc)

void lv_obj_set_ext_click_area(struct _lv_obj_t *obj, lv_coord_t size)

Set the size of an extended clickable area

Parameters:
  • obj -- pointer to an object

  • size -- extended clickable area in all 4 directions [px]

void lv_obj_get_click_area(const struct _lv_obj_t *obj, lv_area_t *area)

Get the an area where to object can be clicked. It's the object's normal area plus the extended click area.

Parameters:
  • obj -- pointer to an object

  • area -- store the result area here

bool lv_obj_hit_test(struct _lv_obj_t *obj, const lv_point_t *point)

Hit-test an object given a particular point in screen space.

Parameters:
  • obj -- object to hit-test

  • point -- screen-space point (absolute coordinate)

Returns:

true: if the object is considered under the point

lv_coord_t lv_clamp_width(lv_coord_t width, lv_coord_t min_width, lv_coord_t max_width, lv_coord_t ref_width)

Clamp a width between min and max width. If the min/max width is in percentage value use the ref_width

Parameters:
  • width -- width to clamp

  • min_width -- the minimal width

  • max_width -- the maximal width

  • ref_width -- the reference width used when min/max width is in percentage

Returns:

the clamped width

lv_coord_t lv_clamp_height(lv_coord_t height, lv_coord_t min_height, lv_coord_t max_height, lv_coord_t ref_height)

Clamp a height between min and max height. If the min/max height is in percentage value use the ref_height

Parameters:
  • height -- height to clamp

  • min_height -- the minimal height

  • max_height -- the maximal height

  • ref_height -- the reference height used when min/max height is in percentage

Returns:

the clamped height