Skip to content

Latest commit

 

History

History
200 lines (167 loc) · 10.9 KB

CHANGELOG.md

File metadata and controls

200 lines (167 loc) · 10.9 KB

Changelog

v7.3.0 (planned on 04.08.2020)

Available in the dev branch

v7.2.0 (planned on 21.07.2020)

Available in the master 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

Bugfixes

  • tileview fix navigation when not screen sized
  • Use 14px font by default to for better compatibility with smaller displays
  • linemeter fix conversation of current value to "level"
  • Fix drawing on right border
  • Set the cursor image non clickable by default

v7.1.0 (07.07.2020)

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
  • img: improve hit test for transformed images

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 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 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 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.