Files
lvgl/docs/widgets/core/bar.md
Carlos Diaz 0b68840cd9 test(bar): add unit tests (#2845)
* test(bar) Add test for docummented default attributes

* test(bar) Update test for docummented default attributes

* test(bar): Indicator width tracks value

* test(bar) Calculate bar indicator width based on its style

Take padding, max value and bar value into consideraion

* test(bar) Indicator area gets smaller when increasing padding in LV_PART_MAIN style

* test(bar) Start value changes only when in range mode

* docs(bar): Add missing MODE to symbols

* test(bar) Start value should be smaller than current value

* test(bar): Test current value truncation to max and min value

* bar: Check bar mode in lv_bar_set_start_value

bar start_value can be changed only when bar is in LV_BAR_MODE_RANGE mode.
Return early when it's not.

* test(bar): Fix width calculation test

* bar: Initialize indic_area in constructor

* test(bar): Refactor indicator coordinate update test

* test(bar): Indicator negative value in symmetrical mode

* test(bar): Fix base direction

* test(bar): Indicator coord test for RTL base dir
2022-01-22 16:17:13 +01:00

67 lines
2.2 KiB
Markdown

```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/widgets/core/bar.md
```
# Bar (lv_bar)
## Overview
The bar object has a background and an indicator on it. The width of the indicator is set according to the current value of the bar.
Vertical bars can be created if the width of the object is smaller than its height.
Not only the end, but also the start value of the bar can be set, which changes the start position of the indicator.
## Parts and Styles
- `LV_PART_MAIN` The background of the bar and it uses the typical background style properties. Adding padding makes the indicator smaller or larger. The `anim_time` style property sets the animation time if the values set with `LV_ANIM_ON`.
- `LV_PART_INDICATOR` The indicator itself; also uses all the typical background properties.
## Usage
### Value and range
A new value can be set by `lv_bar_set_value(bar, new_value, LV_ANIM_ON/OFF)`.
The value is interpreted in a range (minimum and maximum values) which can be modified with `lv_bar_set_range(bar, min, max)`.
The default range is 0..100.
The new value in `lv_bar_set_value` can be set with or without an animation depending on the last parameter (`LV_ANIM_ON/OFF`).
### Modes
The bar can be one of the following modes:
- `LV_BAR_MODE_NORMAL` A normal bar as described above
- `LV_BAR_MODE_SYMMETRICAL` Draw the indicator from the zero value to current value. Requires a negative minimum range and positive maximum range.
- `LV_BAR_MODE_RANGE` Allows setting the start value too by `lv_bar_set_start_value(bar, new_value, LV_ANIM_ON/OFF)`. The start value always has to be smaller than the end value.
## Events
- `LV_EVENT_DRAW_PART_BEGIN` and `LV_EVENT_DRAW_PART_END` are sent for the following parts:
- `LV_BAR_DRAW_PART_INDICATOR` The indicator of the bar
- `part`: `LV_PART_INDICATOR`
- `draw_area`: area of the indicator
- `rect_dsc`
See the events of the [Base object](/widgets/obj) too.
Learn more about [Events](/overview/event).
## Keys
No *Keys* are processed by the object type.
Learn more about [Keys](/overview/indev).
## Example
```eval_rst
.. include:: ../../../examples/widgets/bar/index.rst
```
## API
```eval_rst
.. doxygenfile:: lv_bar.h
:project: lvgl
```