mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
191 lines
11 KiB
Markdown
191 lines
11 KiB
Markdown
# Changelog
|
||
|
||
## v7.2.0 (planned on 04.08.2020)
|
||
Available in the `dev` branch
|
||
|
||
### New features
|
||
- Add `LV_CALENDAR_WEEK_STARTS_MONDAY`
|
||
- Add `lv_chart_set_x_start_point()` function - Set the index of the x-axis start point in the data array
|
||
- Add `lv_chart_set_ext_array()` function - Set an external array of data points to use for the chart
|
||
- Add `lv_chart_set_point_id()` function - Set an individual point value in the chart series directly based on index
|
||
- Add `lv_chart_get_x_start_point()` function - Get the current index of the x-axis start point in the data array
|
||
- Add `lv_chart_get_point_id()` function - Get an individual point value in the chart series directly based on index
|
||
- Add `ext_buf_assigned` bit field to `lv_chart_series_t` structure - it's true if external buffer is assigned to series
|
||
- Add `lv_chart_set_series_axis()` to assign series to primary or secondary axis
|
||
- Add `lv_chart_set_y_range()` to allow setting range of secondary y axis (based on `lv_chart_set_range` but extended with an axis parameter)
|
||
- Allow setting different font for the selected text in `lv_roller`
|
||
- Add `theme->apply_cb` to replace `theme->apply_xcb` to make it compatible with the MicroPython binding
|
||
- Add `lv_theme_set_base()` to allow easy extension of built-in (or any) themes
|
||
- Add `lv_obj_align_x()` and `lv_obj_align_y()` functions
|
||
- Add `lv_obj_align_origo_x()` and `lv_obj_align_origo_y()` functions
|
||
|
||
## v7.1.0 (planned on 07.07.2020)
|
||
*Available in the `master` branch*
|
||
|
||
### New features
|
||
- Add `focus_parent` attribute to `lv_obj`
|
||
- Allow using buttons in encoder input device
|
||
- Add lv_btnmatrix_set/get_align capability
|
||
- DMA2D: Remove dependency on ST CubeMX HAL
|
||
- Added `max_used` propriety to `lv_mem_monitor_t` struct
|
||
- In `lv_init` test if the the strings are UTF-8 encoded.
|
||
- Add `user_data` to themes
|
||
- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems.
|
||
- Add inline function lv_checkbox_get_state(const lv_obj_t * cb) to extend the checkbox functionality.
|
||
- Add inline function lv_checkbox_set_state(const lv_obj_t * cb, lv_btn_state_t state ) to extend the checkbox functionality.
|
||
|
||
### Bugfixes
|
||
- `lv_img` fix invalidation area when angle or zoom changes
|
||
- Update the style handling to support Big endian MCUs
|
||
- Change some methods to support big endian hardware.
|
||
- remove use of c++ keyword 'new' in parameter of function lv_theme_set_base().
|
||
- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems.
|
||
- Fix inserting chars in text area in big endian hardware.
|
||
|
||
## v7.0.2 (16.06.2020)
|
||
|
||
### Bugfixes
|
||
- `lv_textarea` fix wrong cursor position when clicked after the last character
|
||
- Change all text related indices from 16-bit to 32-bit integers throughout whole library. #1545
|
||
- Fix gestures
|
||
- Do not call `set_px_cb` for transparent pixel
|
||
- Fix list button focus in material theme
|
||
- Fix crash when the a text area is cleared with the backspace of a keyboard
|
||
- Add version number to `lv_conf_template.h`
|
||
- Add log in true double buffering mode with `set_px_cb`
|
||
- `lv_dropdown`: fix missing `LV_EVENT_VALUE_CHANGED` event when used with encoder
|
||
- `lv_tileview`: fix if not the {0;0} tile is created first
|
||
- `lv_debug`: restructure to allow asserting in from `lv_misc` too
|
||
- add assert if `_lv_mem_buf_get()` fails
|
||
- `lv_textarea`: fix character delete in password mode
|
||
- Update `LV_OPA_MIN` and `LV_OPA_MAX` to widen the opacity processed range
|
||
- `lv_btnm` fix sending events for hidden buttons
|
||
- `lv_gaguge` make `lv_gauge_set_angle_offset` offset the labels and needles too
|
||
- Fix typo in the API `scrllable` -> `scrollable`
|
||
- `tabview` by default allow auto expanding the page only to right and bottom (#1573)
|
||
- fix crash when drawing gradient to the same color
|
||
- chart: fix memory leak
|
||
|
||
## v7.0.1 (01.06.2020)
|
||
|
||
### Bugfixes
|
||
- Make the Microptyhon working by adding the required variables as GC_ROOT
|
||
- Prefix some internal API functions with `_` to reduce the API of LVGL
|
||
- Fix built-in SimSun CJK font
|
||
- Fix UTF-8 encoding when `LV_USE_ARABIC_PERSIAN_CHARS` is enabled
|
||
- Fix DMA2D usage when 32 bit images directly blended
|
||
- Fix lv_roller in infinite mode when used with encoder
|
||
- Add `lv_theme_get_color_secondary()`
|
||
- Add `LV_COLOR_MIX_ROUND_OFS` to adjust color mixing to make it compatible with the GPU
|
||
- Improve DMA2D blending
|
||
- Remove memcpy from `lv_ll` (caused issues with some optimization settings)
|
||
- `lv_chart` fix X tick drawing
|
||
- Fix vertical dashed line drawing
|
||
- Some additonal minor fixes and formattings
|
||
|
||
## v7.0.0 (18.05.2020)
|
||
|
||
### Documentation
|
||
The docs for v7 is available at https://docs.littlevgl.com/v7/en/html/index.html
|
||
|
||
### Legal changes
|
||
|
||
The name of the project is changed to LVGL and the new website is on https://lvgl.io
|
||
|
||
LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services.
|
||
|
||
|
||
### New drawing system
|
||
Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects.
|
||
A possible use-case of this system is to remove the overflowing content from the rounded edges.
|
||
It also allows drawing perfectly anti-aliased circles, lines, and arcs.
|
||
Internally, the drawings happen by defining masks (such as rounded rectangle, line, angle).
|
||
When something is drawn the currently active masks can make some pixels transparent.
|
||
For example, rectangle borders are drawn by using 2 rectangle masks: one mask removes the inner part and another the outer part.
|
||
|
||
The API in this regard remained the same but some new functions were added:
|
||
- `lv_img_set_zoom`: set image object's zoom factor
|
||
- `lv_img_set_angle`: set image object's angle without using canvas
|
||
- `lv_img_set_pivot`: set the pivot point of rotation
|
||
|
||
|
||
The new drawing engine brought new drawing features too. They are highlighted in the "style" section.
|
||
|
||
### New style system
|
||
The old style system is replaced with a new more flexible and lightweighted one.
|
||
It uses an approach similar to CSS: support cascading styles, inheriting properties and local style properties per object.
|
||
As part of these updates, a lot of objects were reworked and the APIs have been changed.
|
||
|
||
- more shadows options: *offset* and *spread*
|
||
- gradient stop position to shift the gradient area and horizontal gradient
|
||
- `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE` blending modes
|
||
- *clip corner*: crop the content on the rounded corners
|
||
- *text underline* and *strikethrough*
|
||
- dashed vertical and horizontal lines (*dash gap*, *dash_width*)
|
||
- *outline*: a border-like part drawn out of the background. Can have spacing to the background.
|
||
- *pattern*: display and image in the middle of the background or repeat it
|
||
- *value* display a text which is stored in the style. It can be used e.g. as a lighweighted text on buttons too.
|
||
- *margin*: similar to *padding* but used to keep space outside of the object
|
||
|
||
Read the [Style](https://docs.littlevgl.com/v7/en/html/overview/style.html) section of the documentation to learn how the new styles system works.
|
||
|
||
### GPU integration
|
||
To better utilize GPUs, from this version GPU usage can be integrated into LVGL. In `lv_conf.h` any supported GPUs can be enabled with a single configuration option.
|
||
|
||
Right now, only ST's DMA2D (Chrom-ART) is integrated. More will in the upcoming releases.
|
||
|
||
### Renames
|
||
The following object types are renamed:
|
||
- sw -> switch
|
||
- ta -> textarea
|
||
- cb -> checkbox
|
||
- lmeter -> linemeter
|
||
- mbox -> msgbox
|
||
- ddlist -> dropdown
|
||
- btnm -> btnmatrix
|
||
- kb -> keyboard
|
||
- preload -> spinner
|
||
- lv_objx folder -> lv_widgets
|
||
- LV_FIT_FILL -> LV_FIT_PARENT
|
||
- LV_FIT_FLOOD -> LV_FLOOD_MAX
|
||
- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT
|
||
- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM
|
||
|
||
### Reworked and improved object
|
||
- `dropdown`: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right.
|
||
- `label`: `body_draw` is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before)
|
||
- `arc`: can draw bacground too.
|
||
- `btn`: doesn't store styles for each state because it's done naturally in the new style system.
|
||
- `calendar`: highlight the pressed datum. The used styles are changed: use `LV_CALENDAR_PART_DATE` normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work)
|
||
- `chart`: only has `LINE` and `COLUMN` types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. `LV_CHART_PART_SERIES_BG` also added to set a different style for the series area. Padding in `LV_CHART_PART_BG` makes the series area smaller, and it ensures space for axis labels/numbers.
|
||
- `linemeter`, `gauge`: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines.
|
||
- `gauge`: `lv_gauge_set_needle_img` allows use image as needle
|
||
- `canvas`: allow drawing to true color alpha and alpha only canvas, add `lv_canvas_blur_hor/ver` and rename `lv_canvas_rotate` to `lv_canvas_transform`
|
||
- `textarea`: If available in the font use bullet (`U+2022`) character in text area password
|
||
|
||
### New object types
|
||
- `lv_objmask`: masks can be added to it. The children will be masked accordingly.
|
||
|
||
### Others
|
||
- Change the built-in fonts to [Montserrat](https://fonts.google.com/specimen/Montserrat) and add built-in fonts from 12 px to 48 px for every 2nd size.
|
||
- Add example CJK and Arabic/Persian/Hebrew built-in font
|
||
- Add ° and "bullet" to the built-in fonts
|
||
- Add Arabic/Persian script support: change the character according to its position in the text.
|
||
- Add `playback_time` to animations.
|
||
- Add `repeat_count` to animations instead of the current "repeat forever".
|
||
- Replace `LV_LAYOUT_PRETTY` with `LV_LAYOUT_PRETTY_TOP/MID/BOTTOM`
|
||
|
||
### Demos
|
||
- [lv_examples](https://github.com/littlevgl/lv_examples) was reworked and new examples and demos were added
|
||
|
||
### New release policy
|
||
- Maintain this Changelog for every release
|
||
- Save old major version in new branches. E.g. `release/v6`
|
||
- Merge new features and fixes directly into `master` and release a patch or minor releases every 2 weeks.
|
||
|
||
### Migrating from v6 to v7
|
||
- First and foremost, create a new `lv_conf.h` based on `lv_conf_templ.h`.
|
||
- To try the new version it suggested using a simulator project and see the examples.
|
||
- If you have a running project, the most difficult part of the migration is updating to the new style system. Unfortunately, there is no better way than manually updating to the new format.
|
||
- The other parts are mainly minor renames and refactoring as described above.
|