1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-14 06:42:58 +08:00

refactor: minor refactoring and widget docs update

This commit is contained in:
Gabor Kiss-Vamosi 2023-12-11 18:15:51 +01:00
parent 7119b7488b
commit 88865dd910
58 changed files with 294 additions and 550 deletions

View File

@ -270,7 +270,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
obj = lv_label_create(obj);
lv_label_set_text(obj, "Tile: 1;1");
lv_obj_set_tile_id(tv, 1, 1, LV_ANIM_ON);
lv_tileview_set_tile_by_index(tv, 1, 1, LV_ANIM_ON);
}
break;

View File

@ -54,16 +54,6 @@ The bar can be one of the following modes:
Events
******
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` are sent
for the following parts:
- :cpp:enumerator:`LV_BAR_DRAW_PART_INDICATOR` The indicator of the bar
- ``part``: :cpp:enumerator:`LV_PART_INDICATOR`
- ``draw_area``: area of the indicator
- ``rect_dsc``
See the events of the `Base object </widgets/obj>`__ too.
Learn more about :ref:`events`.

View File

@ -1,147 +0,0 @@
Button matrix (lv_btnmatrix)
============================
Overview
********
The Button Matrix object is a lightweight way to display multiple
buttons in rows and columns. Lightweight because the buttons are not
actually created but just virtually drawn on the fly. This way, one
button use only eight extra bytes of memory instead of the ~100-150
bytes a normal `Button </widgets/btn>`__ object plus the 100 or so bytes
for the `Label </widgets/label>`__ object.
The Button matrix is added to the default group (if one is set). Besides
the Button matrix is an editable object to allow selecting and clicking
the buttons with encoder navigation too.
Parts and Styles
****************
- :cpp:enumerator:`LV_PART_MAIN` The background of the button matrix, uses the
typical background style properties. ``pad_row`` and ``pad_column``
sets the space between the buttons.
- :cpp:enumerator:`LV_PART_ITEMS` The buttons all use the text and typical background
style properties except translations and transformations.
Usage
*****
Button's text
-------------
There is a text on each button. To specify them a descriptor string
array, called *map*, needs to be used. The map can be set with
:cpp:expr:`lv_btnmatrix_set_map(btnm, my_map)`. The declaration of a map should
look like ``const char * map[] = {"btn1", "btn2", "btn3", NULL}``. Note
that the last element has to be either ``NULL`` or an empty string
(``""``)!
Use ``"\n"`` in the map to insert a **line break**. E.g.
``{"btn1", "btn2", "\n", "btn3", ""}``. Each line's buttons have their
width calculated automatically. So in the example the first row will
have 2 buttons each with 50% width and a second row with 1 button having
100% width.
Control buttons
---------------
The buttons' width can be set relative to the other button in the same
row with :cpp:expr:`lv_btnmatrix_set_btn_width(btnm, btn_id, width)` E.g. in a
line with two buttons: *btnA, width = 1* and *btnB, width = 2*, *btnA*
will have 33 % width and *btnB* will have 66 % width. It's similar to
how the
```flex-grow`` <https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow>`__
property works in CSS. The width must be in the [1..15] range and the
default width is 1.
In addition to the width, each button can be customized with the
following parameters:
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_HIDDEN`: Makes a button hidden (hidden buttons still take up space in the layout, they are just not visible or clickable)
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_NO_REPEAT`: Disable repeating when the button is long pressed
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_DISABLED`: Makes a button disabled Like :cpp:enumerator:`LV_STATE_DISABLED` on normal objects
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_CHECKABLE`: Enable toggling of a button. I.e. :cpp:enumerator:`LV_STATE_CHECKED` will be added/removed as the button is clicked
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_CHECKED`: Make the button checked. It will use the :cpp:enumerator:`LV_STATE_CHECHKED` styles.
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_CLICK_TRIG`: Enabled: send LV_EVENT_VALUE_CHANGE on CLICK, Disabled: send :cpp:enumerator:`LV_EVENT_VALUE_CHANGE` on PRESS
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_POPOVER`: Show the button label in a popover when pressing this key
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_RECOLOR`: Enable recoloring of button texts with ``#``. E.g. ``"It's #ff0000 red#"``
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_CUSTOM_1`: Custom free to use flag
- :cpp:enumerator:`LV_BTNMATRIX_CTRL_CUSTOM_2`: Custom free to use flag
By default, all flags are disabled.
To set or clear a button's control attribute, use
``lv_btnmatrix_set_btn_ctrl(btnm, btn_id, LV_BTNM_CTRL_...)`` and
``lv_btnmatrix_clear_btn_ctrl(btnm, btn_id, LV_BTNMATRIX_CTRL_...)``
respectively. More ``LV_BTNM_CTRL_...`` values can be OR-ed
To set/clear the same control attribute for all buttons of a button
matrix, use ``lv_btnmatrix_set_btn_ctrl_all(btnm, LV_BTNM_CTRL_...)``
and ``lv_btnmatrix_clear_btn_ctrl_all(btnm, LV_BTNMATRIX_CTRL_...)``.
The set a control map for a button matrix (similarly to the map for the
text), use ``lv_btnmatrix_set_ctrl_map(btnm, ctrl_map)``. An element of
``ctrl_map`` should look like
``ctrl_map[0] = width | LV_BTNM_CTRL_NO_REPEAT | LV_BTNM_CTRL_CHECHKABLE``.
The number of elements should be equal to the number of buttons
(excluding newlines characters).
One check
---------
The "One check" feature can be enabled with
:cpp:expr:`lv_btnmatrix_set_one_checked(btnm, true)` to allow only one button to
be checked at a time.
Events
******
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED`: Sent when a button is pressed/released or
repeated after long press. The event parameter is set to the ID of
the pressed/released button.
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` are sent
for the following types:
- :cpp:enumerator:`LV_BTNMATRIX_DRAW_PART_BTN` The individual buttons.
- ``part``: :cpp:enumerator:`LV_PART_ITEMS`
- ``id``:index of the button being drawn
- ``draw_area``: the area of the button
- ``rect_dsc``
See the events of the `Base object </widgets/obj>`__ too.
:cpp:expr:`lv_btnmatrix_get_selected_btn(btnm)` returns the index of the most
recently released or focused button or :cpp:enumerator:`LV_BTNMATRIX_BTN_NONE` if no
such button.
:cpp:expr:`lv_btnmatrix_get_btn_text(btnm, btn_id)` returns a pointer to the
text of ``btn_id``\ th button.
Learn more about :ref:`events`.
Keys
****
- ``LV_KEY_RIGHT/UP/LEFT/RIGHT`` To navigate among the buttons to
select one
- :cpp:enumerator:`LV_KEY_ENTER` To press/release the selected button
Note that long pressing the button matrix with an encoder can mean to
enter/leave edit mode and simply long pressing a button to make it
repeat as well. To avoid this contradiction it's suggested to add
:cpp:expr:`lv_btnmatrix_set_btn_ctrl_all(btnm, LV_BTNMATRIX_CTRL_CLICK_TRIG | LV_BTNMATRIX_CTRL_NO_REPEAT)`
to the button matrix if used with encoder. This way, the pressed button
repeat feature is disabled and on leaving edit mode the selected button
won't be activated.
Learn more about :ref:`indev_keys`.
Example
*******
.. include:: ../examples/widgets/btnmatrix/index.rst
API
***

View File

@ -1,4 +1,4 @@
Button (lv_btn)
Button (lv_button)
===============
Overview
@ -46,7 +46,7 @@ Learn more about :ref:`indev_keys`.
Example
*******
.. include:: ../examples/widgets/btn/index.rst
.. include:: ../examples/widgets/button/index.rst
API
***

View File

@ -0,0 +1,138 @@
Button matrix (lv_buttonmatrix)
============================
Overview
********
The Button Matrix object is a lightweight way to display multiple
buttons in rows and columns. Lightweight because the buttons are not
actually created but just virtually drawn on the fly. This way, one
button use only eight extra bytes of memory instead of the ~100-150
bytes a normal `Button </widgets/button>`__ object plus the 100 or so bytes
for the `Label </widgets/label>`__ object.
The Button matrix is added to the default group (if one is set). Besides
the Button matrix is an editable object to allow selecting and clicking
the buttons with encoder navigation too.
Parts and Styles
****************
- :cpp:enumerator:`LV_PART_MAIN` The background of the button matrix, uses the
typical background style properties. ``pad_row`` and ``pad_column``
sets the space between the buttons.
- :cpp:enumerator:`LV_PART_ITEMS` The buttons all use the text and typical background
style properties except translations and transformations.
Usage
*****
Button's text
-------------
There is a text on each button. To specify them a descriptor string
array, called *map*, needs to be used. The map can be set with
:cpp:expr:`lv_buttonmatrix_set_map(buttonm, my_map)`. The declaration of a map should
look like ``const char * map[] = {"button1", "button2", "button3", NULL}``. Note
that the last element has to be either ``NULL`` or an empty string
(``""``)!
Use ``"\n"`` in the map to insert a **line break**. E.g.
``{"button1", "button2", "\n", "button3", ""}``. Each line's buttons have their
width calculated automatically. So in the example the first row will
have 2 buttons each with 50% width and a second row with 1 button having
100% width.
Control buttons
---------------
The buttons' width can be set relative to the other button in the same
row with :cpp:expr:`lv_buttonmatrix_set_button_width(buttonm, button_id, width)` E.g. in a
line with two buttons: *buttonA, width = 1* and *buttonB, width = 2*, *buttonA*
will have 33 % width and *buttonB* will have 66 % width. It's similar to
how the
```flex-grow`` <https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow>`__
property works in CSS. The width must be in the [1..15] range and the
default width is 1.
In addition to the width, each button can be customized with the
following parameters:
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_HIDDEN`: Makes a button hidden (hidden buttons still take up space in the layout, they are just not visible or clickable)
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_NO_REPEAT`: Disable repeating when the button is long pressed
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_DISABLED`: Makes a button disabled Like :cpp:enumerator:`LV_STATE_DISABLED` on normal objects
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_CHECKABLE`: Enable toggling of a button. I.e. :cpp:enumerator:`LV_STATE_CHECKED` will be added/removed as the button is clicked
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_CHECKED`: Make the button checked. It will use the :cpp:enumerator:`LV_STATE_CHECHKED` styles.
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_CLICK_TRIG`: Enabled: send LV_EVENT_VALUE_CHANGE on CLICK, Disabled: send :cpp:enumerator:`LV_EVENT_VALUE_CHANGE` on PRESS
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_POPOVER`: Show the button label in a popover when pressing this key
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_RECOLOR`: Enable recoloring of button texts with ``#``. E.g. ``"It's #ff0000 red#"``
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_CUSTOM_1`: Custom free to use flag
- :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_CUSTOM_2`: Custom free to use flag
By default, all flags are disabled.
To set or clear a button's control attribute, use
``lv_buttonmatrix_set_button_ctrl(buttonm, button_id, LV_BUTTONMATRIX_CTRL_...)`` and
``lv_buttonmatrix_clear_button_ctrl(buttonm, button_id, LV_BUTTONMATRIX_CTRL_...)``
respectively. More ``LV_BUTTONMATRIX_CTRL_...`` values can be OR-ed
To set/clear the same control attribute for all buttons of a button
matrix, use ``lv_buttonmatrix_set_button_ctrl_all(buttonm, LV_BUTTONMATRIX_CTRL_...)``
and ``lv_buttonmatrix_clear_button_ctrl_all(buttonm, LV_BUTTONMATRIX_CTRL_...)``.
The set a control map for a button matrix (similarly to the map for the
text), use ``lv_buttonmatrix_set_ctrl_map(buttonm, ctrl_map)``. An element of
``ctrl_map`` should look like
``ctrl_map[0] = width | LV_BUTTONMATRIX_CTRL_NO_REPEAT | LV_BUTTONMATRIX_CTRL_CHECHKABLE``.
The number of elements should be equal to the number of buttons
(excluding newlines characters).
One check
---------
The "One check" feature can be enabled with
:cpp:expr:`lv_buttonmatrix_set_one_checked(buttonm, true)` to allow only one button to
be checked at a time.
Events
******
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED`: Sent when a button is pressed/released or
repeated after long press. The event parameter is set to the ID of
the pressed/released button.
See the events of the `Base object </widgets/obj>`__ too.
:cpp:expr:`lv_buttonmatrix_get_selected_button(buttonm)` returns the index of the most
recently released or focused button or :cpp:enumerator:`LV_BUTTONMATRIX_BUTTON_NONE` if no
such button.
:cpp:expr:`lv_buttonmatrix_get_button_text(buttonm, button_id)` returns a pointer to the
text of ``button_id``\ th button.
Learn more about :ref:`events`.
Keys
****
- ``LV_KEY_RIGHT/UP/LEFT/RIGHT`` To navigate among the buttons to
select one
- :cpp:enumerator:`LV_KEY_ENTER` To press/release the selected button
Note that long pressing the button matrix with an encoder can mean to
enter/leave edit mode and simply long pressing a button to make it
repeat as well. To avoid this contradiction it's suggested to add
:cpp:expr:`lv_buttonmatrix_set_button_ctrl_all(buttonm, LV_BUTTONMATRIX_CTRL_CLICK_TRIG | LV_BUTTONMATRIX_CTRL_NO_REPEAT)`
to the button matrix if used with encoder. This way, the pressed button
repeat feature is disabled and on leaving edit mode the selected button
won't be activated.
Learn more about :ref:`indev_keys`.
Example
*******
.. include:: ../examples/widgets/buttonmatrix/index.rst
API
***

View File

@ -73,7 +73,7 @@ Events
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` Sent if a date is clicked.
:cpp:expr:`lv_calendar_get_pressed_date(calendar, &date)` set ``date`` to the
date currently being pressed. Returns :cpp:enumerator:`LV_RES_OK` if there is a
valid pressed date, else :cpp:enumerator:`LV_RES_INV`.
valid pressed date, else :cpp:enumerator:`LV_RES_INVALID`.
Learn more about :ref:`events`.

View File

@ -6,8 +6,7 @@ Overview
A Canvas inherits from `Image </widgets/img>`__ where the user can draw
anything. Rectangles, texts, images, lines, arcs can be drawn here using
lvgl's drawing engine. Additionally "effects" can be applied, such as
rotation, zoom and blur.
lvgl's drawing engine.
Parts and Styles
****************
@ -21,95 +20,53 @@ Usage
Buffer
------
The Canvas needs a buffer in which stores the drawn image. To assign a
The Canvas needs a buffer in which it stores the drawn image. To assign a
buffer to a Canvas, use
:cpp:expr:`lv_canvas_set_buffer(canvas, buffer, width, height, LV_IMG_CF_...)`.
:cpp:expr:`lv_canvas_set_buffer(canvas, buffer, width, height, LV_COLOR_FORMAT_...)`.
Where ``buffer`` is a static buffer (not just a local variable) to hold
the image of the canvas. For example,
``static uint8_t buffer[LV_CANVAS_BUF_SIZE_TRUE_COLOR(width, height)]``.
``LV_CANVAS_BUF_SIZE_...`` macros help to determine the size of the
buffer with different color formats.
the image of the canvas. For example for a 100x50 ARGB8888 buffer:
``static uint8_t buffer[100 * 50 * 4]``.
The canvas supports all the built-in color formats like
:cpp:enumerator:`LV_IMG_CF_TRUE_COLOR` or :cpp:enumerator:`LV_IMG_CF_INDEXED_2BIT`. See the full
Or you can use
``static uint8_t buffer[LV_CANVAS_BUF_SIZE(width, height, bit_per_pixel, stride_in_bytes)]``.
The canvas supports all the color formats like
:cpp:enumerator:`LV_COLOR_FORMAT_ARGB8888` or :cpp:enumerator:`LV_COLOR_FORMAT_I2`. See the full
list in the `Color formats </overview/image.html#color-formats>`__
section.
Indexed colors
--------------
For ``LV_IMG_CF_INDEXED_1/2/4/8`` color formats a palette needs to be
initialized with :cpp:expr:`lv_canvas_set_palette(canvas, 3, LV_COLOR_RED)`. It
For ``LV_COLOR_FORMAT_I1/2/4/8`` color formats a palette needs to be
initialized with :cpp:expr:`lv_canvas_set_palette(canvas, 3, lv_color_hex(0xff0000))`. It
sets pixels with *index=3* to red.
Drawing
-------
To set a pixel's color on the canvas, use
:cpp:expr:`lv_canvas_set_px_color(canvas, x, y, LV_COLOR_RED)`. With
``LV_IMG_CF_INDEXED_...`` the index of the color needs to be passed as
color. E.g. ``lv_color_t c; c.full = 3;``
:cpp:expr:`lv_canvas_set_px_color(canvas, x, y, color, opa)`. With
``LV_COLOR_FORMAT_I1/2/4/8`` the index of the color needs to be passed as
color like this ``lv_color_from_int(13);``. It passes index 13 as a color.
To set a pixel's opacity with :cpp:enumerator:`LV_IMG_CF_TRUE_COLOR_ALPHA` or
``LV_IMG_CF_ALPHA_...`` format on the canvas, use
:cpp:expr:`lv_canvas_set_px_opa(canvas, x, y, opa)`.
:cpp:expr:`lv_canvas_fill_bg(canvas, LV_COLOR_BLUE, LV_OPA_50)` fills the whole
:cpp:expr:`lv_canvas_fill_bg(canvas, lv_color_hex(0x00ff00), LV_OPA_50)` fills the whole
canvas to blue with 50% opacity. Note that if the current color format
doesn't support colors (e.g. :cpp:enumerator:`LV_IMG_CF_ALPHA_2BIT`) the color will be
doesn't support colors (e.g. :cpp:enumerator:`LV_COLOR_FORMAT_A8`) the color will be
ignored. Similarly, if opacity is not supported
(e.g. :cpp:enumerator:`LV_IMG_CF_TRUE_COLOR`) it will be ignored.
(e.g. :cpp:enumerator:`LV_COLOR_FORMAT_RGB565`) it will be ignored.
An array of pixels can be copied to the canvas with
:cpp:expr:`lv_canvas_copy_buf(canvas, buffer_to_copy, x, y, width, height)`. The
color format of the buffer and the canvas need to match.
To draw something to the canvas use:
To draw something to the canvas use LVGL's draw functions directly. See the examples for more details.
- :cpp:expr:`lv_canvas_draw_rect(canvas, x, y, width, height, &draw_dsc)`
- :cpp:expr:`lv_canvas_draw_text(canvas, x, y, max_width, &draw_dsc, txt)`
- :cpp:expr:`lv_canvas_draw_img(canvas, x, y, &img_src, &draw_dsc)`
- :cpp:expr:`lv_canvas_draw_line(canvas, point_array, point_cnt, &draw_dsc)`
- :cpp:expr:`lv_canvas_draw_polygon(canvas, points_array, point_cnt, &draw_dsc)`
- :cpp:expr:`lv_canvas_draw_arc(canvas, x, y, radius, start_angle, end_angle, &draw_dsc)`
The draw function can draw to any color format to which LVGL can render. Typically it means
:cpp:enumerator:`LV_COLOR_FORMAT_RGB565`, :cpp:enumerator:`LV_COLOR_FORMAT_RGB888`,
:cpp:enumerator:`LV_COLOR_FORMAT_XRGB888`, and :cpp:enumerator:`LV_COLOR_FORMAT_ARGB8888`.
``draw_dsc`` is a ``lv_draw_rect/label/img/line/arc_dsc_t`` variable
which should be first initialized with one of
``lv_draw_rect/label/img/line/arc_dsc_init()`` and then modified with
the desired colors and other values.
The draw function can draw to any color format. For example, it's
possible to draw a text to an :cpp:enumerator:`LV_IMG_VF_ALPHA_8BIT` canvas and use
the result image as a `draw mask </overview/drawing>`__ later.
Transformations
---------------
:cpp:func:`lv_canvas_transform` can be used to rotate and/or scale the image
of an image and store the result on the canvas. The function needs the
following parameters:
- ``canvas`` pointer to a canvas object to store the result of the transformation.
- ``img pointer`` to an image descriptor to transform. Can be the image descriptor of another canvas too (:cpp:func:`lv_canvas_get_img`).
- ``angle`` the angle of rotation (0..3600), 0.1 deg resolution
- ``zoom`` zoom factor (256: no zoom, 512: double size, 128: half size);
- ``offset_x`` offset X to tell where to put the result data on destination canvas
- ``offset_y`` offset X to tell where to put the result data on destination canvas
- ``pivot_x`` pivot X of rotation. Relative to the source canvas. Set to ``source width / 2`` to rotate around the center
- ``pivot_y`` pivot Y of rotation. Relative to the source canvas. Set to ``source height / 2`` to rotate around the center
- ``antialias`` true: apply anti-aliasing during the transformation. Looks better but slower.
Note that a canvas can't be rotated on itself. You need a source and
destination canvas or image.
Blur
----
A given area of the canvas can be blurred horizontally with
:cpp:expr:`lv_canvas_blur_hor(canvas, &area, r)` or vertically with
:cpp:expr:`lv_canvas_blur_ver(canvas, &area, r)`. ``r`` is the radius of the
blur (greater value means more intensive burring). ``area`` is the area
where the blur should be applied (interpreted relative to the canvas).
Events
******

View File

@ -166,24 +166,14 @@ Note that :cpp:enumerator:`LV_CHART_UPDATE_MODE_SHIFT` also changes the
Tick marks and labels
---------------------
Ticks and labels can be added to the axis with
:cpp:expr:`lv_chart_set_axis_tick(chart, axis, major_len, minor_len, major_cnt, minor_cnt, label_en, draw_size)`.
- ``axis`` can be ``LV_CHART_AXIS_X/PRIMARY_Y/SECONDARY_Y``
- ``major_len`` is the length of major ticks - ``minor_len`` is the length of minor ticks
- ``major_cnt`` is the number of major ticks on the axis
- ``minor_cnt`` in the number of minor ticks between two major ticks
- ``label_en`` ``true``: enable label drawing on major ticks
- ``draw_size`` extra size required to draw the tick and labels (start with 20 px and increase if the ticks/labels are clipped)
With the help of </widgets/scale>`__ vertical and horizontal scales can be added in a very flexible way.
See the example below to learn more.
Zoom
----
The chart can be zoomed independently in x and y directions with
:cpp:expr:`lv_chart_set_scale_x(chart, factor)` and
:cpp:expr:`lv_chart_set_scale_y(chart, factor)`. If ``factor`` is 256 there is no
zoom. 512 means double zoom, etc. Fractional values are also possible
but < 256 value is not allowed.
To zoom the chart all you need to is wrapping it into a parent container and set the chart's width or height
to larger value. This way the chart will be scrollable on its parent.
Cursor
------
@ -211,63 +201,6 @@ Events
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` Sent when a new point is clicked pressed.
:cpp:expr:`lv_chart_get_pressed_point(chart)` returns the zero-based index of
the pressed point.
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` are sent
with the following types:
- :cpp:enumerator:`LV_CHART_DRAW_PART_DIV_LINE_INIT` Used before/after drawn the
div lines to add masks to any extra drawings. The following fields
are set:
- ``part``: :cpp:enumerator:`LV_PART_MAIN`
- ``line_dsc``
- :cpp:enumerator:`LV_CHART_DRAW_PART_DIV_LINE_HOR`,
:cpp:enumerator:`LV_CHART_DRAW_PART_DIV_LINE_VER` Used for each horizontal and
vertical division lines.
- ``part``: :cpp:enumerator:`LV_PART_MAIN`
- ``id``: index of the line
- ``p1``, ``p2``: points of the line
- ``line_dsc``
- :cpp:enumerator:`LV_CHART_DRAW_PART_LINE_AND_POINT` Used on line and scatter
charts for lines and points.
- ``part``: :cpp:enumerator:`LV_PART_ITEMS`
- ``id``: index of the point
- ``value``: value of ``id``\ th point
- ``p1``, ``p2``: points of the line
- ``draw_area``: area of the point
- ``line_dsc``
- ``rect_dsc``
- ``sub_part_ptr``: pointer to the series
- :cpp:enumerator:`LV_CHART_DRAW_PART_BAR` Used on bar charts for the rectangles.
- ``part``: :cpp:enumerator:`LV_PART_ITEMS`
- ``id``: index of the point
- ``value``: value of ``id``\ th point
- ``draw_area``: area of the point
- ``rect_dsc``:
- ``sub_part_ptr``: pointer to the series
- :cpp:enumerator:`LV_CHART_DRAW_PART_CURSOR` Used on cursor lines and points.
- ``part``: :cpp:enumerator:`LV_PART_CURSOR`
- ``p1``, ``p2``: points of the line
- ``line_dsc``
- ``rect_dsc``
- ``draw_area``: area of the points
- :cpp:enumerator:`LV_CHART_DRAW_PART_TICK_LABEL` Used on tick lines and labels.
- ``part``: :cpp:enumerator:`LV_PART_ITEMS`
- ``id``: axis
- ``value``: value of the tick
- ``text``: ``value`` converted to decimal or ``NULL`` for minor
ticks
- ``line_dsc``,
- ``label_dsc``,
See the events of the `Base object </widgets/obj>`__ too.

View File

@ -53,14 +53,6 @@ Events
******
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` Sent when the checkbox is toggled.
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` are sent
for the following types:
- :cpp:enumerator:`LV_CHECKBOX_DRAW_PART_BOX` The tickbox of the checkbox
- ``part``: :cpp:enumerator:`LV_PART_INDICATOR`
- ``draw_area``: the area of the tickbox
- ``rect_dsc``
See the events of the `Base object </widgets/obj>`__ too.

View File

@ -1,75 +0,0 @@
Color wheel (lv_colorwheel)
===========================
Overview
********
As its name implies *Color wheel* allows the user to select a color. The
Hue, Saturation and Value of the color can be selected separately.
Long pressing the object, the color wheel will change to the next
parameter of the color (hue, saturation or value). A double click will
reset the current parameter.
Parts and Styles
****************
- :cpp:enumerator:`LV_PART_MAIN` Only ``arc_width`` is used to set the width of the
color wheel
- :cpp:enumerator:`LV_PART_KNOB` A rectangle (or circle) drawn on the current value.
It uses all the rectangle like style properties and padding to make
it larger than the width of the arc.
Usage
*****
Create a color wheel
--------------------
:cpp:expr:`lv_colorwheel_create(parent, knob_recolor)` creates a new color
wheel. With ``knob_recolor=true`` the knob's background color will be
set to the current color.
Set color
---------
The color can be set manually with
``lv_colorwheel_set_hue/saturation/value(colorwheel, x)`` or all at once
with :cpp:expr:`lv_colorwheel_set_hsv(colorwheel, hsv)` or
:cpp:expr:`lv_colorwheel_set_color(colorwheel, rgb)`
Color mode
----------
The current color mode can be manually selected with
:cpp:expr:`lv_colorwheel_set_mode(colorwheel, LV_COLORWHEEL_MODE_HUE)`.
The color mode can be fixed (so as to not change with long press) using
:cpp:expr:`lv_colorwheel_set_mode_fixed(colorwheel, true)`
Events
******
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` Sent if a new color is selected.
Learn more about :ref:`events`.
Keys
****
- :cpp:enumerator:`LV_KEY_UP`, :cpp:enumerator:`LV_KEY_RIGHT` Increment the current parameter's
value by 1
- :cpp:enumerator:`LV_KEY_DOWN`, :cpp:enumerator:`LV_KEY_LEFT` Decrement the current parameter's
value by 1
- :cpp:enumerator:`LV_KEY_ENTER` A long press will show the next mode. Double click
to reset the current parameter.
Learn more about :ref:`indev_keys`.
Example
*******
.. include:: ../examples/widgets/colorwheel/index.rst
API
***

View File

@ -11,15 +11,15 @@ Widgets
arc
animimg
bar
btn
btnmatrix
button
buttonmatrix
calendar
chart
colorwheel
canvas
checkbox
dropdown
img
image
imgbtn
keyboard
label

View File

@ -4,7 +4,7 @@ Keyboard (lv_keyboard)
Overview
********
The Keyboard object is a special `Button matrix </widgets/btnmatrix>`__
The Keyboard object is a special `Button matrix </widgets/buttonmatrix>`__
with predefined keymaps and other features to realize a virtual keyboard
to write texts into a `Text area </widgets/textarea>`__.
@ -49,7 +49,7 @@ To enable key popovers on press, like on common Android and iOS
keyboards, use :cpp:expr:`lv_keyboard_set_popovers(kb, true)`. The default
control maps are preconfigured to only show the popovers on keys that
produce a symbol and not on e.g. space. If you use a custom keymap, set
the :cpp:enumerator:`LV_BTNMATRIX_CTRL_POPOVER` flag for all keys that you want to
the :cpp:enumerator:`LV_BUTTONMATRIX_CTRL_POPOVER` flag for all keys that you want to
show a popover.
Note that popovers for keys in the top row will draw outside the widget
@ -65,7 +65,7 @@ New Keymap
You can specify a new map (layout) for the keyboard with
:cpp:expr:`lv_keyboard_set_map(kb, LV_KEYBOARD_MODE_..., kb_map, kb_ctrl)`. See
the `Button matrix </widgets/btnmatrix>`__ for more information about
the `Button matrix </widgets/buttonmatrix>`__ for more information about
creating new maps and ctrls.
Keep in mind that using following keywords will have the same effect as

View File

@ -101,7 +101,7 @@ the Label widget only allows manual text selection with
Text alignment
--------------
To horizontally align the lines of a label the `text_align` style property can be used with
To horizontally align the lines of a label the `text_align` style property can be used with
:cpp:expr:`lv_obj_set_style_text_align()` or :cpp:expr:`lv_style_set_text_align()`
Note that it has a visible effect only if
@ -121,11 +121,8 @@ Custom scrolling animations
Some aspects of the scrolling animations in long modes
:cpp:enumerator:`LV_LABEL_LONG_SCROLL` and :cpp:enumerator:`LV_LABEL_LONG_SCROLL_CIRCULAR` can be
customized by setting the animation property of a style, using
:cpp:func:`lv_style_set_anim`. Currently, only the start and repeat delay of
the circular scrolling animation can be customized. If you need to
customize another aspect of the scrolling animation, feel free to open
an `issue on Github <https://github.com/lvgl/lvgl/issues>`__ to request
the feature.
:cpp:func:`lv_style_set_anim`.
It will be treated as a template which will be used to create the scroll animatins.
Symbols
-------

View File

@ -39,16 +39,6 @@ the ON and OFF state.
Events
******
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` is sent
for the following types:
- :cpp:enumerator:`LV_LED_DRAW_PART_RECTANGLE` The main rectangle.
:cpp:enumerator:`LV_OBJ_DRAW_PART_RECTANGLE` is not sent by the base object.
- ``part``: :cpp:enumerator:`LV_PART_MAIN`
- ``rect_dsc``
- ``draw_area``: the area of the rectangle
See the events of the `Base object </widgets/obj>`__ too.
Learn more about :ref:`events`.

View File

@ -19,7 +19,7 @@ Usage
Set points
----------
The points have to be stored in an :cpp:struct:`lv_point_t` array and passed to
The points have to be stored in an :cpp:struct:`lv_point_precise_t` array and passed to
the object by the :cpp:expr:`lv_line_set_points(lines, point_array, point_cnt)`
function.

View File

@ -15,7 +15,7 @@ Parts and Styles
- :cpp:enumerator:`LV_PART_MAIN` The main part of the list that uses all the typical background properties
- :cpp:enumerator:`LV_PART_SCROLLBAR` The scrollbar. See the `Base objects </widgets/obj>`__ documentation for details.
**Buttons and Texts** See the `Button </widgets/btn>`__\ 's and `Label </widgets/label>`__\ 's documentation.
**Buttons and Texts** See the `Button </widgets/button>`__\ 's and `Label </widgets/label>`__\ 's documentation.
Usage
*****
@ -23,7 +23,7 @@ Usage
Buttons
-------
:cpp:expr:`lv_list_add_btn(list, icon, text)` adds a full-width button with an icon
:cpp:expr:`lv_list_add_button(list, icon, text)` adds a full-width button with an icon
- that can be an image or symbol
- and a text.

View File

@ -11,11 +11,11 @@ Parts and Styles
****************
The menu widget is built from the following objects: - Main container:
lv_menu_main_cont - Main header: lv_menu_main_header_cont - Back btn:
`lv_btn </widgets/btn>`__ - Back btn icon: `lv_img </widgets/img>`__ -
lv_menu_main_cont - Main header: lv_menu_main_header_cont - Back button:
`lv_button </widgets/button>`__ - Back button icon: `lv_img </widgets/img>`__ -
Main page: lv_menu_page - Sidebar container: lv_menu_sidebar_cont -
Sidebar header: lv_menu_sidebar_header_cont - Back btn:
`lv_btn </widgets/btn>`__ - Back btn icon: `lv_img </widgets/img>`__ -
Sidebar header: lv_menu_sidebar_header_cont - Back button:
`lv_button </widgets/button>`__ - Back button icon: `lv_img </widgets/img>`__ -
Sidebar page: lv_menu_page
Usage
@ -46,7 +46,7 @@ The following root back button modes exist:
- :cpp:enumerator:`LV_MENU_ROOT_BACK_BTN_ENABLED`
You can set root back button modes with
:cpp:expr:`lv_menu_set_mode_root_back_btn(menu, LV_MENU_ROOT_BACK_BTN...)`.
:cpp:expr:`lv_menu_set_mode_root_back_button(menu, LV_MENU_ROOT_BACK_BTN...)`.
Create a menu page
------------------
@ -70,8 +70,8 @@ Once a menu page has been created, you can set it to the sidebar with
Linking between menu pages
--------------------------
For instance, you have created a btn obj in the main page. When you
click the btn obj, you want it to open up a new page, use
For instance, you have created a button obj in the main page. When you
click the button obj, you want it to open up a new page, use
:cpp:expr:`lv_menu_set_load_page_event(menu, obj, new page)`.
Create a menu container, section, separator
@ -94,12 +94,12 @@ Events
- :cpp:expr:`lv_menu_get_cur_sidebar_page(menu)` returns a pointer to menu
page that is currently displayed in sidebar.
- :cpp:enumerator:`LV_EVENT_CLICKED` Sent when a back btn in a header from either
- :cpp:enumerator:`LV_EVENT_CLICKED` Sent when a back button in a header from either
main or sidebar is clicked. :cpp:enumerator:`LV_OBJ_FLAG_EVENT_BUBBLE` is enabled
on the buttons so you can add events to the menu itself.
- :cpp:expr:`lv_menu_back_btn_is_root(menu, btn)` to check if btn is root
back btn
- :cpp:expr:`lv_menu_back_button_is_root(menu, button)` to check if button is root
back button
See the events of the `Base object </widgets/obj>`__ too.

View File

@ -154,7 +154,7 @@ Flags
-----
There are some attributes which can be enabled/disabled by
``lv_obj_add/remove_flag(obj, LV_OBJ_FLAG_...)``:
``lv_obj_add/remove_flag(obj, LV_OBJ_FLAG_...)`` and ``lv_obj_set_flag(obj, LV_OBJ_FLAG_..., true/false)``
- :cpp:enumerator:`LV_OBJ_FLAG_HIDDEN` Make the object hidden. (Like it wasn't there at all)
- :cpp:enumerator:`LV_OBJ_FLAG_CLICKABLE` Make the object clickable by input devices
@ -176,7 +176,9 @@ There are some attributes which can be enabled/disabled by
- :cpp:enumerator:`LV_OBJ_FLAG_ADV_HITTEST` Allow performing more accurate hit (click) test. E.g. accounting for rounded corners
- :cpp:enumerator:`LV_OBJ_FLAG_IGNORE_LAYOUT` Make the object positionable by the layouts
- :cpp:enumerator:`LV_OBJ_FLAG_FLOATING` Do not scroll the object when the parent scrolls and ignore layout
- :cpp:enumerator:`LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS` Enable sending ``LV_EVENT_DRAW_TASK_ADDED`` events
- :cpp:enumerator:`LV_OBJ_FLAG_OVERFLOW_VISIBLE` Do not clip the children's content to the parent's boundary
- :cpp:enumerator:`LV_OBJ_FLAG_FLEX_IN_NEW_TRACK` Start a new flex track on this item
- :cpp:enumerator:`LV_OBJ_FLAG_LAYOUT_1` Custom flag, free to use by layouts
- :cpp:enumerator:`LV_OBJ_FLAG_LAYOUT_2` Custom flag, free to use by layouts
- :cpp:enumerator:`LV_OBJ_FLAG_WIDGET_1` Custom flag, free to use by widget
@ -224,27 +226,6 @@ Events
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` when the :cpp:enumerator:`LV_OBJ_FLAG_CHECKABLE` flag is
enabled and the object clicked (on transition to/from the checked state)
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` is sent
for the following types:
- :cpp:enumerator:`LV_OBJ_DRAW_PART_RECTANGLE` The main rectangle
- ``part``: :cpp:enumerator:`LV_PART_MAIN`
- ``rect_dsc``
- ``draw_area``: the area of the rectangle
- :cpp:enumerator:`LV_OBJ_DRAW_PART_BORDER_POST` The border if the ``border_post``
style property is ``true``
- ``part``: :cpp:enumerator:`LV_PART_MAIN`
- ``rect_dsc``
- ``draw_area``: the area of the rectangle
- :cpp:enumerator:`LV_OBJ_DRAW_PART_SCROLLBAR` the scrollbars
- ``part``: :cpp:enumerator:`LV_PART_SCROLLBAR`
- ``rect_dsc``
- ``draw_area``: the area of the rectangle
Learn more about :ref:`events`.

View File

@ -72,22 +72,6 @@ Events
changed with keys. The event is sent continuously while the slider is
being dragged.
- :cpp:enumerator:`LV_EVENT_RELEASED` Sent when the slider has just been released.
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` are sent
for the following parts.
- :cpp:enumerator:`LV_SLIDER_DRAW_PART_KNOB` The main (right) knob of the slider
- ``part``: :cpp:enumerator:`LV_PART_KNOB`
- ``draw_area``: area of the indicator
- ``rect_dsc``
- ``id``: 0
- :cpp:enumerator:`LV_SLIDER_DRAW_PART_KNOB` The left knob of the slider
- ``part``: :cpp:enumerator:`LV_PART_KNOB`
- ``draw_area``: area of the indicator
- ``rect_dsc``
- ``id``: 1
See the events of the `Bar </widgets/bar>`__ too.

View File

@ -88,7 +88,7 @@ The spangroup can be set to one the following modes:
Use :cpp:expr:`lv_spangroup_set_overflow(spangroup, LV_SPAN_OVERFLOW_CLIP)` to set object overflow mode.
first line indent
First line indent
-----------------
Use :cpp:expr:`lv_spangroup_set_indent(spangroup, 20)` to set the indent of the
@ -96,7 +96,7 @@ first line. all modes support pixel units, in addition to :cpp:enumerator:`LV_SP
and :cpp:enumerator:`LV_SPAN_MODE_BREAK` mode supports percentage units
too.
lines
Lines
-----
Use :cpp:expr:`lv_spangroup_set_max_lines(spangroup, 10)` to set the maximum number

View File

@ -18,8 +18,10 @@ Create a spinner
----------------
To create a spinner use
:cpp:expr:`lv_spinner_create(parent, spin_time, arc_length)`. ``spin time`` sets
the spin time in milliseconds, ``arc_length`` sets the length of the spinning arc in degrees.
:cpp:expr:`lv_spinner_create(parent)`.
Using :cpp:expr:`lv_spinner_set_anim_params(spinner, spin_duration, angle)` the duration
of one revulation and the length of he arc can be customized.
Events
******

View File

@ -79,16 +79,6 @@ Events
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` Sent when a new cell is selected with
keys.
- :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` are sent
for the following types:
- :cpp:enumerator:`LV_TABLE_DRAW_PART_CELL` The individual cells of the table
- ``part``: :cpp:enumerator:`LV_PART_ITEMS`
- ``draw_area``: area of the indicator
- ``rect_dsc``
- ``label_dsc``
- ``id``: current row × col count + current column
See the events of the `Base object </widgets/obj>`__ too.

View File

@ -8,7 +8,7 @@ The Tab view object can be used to organize content in tabs. The Tab
view is built from other widgets:
- Main container: `lv_obj </widgets/obj>`__
- Tab buttons: `lv_btnmatrix </widgets/btnmatrix>`__
- Tab buttons: an `lv_obj </widgets/obj>`__` with `lv_button </widgets/button>`__ s
- Container for the tabs: `lv_obj </widgets/obj>`__
- Content of the tabs: `lv_obj </widgets/obj>`__
@ -22,7 +22,7 @@ Parts and Styles
****************
There are no special parts on the Tab view but the ``lv_obj`` and
``lv_btnmatrix`` widgets are used to create the Tab view.
``lv_button`` widgets are used to create the Tab view.
Usage
*****
@ -30,12 +30,8 @@ Usage
Create a Tab view
-----------------
:cpp:expr:`lv_tabview_create(parent, tab_pos, tab_size)` creates a new empty
Tab view. ``tab_pos`` can be ``LV_DIR_TOP/BOTTOM/LEFT/RIGHT`` to
position the tab buttons to a side. ``tab_size`` is the height (in case
of ``LV_DIR_TOP/BOTTOM``) or width (in case of ``LV_DIR_LEFT/RIGHT``)
tab buttons.
:cpp:expr:`lv_tabview_create(parent)` creates a new empty
Tab view.
Add tabs
--------
@ -58,12 +54,26 @@ To select a new tab you can:
- Slide horizontally
- Use :cpp:expr:`lv_tabview_set_active(tabview, id, LV_ANIM_ON)` function
Set tab bar position
--------------------
Using the :cpp:expr:`lv_tabview_set_tab_bar_position(tabview, LV_DIR_LEFT/RIGHT/TOP/BOTTOM)`
the tab bar can be moved to any sides.
Set tab bra size
----------------
The size of the tab bar can be adjusted by :spp:expr:`lv_tabview_set_tab_bar_size(tabview, size)`
In case of vertical arrangement is means the height of the tab bar, and in horizontal
arrangement it means the width.
Get the parts
-------------
:cpp:expr:`lv_tabview_get_content(tabview)` returns the container for the tabs,
:cpp:expr:`lv_tabview_get_tab_btns(tabview)` returns the Tab buttons object
which is a `Button matrix </widgets/btnmatrix>`__.
:cpp:expr:`lv_tabview_get_tab_buttons(tabview)` returns the Tab buttons object
which is a `Button matrix </widgets/buttonmatrix>`__.
Events
******

View File

@ -38,8 +38,8 @@ Change tile
-----------
The Tile view can scroll to a tile with
:cpp:expr:`lv_obj_set_tile(tileview, tile_obj, LV_ANIM_ON/OFF)` or
:cpp:expr:`lv_obj_set_tile_id(tileview, col_id, row_id, LV_ANIM_ON/OFF)`
:cpp:expr:`lv_tileview_set_tile(tileview, tile_obj, LV_ANIM_ON/OFF)` or
:cpp:expr:`lv_tileview_set_tile_by_index(tileview, col_id, row_id, LV_ANIM_ON/OFF)`
Events
******

View File

@ -16,7 +16,7 @@ documentation for details:
- Background: `lv_obj </widgets/obj>`__
- Header on the background: `lv_obj </widgets/obj>`__
- Title on the header: `lv_label </widgets/label>`__
- Buttons on the header: `lv_btn </widgets/btn>`__
- Buttons on the header: `lv_button </widgets/button>`__
- Content area on the background: `lv_obj </widgets/obj>`__
Usage
@ -35,8 +35,8 @@ Any number of texts (but typically only one) can be added to the header
with :cpp:expr:`lv_win_add_title(win, "The title")`.
Control buttons can be added to the window's header with
:cpp:expr:`lv_win_add_btn(win, icon, btn_width)`. ``icon`` can be any image
source, and ``btn_width`` is the width of the button.
:cpp:expr:`lv_win_add_button(win, icon, button_width)`. ``icon`` can be any image
source, and ``button_width`` is the width of the button.
The title and the buttons will be added in the order the functions are
called. So adding a button, a text and two other buttons will result in
@ -56,7 +56,7 @@ Events
******
No special events are sent by the windows, however events can be added
manually to the return value of :cpp:func:`lv_win_add_btn`.
manually to the return value of :cpp:func:`lv_win_add_button`.
Learn more about :ref:`events`.

View File

@ -1,20 +0,0 @@
Simple Buttons
--------------
.. lv_example:: widgets/btn/lv_example_btn_1
:language: c
Styling buttons
---------------
.. lv_example:: widgets/btn/lv_example_btn_2
:language: c
Gummy button
------------
.. lv_example:: widgets/btn/lv_example_btn_3
:language: c

View File

@ -1,22 +0,0 @@
Simple Button matrix
--------------------
.. lv_example:: widgets/btnmatrix/lv_example_btnmatrix_1
:language: c
Custom buttons
--------------
.. lv_example:: widgets/btnmatrix/lv_example_btnmatrix_2
:language: c
Pagination
----------
.. lv_example:: widgets/btnmatrix/lv_example_btnmatrix_3
:language: c

View File

@ -0,0 +1,20 @@
Simple Buttons
--------------
.. lv_example:: widgets/button/lv_example_button_1
:language: c
Styling buttons
---------------
.. lv_example:: widgets/button/lv_example_button_2
:language: c
Gummy button
------------
.. lv_example:: widgets/button/lv_example_button_3
:language: c

View File

@ -0,0 +1,22 @@
Simple Button matrix
--------------------
.. lv_example:: widgets/buttonmatrix/lv_example_buttonmatrix_1
:language: c
Custom buttons
--------------
.. lv_example:: widgets/buttonmatrix/lv_example_buttonmatrix_2
:language: c
Pagination
----------
.. lv_example:: widgets/buttonmatrix/lv_example_buttonmatrix_3
:language: c

View File

@ -2,27 +2,27 @@
Image from variable and symbol
------------------------------
.. lv_example:: widgets/img/lv_example_img_1
.. lv_example:: widgets/image/lv_example_image_1
:language: c
Image recoloring
----------------
.. lv_example:: widgets/img/lv_example_img_2
.. lv_example:: widgets/image/lv_example_image_2
:language: c
Rotate and zoom
---------------
.. lv_example:: widgets/img/lv_example_img_3
.. lv_example:: widgets/image/lv_example_image_3
:language: c
Image offset and styling
------------------------
.. lv_example:: widgets/img/lv_example_img_4
.. lv_example:: widgets/image/lv_example_image_4
:language: c

View File

@ -7,7 +7,7 @@ void lv_example_tabview_2(void)
/*Create a Tab view object*/
lv_obj_t * tabview;
tabview = lv_tabview_create(lv_screen_active());
lv_tabview_set_tab_position(tabview, LV_DIR_LEFT);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_LEFT);
lv_tabview_set_tab_bar_size(tabview, 80);
lv_obj_set_style_bg_color(tabview, lv_palette_lighten(LV_PALETTE_RED, 2), 0);

View File

@ -211,6 +211,8 @@ static inline void lv_obj_move_background(lv_obj_t * obj)
#define lv_tabview_set_act lv_tabview_set_active
#define lv_tileview_get_tile_act lv_tileview_get_tile_active
#define lv_obj_set_tile_id lv_obj_set_tile_by_index
#define lv_obj_set_tile lv_obj_set_tile
#define lv_msgbox_get_btns lv_msgbox_get_buttons

View File

@ -149,7 +149,7 @@ void lv_tabview_set_active(lv_obj_t * obj, uint32_t idx, lv_anim_enable_t anim_e
tabview->tab_cur = idx;
}
void lv_tabview_set_tab_position(lv_obj_t * obj, lv_dir_t dir)
void lv_tabview_set_tab_bar_position(lv_obj_t * obj, lv_dir_t dir)
{
LV_ASSERT_OBJ(obj, MY_CLASS);
lv_tabview_t * tabview = (lv_tabview_t *)obj;
@ -267,7 +267,7 @@ static void lv_tabview_constructor(const lv_obj_class_t * class_p, lv_obj_t * ob
lv_obj_add_event_cb(cont, cont_scroll_end_event_cb, LV_EVENT_ALL, NULL);
lv_obj_set_scrollbar_mode(cont, LV_SCROLLBAR_MODE_OFF);
lv_tabview_set_tab_position(obj, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(obj, LV_DIR_TOP);
lv_obj_add_flag(cont, LV_OBJ_FLAG_SCROLL_ONE);
lv_obj_remove_flag(cont, LV_OBJ_FLAG_SCROLL_ON_FOCUS);

View File

@ -45,7 +45,7 @@ void lv_tabview_rename_tab(lv_obj_t * obj, uint32_t tab_id, const char * new_nam
void lv_tabview_set_active(lv_obj_t * obj, uint32_t id, lv_anim_enable_t anim_en);
void lv_tabview_set_tab_position(lv_obj_t * obj, lv_dir_t dir);
void lv_tabview_set_tab_bar_position(lv_obj_t * obj, lv_dir_t dir);
void lv_tabview_set_tab_bar_size(lv_obj_t * obj, int32_t size);

View File

@ -82,7 +82,7 @@ lv_obj_t * lv_tileview_add_tile(lv_obj_t * tv, uint8_t col_id, uint8_t row_id, l
return obj;
}
void lv_obj_set_tile(lv_obj_t * obj, lv_obj_t * tile_obj, lv_anim_enable_t anim_en)
void lv_tileview_set_tile(lv_obj_t * obj, lv_obj_t * tile_obj, lv_anim_enable_t anim_en)
{
int32_t tx = lv_obj_get_x(tile_obj);
int32_t ty = lv_obj_get_y(tile_obj);
@ -95,7 +95,7 @@ void lv_obj_set_tile(lv_obj_t * obj, lv_obj_t * tile_obj, lv_anim_enable_t anim_
lv_obj_scroll_to(obj, tx, ty, anim_en);
}
void lv_obj_set_tile_id(lv_obj_t * tv, uint32_t col_id, uint32_t row_id, lv_anim_enable_t anim_en)
void lv_tileview_set_tile_by_index(lv_obj_t * tv, uint32_t col_id, uint32_t row_id, lv_anim_enable_t anim_en)
{
lv_obj_update_layout(tv);
@ -111,7 +111,7 @@ void lv_obj_set_tile_id(lv_obj_t * tv, uint32_t col_id, uint32_t row_id, lv_anim
int32_t x = lv_obj_get_x(tile_obj);
int32_t y = lv_obj_get_y(tile_obj);
if(x == tx && y == ty) {
lv_obj_set_tile(tv, tile_obj, anim_en);
lv_tileview_set_tile(tv, tile_obj, anim_en);
return;
}
}

View File

@ -50,8 +50,8 @@ lv_obj_t * lv_tileview_create(lv_obj_t * parent);
lv_obj_t * lv_tileview_add_tile(lv_obj_t * tv, uint8_t col_id, uint8_t row_id, lv_dir_t dir);
void lv_obj_set_tile(lv_obj_t * tv, lv_obj_t * tile_obj, lv_anim_enable_t anim_en);
void lv_obj_set_tile_id(lv_obj_t * tv, uint32_t col_id, uint32_t row_id, lv_anim_enable_t anim_en);
void lv_tileview_set_tile(lv_obj_t * tv, lv_obj_t * tile_obj, lv_anim_enable_t anim_en);
void lv_tileview_set_tile_by_index(lv_obj_t * tv, uint32_t col_id, uint32_t row_id, lv_anim_enable_t anim_en);
lv_obj_t * lv_tileview_get_tile_active(lv_obj_t * obj);

View File

@ -49,7 +49,7 @@ void test_tabview_create_successful_dir_top(void)
void test_tabview_create_successful_dir_bottom(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_BOTTOM);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_BOTTOM);
lv_tabview_set_tab_bar_size(tabview, 50);
TEST_ASSERT_NOT_NULL(tabview);
@ -60,7 +60,7 @@ void test_tabview_create_successful_dir_bottom(void)
void test_tabview_create_successful_dir_left(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_LEFT);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_LEFT);
lv_tabview_set_tab_bar_size(tabview, 50);
TEST_ASSERT_NOT_NULL(tabview);
@ -71,7 +71,7 @@ void test_tabview_create_successful_dir_left(void)
void test_tabview_create_successful_dir_right(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_RIGHT);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_RIGHT);
lv_tabview_set_tab_bar_size(tabview, 50);
TEST_ASSERT_NOT_NULL(tabview);
@ -82,7 +82,7 @@ void test_tabview_create_successful_dir_right(void)
void test_tabview_add_one_tab_empty(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -93,7 +93,7 @@ void test_tabview_add_one_tab_empty(void)
void test_tabview_add_one_tab_empty_hor(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_LEFT);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_LEFT);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -104,7 +104,7 @@ void test_tabview_add_one_tab_empty_hor(void)
void test_tabview_add_one_tab_no_scroll(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -119,7 +119,7 @@ void test_tabview_add_one_tab_no_scroll(void)
void test_tabview_add_one_tab_with_scroll(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -147,7 +147,7 @@ void test_tabview_add_one_tab_with_scroll(void)
void test_tabview_add_several_tabs_no_scroll(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -167,7 +167,7 @@ void test_tabview_add_several_tabs_no_scroll(void)
void test_tabview_rename_tab(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -188,7 +188,7 @@ void test_tabview_rename_tab(void)
void test_tabview_add_several_tabs_hor(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -235,7 +235,7 @@ void test_tabview_set_act_non_existent(void)
void test_tabview_tab2_selected_event(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");
@ -253,7 +253,7 @@ void test_tabview_tab2_selected_event(void)
void test_tabview_update_on_external_scroll(void)
{
tabview = lv_tabview_create(active_screen);
lv_tabview_set_tab_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_position(tabview, LV_DIR_TOP);
lv_tabview_set_tab_bar_size(tabview, 50);
lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1");