lv_obj_pos.h

Functions

void lv_obj_set_pos(lv_obj_t *obj, int32_t x, int32_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(lv_obj_t *obj, int32_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(lv_obj_t *obj, int32_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(lv_obj_t *obj, int32_t w, int32_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_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(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(lv_obj_t *obj, int32_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(lv_obj_t *obj, int32_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(lv_obj_t *obj, int32_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(lv_obj_t *obj, int32_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(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 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(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 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(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(lv_obj_t *obj, lv_align_t align, int32_t x_ofs, int32_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(lv_obj_t *obj, const lv_obj_t *base, lv_align_t align, int32_t x_ofs, int32_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(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 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

int32_t lv_obj_get_x(const 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

int32_t lv_obj_get_x2(const 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

int32_t lv_obj_get_y(const 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

int32_t lv_obj_get_y2(const 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

int32_t lv_obj_get_x_aligned(const 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

int32_t lv_obj_get_y_aligned(const 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

int32_t lv_obj_get_width(const 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

int32_t lv_obj_get_height(const 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

int32_t lv_obj_get_content_width(const 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)

int32_t lv_obj_get_content_height(const 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 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)

int32_t lv_obj_get_self_width(const 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

int32_t lv_obj_get_self_height(const 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(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(lv_obj_t *obj)
void lv_obj_move_to(lv_obj_t *obj, int32_t x, int32_t y)
void lv_obj_move_children_by(lv_obj_t *obj, int32_t x_diff, int32_t y_diff, bool ignore_floating)
void lv_obj_transform_point(const 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 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 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 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 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 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(lv_obj_t *obj, int32_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 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(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

int32_t lv_clamp_width(int32_t width, int32_t min_width, int32_t max_width, int32_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

int32_t lv_clamp_height(int32_t height, int32_t min_height, int32_t max_height, int32_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