24 KiB
Changelog
v8.0.0 (01.06.2021)
v8.0 brings many new features like simplified and more powerful scrolling, new layouts inspired by CSS Flexbox and Grid, simplified and improved widgets, more powerful events, hookable drawing, and more.
v8 is a major change and therefore it's not backward compatible with v7.
Directory structure
- The
lv_
prefix is removed from the folder names - The
docs
is moved to thelvgl
repository - The
examples
are moved to thelvgl
repository - Create an
src/extra
folder for complex widgets:- It makes the core LVGL leaner
- In
extra
we can have a lot and specific widgets - Good place for contributions
Widget changes
lv_cont
removed, layout features are moved tolv_obj
lv_page
removed, scroll features are moved tolv_obj
lv_objmask
the same can be achieved by eventslv_meter
added as the unioin oflv_linemeter
andlv_gauge
lv_span
new widget mimicing HTML<span>
lv_animing
new widget for simple slideshow animations- + many minor changes and improvements
New scrolling
- Support "elastic" scrolling when scrolled in
- Support scroll chaining among any objects types (not only
lv_pages
s) - Remove
lv_drag
. Similar effect can be achieved by setting the position inLV_EVENT_PRESSING
- Add snapping
- Add snap stop to scroll max 1 snap point
New layouts
- CSS Grid-like layout support
- CSS Flexbox-like layout support
Styles
- Optimize and simplify styles
- State is saved in the object instead of the style property
- Object size and position can be set in styles too
Events
- Allow adding multiple events to an object
- A
user_data
can be attached to the added events
Driver changes
lv_disp_drv_t
,lv_indev_drv_t
,lv_fs_drv_t
needs to bestatic
...disp_buf...
is renamed todraw_buf
. See an initialization example here.- No partial update if two screen sized buffers are set
disp_drv->full_refresh = 1
makes always the whole display redraw.hor_res
andver_res
need to be set indisp_drv
indev_read_cb
returnsvoid
. To indicate that there is more that to read setdata->continue_reading = 1
in theread_cb
Other changes
- Remove the copy parameter from create functions
- Simplified File system interface API
- Use a more generic inheritance
- The built-in themes are reworked
lv_obj_align
now saved the alignment and realigns the object automatically but can't be used to align to other than the parentlv_obj_align_to
can align to an object but doesn't save the alignmentlv_pct(x)
can be used to set the size and position in percentage- There are many other changes in widgets that are not detailed here. Please refer to the documentation of the widgets.
New release policy
- We will follow Release branches with GitLab flow
- Minor releases are expected in every 3-4 month
master
will always contain the latest changes
Migrating from v7 to v8
- First and foremost, create a new
lv_conf.h
based onlv_conf_template.h
. - To try the new version it's recommended to use a simulator project and see the examples.
- When migrating your project to v8
- Update the drivers are described above
- Update the styles
- Update the events
- Use the new layouts instead of
lv_cont
features - Use
lv_obj
instead oflv_page
- The other parts are mainly minor renames and refactoring. See the functions' documentation for descriptions.
v7.11.0 (16.03.2021)
New features
- Add better screen orientation management with software rotation support
- Decide text animation's direction based on base_dir (when using LV_USE_BIDI)
Bugfixes
- fix(gauge) fix needle invalidation
- fix(bar) correct symmetric handling for vertical sliders
v7.10.1 (16.02.2021)
Bugfixes
- fix(draw) overlap outline with background to prevent aliasing artifacts
- fix(indev) clear the indev's
act_obj
inlv_indev_reset
- fix(text) fix out of bounds read in
_lv_txt_get_width
- fix(list) scroll list when button is focused using LV_KEY_NEXT/PREV
- fix(text) improve Arabic contextual analysis by adding hyphen processing and proper handling of lam-alef sequence
- fix(delete) delete animation after the children are deleted
- fix(gauge) consider paddings for needle images
v7.10.0 (02.02.2021)
New features
- feat(indev) allow input events to be passed to disabled objects
- feat(spinbox) add inline get_step function for MicroPython support
Bugfixes
- fix(btnmatrix) fix lv_btnmatrix_get_active_btn_text() when used in a group
v7.9.1 (19.01.2021)
Bugfixes
- fix(cpicker) fix division by zero
- fix(dropdown) fix selecting options after the last one
- fix(msgbox) use the animation time provided
- fix(gpu_nxp_pxp) fix incorrect define name
- fix(indev) don't leave edit mode if there is only one object in the group
- fix(draw_rect) fix draw pattern stack-use-after-scope error
v7.9.0 (05.01.2021)
New features
- feat(chart) add lv_chart_remove_series and lv_chart_hide_series
- feat(img_cahce) allow disabling image caching
- calendar: make get_day_of_week() public
- Added support for Zephyr integration
Bugfixes
- fix(draw_rect) free buffer used for arabic processing
- fix(win) arabic process the title of the window
- fix(dropdown) arabic process the option in lv_dropdown_add_option
- fix(textarea) buffer overflow in password mode with UTF-8 characters
- fix(textarea) cursor position after hiding character in password mode
- fix(linemeter) draw critical lines with correct color
- fix(lv_conf_internal) be sure Kconfig defines are always uppercase
- fix(kconfig) handle disable sprintf float correctly.
- fix(layout) stop layout after recursion threshold is reached
- fix(gauge) fix redraw with image needle
v7.8.1 (15.12.2020)
Bugfixes
- fix(lv_scr_load_anim) fix when multiple screen are loaded at tsame time with delay
- fix(page) fix LV_SCOLLBAR_MODE_DRAG
v7.8.0 (01.12.2020)
New features
- make DMA2D non blocking
- add unscii-16 built-in font
- add KConfig
- add lv_refr_get_fps_avg()
Bugfixes
- fix(btnmatrix) handle arabic texts in button matrices
- fix(indev) disabled object shouldn't absorb clicks but let the parent to be clicked
- fix(arabic) support processing again already processed texts with _lv_txt_ap_proc
- fix(textarea) support Arabic letter connections
- fix(dropdown) support Arabic letter connections
- fix(value_str) support Arabic letter connections in value string property
- fix(indev) in LV_INDEV_TYPE_BUTTON recognize 1 cycle long presses too
- fix(arc) make arc work with encoder
- fix(slider) adjusting the left knob too with encoder
- fix reference to LV_DRAW_BUF_MAX_NUM in lv_mem.c
- fix(polygon draw) join adjacent points if they are on the same coordinate
- fix(linemeter) fix invalidation when setting new value
- fix(table) add missing invalidation when changing cell type
- refactor(roller) rename LV_ROLLER_MODE_INIFINITE -> LV_ROLLER_MODE_INFINITE
v7.7.2 (17.11.2020)
Bugfixes
- fix(draw_triangle): fix polygon/triangle drawing when the order of points is counter-clockwise
- fix(btnmatrix): fix setting the same map with modified pointers
- fix(arc) fix and improve arc dragging
- label: Repair calculate back
dot
character logical error which cause infinite loop. - fix(theme_material): remove the bottom border from tabview header
- fix(imgbtn) guess a the closest available state with valid src
- fix(spinbox) update cursor position in lv_spinbox_set_step
v7.7.1 (03.11.2020)
Bugfixes
- Respect btnmatrix's
one_check
inlv_btnmatrix_set_btn_ctrl
- Gauge: make the needle images to use the styles from
LV_GAUGE_PART_PART
- Group: fix in
lv_group_remove_obj
to handle deleting hidden obejcts correctly
v7.7.0 (20.10.2020)
New features
- Add PXP GPU support (for NXP MCUs)
- Add VG-Lite GPU support (for NXP MCUs)
- Allow max. 16 cell types for table
- Add
lv_table_set_text_fmt()
- Use margin on calendar header to set distances and padding to the size of the header
- Add
text_sel_bg
style property
Bugfixes
- Theme update to support text selection background
- Fix imgbtn state change
- Support RTL in table (draw columns right to left)
- Support RTL in pretty layout (draw columns right to left)
- Skip objects in groups if they are in disabled state
- Fix dropdown selection with RTL basedirection
- Fix rectangle border drawing with large width
- Fix
lv_win_clean()
v7.6.1 (06.10.2020)
Bugfixes
- Fix BIDI support in dropdown list
- Fix copying base dir in
lv_obj_create
- Handle sub pixel rendering in font loader
- Fix transitions with style caching
- Fix click focus
- Fix imgbtn image switching with empty style
- Material theme: do not set the text font to allow easy global font change
v7.6.0 (22.09.2020)
New features
- Check whether any style property has changed on a state change to decide if any redraw is required
Bugfixes
- Fix selection of options with non-ASCII letters in dropdown list
- Fix font loader to support LV_FONT_FMT_TXT_LARGE
v7.5.0 (15.09.2020)
New features
- Add
clean_dcache_cb
andlv_disp_clean_dcache
to enable users to use their own cache management function - Add
gpu_wait_cb
to wait until the GPU is working. It allows to run CPU a wait only when the rendered data is needed. - Add 10px and 8ox built in fonts
Bugfixes
- Fix unexpected DEFOCUS on lv_page when clicking to bg after the scrollable
- Fix
lv_obj_del
andlv_obj_clean
if the children list changed during deletion. - Adjust button matrix button width to include padding when spanning multiple units.
- Add rounding to btnmatrix line height calculation
- Add
decmopr_buf
to GC roots - Fix divisioin by zero in draw_pattern (lv_draw_rect.c) if the image or letter is not found
- Fix drawing images with 1 px height or width
v7.4.0 (01.09.2020)
The main new features of v7.4 are run-time font loading, style caching and arc knob with value setting by click.
New features
- Add
lv_font_load()
function - Loads alv_font_t
object from a binary font file - Add
lv_font_free()
function - Frees the memory allocated by thelv_font_load()
function - Add style caching to reduce access time of properties with default value
- arc: add set value by click feature
- arc: add
LV_ARC_PART_KNOB
similarly to slider - send gestures event if the object was dragged. User can check dragging with
lv_indev_is_dragging(lv_indev_act())
in the event function.
Bugfixes
- Fix color bleeding on border drawing
- Fix using 'LV_SCROLLBAR_UNHIDE' after 'LV_SCROLLBAR_ON'
- Fix croping of last column/row if an image is zoomed
- Fix zooming and rotateing mosaic images
- Fix deleting tabview with LEFT/RIGHT tab position
- Fix btnmatrix to not send event when CLICK_TRIG = true and the cursor slid from a pressed button
- Fix roller width if selected text is larger than the normal
v7.3.1 (18.08.2020)
Bugfixes
- Fix drawing value string twice
- Rename
lv_chart_clear_serie
tolv_chart_clear_series
andlv_obj_align_origo
tolv_obj_align_mid
- Add linemeter's mirror feature again
- Fix text decor (udnerline strikethrough) with older versions of font converter
- Fix setting local style property multiple times
- Add missing background drawing and radius handling to image button
- Allow adding extra label to list buttons
- Fix crash if
lv_table_set_col_cnt
is called beforelv_table_set_row_cnt
for the first time - Fix overflow in large image transformations
- Limit extra button click area of button matrix's buttons. With large paddings it was counter intuitive. (Gaps are mapped to button when clicked).
- Fix
lv_btnmatrix_set_one_check
not forcing exactly one button to be checked - Fix color picker invalidation in rectangle mode
- Init disabled days to gray color in calendar
v7.3.0 (04.08.2020)
New features
- Add
lv_task_get_next
- Add
lv_event_send_refresh
,lv_event_send_refresh_recursive
to easily sendLV_EVENT_REFRESH
to object - Add
lv_tabview_set_tab_name()
function - used to change a tab's name - Add
LV_THEME_MATERIAL_FLAG_NO_TRANSITION
andLV_THEME_MATERIAL_FLAG_NO_FOCUS
flags - Reduce code size by adding:
LV_USE_FONT_COMPRESSED
andLV_FONT_USE_SUBPX
and applying some optimization - Add
LV_MEMCPY_MEMSET_STD
to use standardmemcpy
andmemset
Bugfixes
- Do not print warning for missing glyph if its height OR width is zero.
- Prevent duplicated sending of
LV_EVENT_INSERT
from text area - Tidy outer edges of cpicker widget.
- Remove duplicated lines from
lv_tabview_add_tab
- btnmatrix: hadle combined states of buttons (e.g. chacked + disabled)
- textarea: fix typo in lv_textarea_set_sscrollbar_mode
- gauge: fix image needle drawing
- fix using freed memory in _lv_style_list_remove_style
v7.2.0 (21.07.2020)
New features
- Add screen transitions with
lv_scr_load_anim()
- Add display background color, wallpaper and opacity. Shown when the screen is transparent. Can be used with
lv_disp_set_bg_opa/color/image()
. - 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 tolv_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 onlv_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 replacetheme->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()
andlv_obj_align_y()
functions - Add
lv_obj_align_origo_x()
andlv_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
- Improve mono theme when used with keyboard or encoder
v7.1.0 (07.07.2020)
New features
- Add
focus_parent
attribute tolv_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 tolv_mem_monitor_t
struct - In
lv_init
test if 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 missingLV_EVENT_VALUE_CHANGED
event when used with encoderlv_tileview
: fix if not the {0;0} tile is created firstlv_debug
: restructure to allow asserting in fromlv_misc
too- add assert if
_lv_mem_buf_get()
fails lv_textarea
: fix character delete in password mode- Update
LV_OPA_MIN
andLV_OPA_MAX
to widen the opacity processed range lv_btnm
fix sending events for hidden buttonslv_gaguge
makelv_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 additional 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 factorlv_img_set_angle
: set image object's angle without using canvaslv_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: useLV_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 hasLINE
andCOLUMN
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 inLV_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 needlecanvas
: allow drawing to true color alpha and alpha only canvas, addlv_canvas_blur_hor/ver
and renamelv_canvas_rotate
tolv_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
withLV_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 onlv_conf_template.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.