lv_obj_pos.h

Enums

enum lv_obj_point_transform_flag_t

Values:

enumerator LV_OBJ_POINT_TRANSFORM_FLAG_NONE

No flags

enumerator LV_OBJ_POINT_TRANSFORM_FLAG_RECURSIVE

Consider the transformation properties of the parents too

enumerator LV_OBJ_POINT_TRANSFORM_FLAG_INVERSE

Execute the inverse of the transformation (-angle and 1/zoom)

enumerator LV_OBJ_POINT_TRANSFORM_FLAG_INVERSE_RECURSIVE

Both inverse and recursive

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.

备注

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

备注

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

备注

The position is interpreted on the content area of the parent

备注

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

参数:
  • 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

备注

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

备注

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

备注

The position is interpreted on the content area of the parent

备注

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

参数:
  • 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

备注

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

备注

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

备注

The position is interpreted on the content area of the parent

备注

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

参数:
  • 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.

备注

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

参数:
  • 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

参数:

obj -- pointer to an object

返回:

true: the size has been changed

void lv_obj_set_width(lv_obj_t *obj, int32_t w)

Set the width of an object

备注

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

参数:
  • 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

备注

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

参数:
  • 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.

参数:
  • 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.

参数:
  • 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

参数:
  • 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

参数:

obj -- pointer to an object to test

返回:

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.

参数:

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.

参数:

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.

参数:
  • 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);

参数:
  • 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 another object.

备注

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

参数:
  • obj -- pointer to an object to align

  • base -- pointer to another 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

void lv_obj_center(lv_obj_t *obj)

Align an object to the center on its parent.

备注

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

参数:

obj -- pointer to an object to align

void lv_obj_set_transform(lv_obj_t *obj, const lv_matrix_t *matrix)

Set the transfrom matrix of an object

备注

LV_DRAW_TRANSFORM_USE_MATRIX needs to be enabled.

参数:
  • obj -- pointer to an object

  • matrix -- pointer to a matrix to set

void lv_obj_reset_transform(lv_obj_t *obj)

Reset the transfrom matrix of an object to identity matrix

备注

LV_DRAW_TRANSFORM_USE_MATRIX needs to be enabled.

参数:

obj -- pointer to an object

void lv_obj_get_coords(const lv_obj_t *obj, lv_area_t *coords)

Copy the coordinates of an object to an area

参数:
  • 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.

备注

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

备注

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

备注

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

备注

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

参数:

obj -- pointer to an object

返回:

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.

备注

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

备注

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

备注

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

备注

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

参数:

obj -- pointer to an object

返回:

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.

备注

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

备注

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

备注

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

备注

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

参数:

obj -- pointer to an object

返回:

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.

备注

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

备注

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

备注

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

备注

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

参数:

obj -- pointer to an object

返回:

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 from the set alignment

参数:

obj -- pointer to an object

返回:

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 from the set alignment

参数:

obj -- pointer to an object

返回:

the set y coordinate

int32_t lv_obj_get_width(const lv_obj_t *obj)

Get the width of an object

备注

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

参数:

obj -- pointer to an object

返回:

the width in pixels

int32_t lv_obj_get_height(const lv_obj_t *obj)

Get the height of an object

备注

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

参数:

obj -- pointer to an object

返回:

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.

备注

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

参数:

obj -- pointer to an object

返回:

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.

备注

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

参数:

obj -- pointer to an object

返回:

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.

备注

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

参数:
  • 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.

备注

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

参数:

obj -- pointer to an objects

返回:

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.

备注

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

参数:

obj -- pointer to an objects

返回:

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.

参数:

obj -- pointer to an object

返回:

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)
const lv_matrix_t *lv_obj_get_transform(const lv_obj_t *obj)

Get the transform matrix of an object

参数:

obj -- pointer to an object

返回:

pointer to the transform matrix or NULL if not set

void lv_obj_transform_point(const lv_obj_t *obj, lv_point_t *p, lv_obj_point_transform_flag_t flags)

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

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

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

  • flags -- OR-ed valued of :cpp:enum:lv_obj_point_transform_flag_t

void lv_obj_transform_point_array(const lv_obj_t *obj, lv_point_t points[], size_t count, lv_obj_point_transform_flag_t flags)

Transform an array of points using the angle and zoom style properties of an object

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

  • points -- the array of points to transform, the result will be written back here too

  • count -- number of points in the array

  • flags -- OR-ed valued of :cpp:enum:lv_obj_point_transform_flag_t

void lv_obj_get_transformed_area(const lv_obj_t *obj, lv_area_t *area, lv_obj_point_transform_flag_t flags)

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

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

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

  • flags -- OR-ed valued of :cpp:enum:lv_obj_point_transform_flag_t

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.

参数:
  • 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

参数:

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

参数:
  • obj -- pointer to an object

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

返回:

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

参数:

obj -- pointer to an object

返回:

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

参数:
  • 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.

参数:
  • 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.

参数:
  • obj -- object to hit-test

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

返回:

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

参数:
  • 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

返回:

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

参数:
  • 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

返回:

the clamped height