|
| 1 | +# Changelog |
| 2 | + |
| 3 | +## v7.0.1 (under development) |
| 4 | +*Available in the `master` branch* |
| 5 | + |
| 6 | +## v7.0.0 (18.05.2020) |
| 7 | + |
| 8 | +### Documentation |
| 9 | +The docs for v7 is available at https://docs.littlevgl.com/v7/en/html/index.html |
| 10 | + |
| 11 | +### Legal changes |
| 12 | + |
| 13 | +The name of the project is changed to LVGL and the new website is on https://lvgl.io |
| 14 | + |
| 15 | +LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services. |
| 16 | + |
| 17 | + |
| 18 | +### New drawing system |
| 19 | +Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects. |
| 20 | +A possible use-case of this system is to remove the overflowing content from the rounded edges. |
| 21 | +It also allows drawing perfectly anti-aliased circles, lines, and arcs. |
| 22 | +Internally, the drawings happen by defining masks (such as rounded rectangle, line, angle). |
| 23 | +When something is drawn the currently active masks can make some pixels transparent. |
| 24 | +For example, rectangle borders are drawn by using 2 rectangle masks: one mask removes the inner part and another the outer part. |
| 25 | + |
| 26 | +The API in this regard remained the same but some new functions were added: |
| 27 | +- `lv_img_set_zoom`: set image object's zoom factor |
| 28 | +- `lv_img_set_angle`: set image object's angle without using canvas |
| 29 | +- `lv_img_set_pivot`: set the pivot point of rotation |
| 30 | + |
| 31 | + |
| 32 | +The new drawing engine brought new drawing features too. They are highlighted in the "style" section. |
| 33 | + |
| 34 | +### New style system |
| 35 | +The old style system is replaced with a new more flexible and lightweighted one. |
| 36 | +It uses an approach similar to CSS: support cascading styles, inheriting properties and local style properties per object. |
| 37 | +As part of these updates, a lot of objects were reworked and the APIs have been changed. |
| 38 | + |
| 39 | +- more shadows options: *offset* and *spread* |
| 40 | +- gradient stop position to shift the gradient area and horizontal gradient |
| 41 | +- `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE` blending modes |
| 42 | +- *clip corner*: crop the content on the rounded corners |
| 43 | +- *text underline* and *strikethrough* |
| 44 | +- dashed vertical and horizontal lines (*dash gap*, *dash_width*) |
| 45 | +- *outline*: a border-like part drawn out of the background. Can have spacing to the background. |
| 46 | +- *pattern*: display and image in the middle of the background or repeat it |
| 47 | +- *value* display a text which is stored in the style. It can be used e.g. as a lighweighted text on buttons too. |
| 48 | +- *margin*: similar to *padding* but used to keep space outside of the object |
| 49 | + |
| 50 | +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. |
| 51 | + |
| 52 | +### GPU integration |
| 53 | +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. |
| 54 | + |
| 55 | +Right now, only ST's DMA2D (Chrom-ART) is integrated. More will in the upcoming releases. |
| 56 | + |
| 57 | +### Renames |
| 58 | +The following object types are renamed: |
| 59 | +- sw -> switch |
| 60 | +- ta -> textarea |
| 61 | +- cb -> checkbox |
| 62 | +- lmeter -> linemeter |
| 63 | +- mbox -> msgbox |
| 64 | +- ddlist -> dropdown |
| 65 | +- btnm -> btnmatrix |
| 66 | +- kb -> keyboard |
| 67 | +- preload -> spinner |
| 68 | +- lv_objx folder -> lv_widgets |
| 69 | +- LV_FIT_FILL -> LV_FIT_PARENT |
| 70 | +- LV_FIT_FLOOD -> LV_FLOOD_MAX |
| 71 | +- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT |
| 72 | +- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM |
| 73 | + |
| 74 | +### Reworked and improved object |
| 75 | +- `dropdown`: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right. |
| 76 | +- `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) |
| 77 | +- `arc`: can draw bacground too. |
| 78 | +- `btn`: doesn't store styles for each state because it's done naturally in the new style system. |
| 79 | +- `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) |
| 80 | +- `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. |
| 81 | +- `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. |
| 82 | +- `gauge`: `lv_gauge_set_needle_img` allows use image as needle |
| 83 | +- `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` |
| 84 | +- `textarea`: If available in the font use bullet (`U+2022`) character in text area password |
| 85 | + |
| 86 | +### New object types |
| 87 | +- `lv_objmask`: masks can be added to it. The children will be masked accordingly. |
| 88 | + |
| 89 | +### Others |
| 90 | +- 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. |
| 91 | +- Add example CJK and Arabic/Persian/Hebrew built-in font |
| 92 | +- Add ° and "bullet" to the built-in fonts |
| 93 | +- Add Arabic/Persian script support: change the character according to its position in the text. |
| 94 | +- Add `playback_time` to animations. |
| 95 | +- Add `repeat_count` to animations instead of the current "repeat forever". |
| 96 | +- Replace `LV_LAYOUT_PRETTY` with `LV_LAYOUT_PRETTY_TOP/MID/BOTTOM` |
| 97 | + |
| 98 | +### Demos |
| 99 | +- [lv_examples](https://github.com/littlevgl/lv_examples) was reworked and new examples and demos were added |
| 100 | + |
| 101 | +### New release policy |
| 102 | +- Maintain this Changelog for every release |
| 103 | +- Save old major version in new branches. E.g. `release/v6` |
| 104 | +- Merge new features and fixes directly into `master` and release a patch or minor releases every 2 weeks. |
| 105 | + |
| 106 | +### Migrating from v6 to v7 |
| 107 | +- First and foremost, create a new `lv_conf.h` based on `lv_conf_templ.h`. |
| 108 | +- To try the new version it suggested using a simulator project and see the examples. |
| 109 | +- 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. |
| 110 | +- The other parts are mainly minor renames and refactoring as described above. |
0 commit comments