Commit Graph

106 Commits

Author SHA1 Message Date
Gabor Kiss-Vamosi
7823db1ded fix: fix area invalidation issue with style_transform_zoom/ange 2022-07-24 16:22:55 +02:00
Gabor Kiss-Vamosi
efe47b17e4 minor fixes 2022-07-21 23:09:54 +02:00
Gabor Kiss-Vamosi
c79501bdce arch: use a flatter directory structure 2022-07-20 11:32:47 +02:00
Gabor Kiss-Vamosi
6104855491 fix(conf): fix a lot of new config realted issues 2022-07-19 17:21:19 +02:00
Gabor Kiss-Vamosi
5369d7d473 arch(conf, api) refactor lv_conf and some API (#3501)
Kconfig and MicroPython config is not updated yet.


* start to refactor lv_conf.h

* further mem refactoring

* create lv_mem_builtin.c/h

* update lv_conf_internal.h

* add lv_strlen and lv_strncpy

* rename LV_DRAW_COMPLEX to LV_USE_DRAW_MASK

* update lv_conf_template

* minor fix
2022-07-19 13:31:42 +02:00
_VIFEXTech
d11171d2bd fix(obj): reset all input devices when disable obj (#3483)
* fix(obj): reset all input devices when disable obj

* remove const

* Replace lv_obj_reset_input with lv_indev_reset

Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2022-07-15 14:21:11 +02:00
Gabor Kiss-Vamosi
5a06fce472 perf(draw): speed up non normal blend modes 2022-07-05 14:54:08 +02:00
embeddedt
9a48de0f8b feat(style) add 'inherit' and 'initial' CSS properties (#3390)
Fixes #3086
2022-06-09 20:20:34 -04:00
Gabor Kiss-Vamosi
9ac8ce69f6 fix(draw): handle non BLEND_MODE_NORMAL for ARGB drawing 2022-06-02 10:16:42 +02:00
nicusorcitu
029eef79c4 feat(gpu): reattach nxp pxp vglite accelerators(#3322)
* feat(pxp/vglite) Attach NXP GPUs to the new draw context.

Create a single NXP draw layer on top of PXP and VGLITE.
Extra changes:
1. Add VGLITE image blits acceleration.
2. Reenable blit split workaround for quality issue in RT500.
3. Increase threshold from 32 to 5000 px to fill/blit with both PXP and VGLITE.
4. Allow to enable both PXP and VGLITE. Add a fallback mechanism:
- by default the PXP will try to accelerate. if that is not supported (or fails
due to threshold limit condition from 3.) then it will fallback to VGLITE.
- if VGLITE does not support that feature (or fails due to threshold limit
condition from 3.) the it will fallback to CPU.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(vglite) Add VGLITE support to draw the backgroud of rectangles.

optim: draw only a circle when radius has value LV_RADIUS_CIRCLE.
optim: to draw rounded corners, use cubic bezier curves

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(vglite) Add VGLITE support to draw arcs.

Use up to 4 bezier curves to optimize the drawing of an arc.
The arc curve has to be constant when growing the angle:
for this we compute sub-arc based on a best approximation of quarter-arc.
use dichotomy to find the sub-arc 't' param, instead of tangent approximation.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(pxp) Add ARGB88888 format support for PXP backend.

Supports per pixel and global alpha blending, and combination of alpha blending with recolor feature.

Signed-off-by: Jerome Evillard <jerome.evillard@nxp.com>
Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(vglite) Add the support of ARGB 32bits color format.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(vglite) Add VGLITE acceleration support for rotation and zoom.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(pxp) Add PXP acceleratin to rotate in blit.

Applies the rotation on the pxp output.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(pxp/vglite) Avoid calling the blend callback from image decoded callback.

Add lv_gpu_nxp_pxp_blit_transform() and lv_gpu_nxp_vglite_blit_transform().
This will simplify a lot the fallback mechanism and the way of adding new
image decoded features.
(MGG-884)

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(pxp) Add image rotate 90x.

Simplify the two steps process by adding the blit_cover and blit_opa functions.

In order to rotate or recolor with opacity, two steps must be fallowed:
1. Run the operation without opa.
2. Blend the result by applying the opa.
(MGG-469)

Obs:
Recolor and rotate is currently not supported with opa or alpha channel.(MGG-883)

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(vglite) Fix incorrect slider widget indicator when vglite acceleration is enabled

(MGG-863)

Signed-off-by: Stefan Babatie <stefan.babatie@nxp.com>
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(pxp) Fix pxp fill (simple rect draw)  on 32 bit color depth.

(MGG-890)

Signed-off-by: Stefan Babatie <stefan.babatie@nxp.com>

* fix(pxp) Separate blit simple by the blit with transformation.

While we run into blit with transformation we have to
decide if the operation needs to be done in one or two steps.
Blit with color format (opa or alpha or chroma key) - require one step: blit_cf().
Blit with rotate or recolor but no color format - require one step: blit_cover().
Blit with rotate or recolor + opa or alpha - require two steps:
blit_opa() = blit_cover() + blit_cf().
Blit with rotate or recolor + chroma key - not supported yet.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(pxp) Add support for recolor with chroma-keying.

(MGG-434)

Signed-off-by: Stefan Babatie <stefan.babatie@nxp.com>

* fix(pxp) Fix temporary buffer allocation limit.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(pxp) Add PXP limitation while rotating images not aligned to 16x16 blocks.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(nxp) Add makefiles.

Tested with:
      working-directory: tests/makefile
      run: make test_file

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* feat(nxp) Update NXP github documentation.

(MGG-864)

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(nxp) Move the API comments of global functions only in the H files to make maintenance simpler.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(nxp/vglite) Fixed some warnings. Remove unused variables.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(nxp) lv_draw_nxp_ctx_deinit() shall simply fallback to sofware call.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(nxp) Fallback to software callbacks if need for argb8565 support.

During rendering, LVGL might initializes new draw_ctxs and start drawing into
a separate buffer (called layer). If the content to be rendered has "holes",
e.g. rounded corner, LVGL temporarily sets the disp_drv.screen_transp flag.
It means the renderers should draw into an ARGB buffer.
With 32 bit color depth it's not a big problem but with 16 bit color depth
the target pixel format is ARGB8565 which is not supported by the GPU.
In this case, the NXP callbacks should fallback to SW rendering.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(pxp) Fix wrong demo widget transparency.

1. Fix alpha inverted calculation for fill with opacity.
2. Fix also the ratio of recoloring for chroma key.

Signed-off-by: Stefan Babatie <stefan.babatie@nxp.com>

* fix(vglite) Remove software pre-multiplication when hardware pre-multiplication is available.

(MGG-886)

Signed-off-by: Stefan Babatie <stefan.babatie@nxp.com>

* doc(vglite) Add vglite initialization info.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(pxp/vglite) Fix unused variable warnings when PXP/VGLite are not enabled simultaneously.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

* fix(pxp) Fixed the color key recoloring on 16 bits color depth.

1. Fixed the arguments of lv_color_mix(), previously was using an inversed logic. But it works anyway.
2. Use LV_COLOR_SET_X for adjusting the channels on both 16 and 32 bits. Fixed the max values.

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>

Co-authored-by: Stefan Babatie <stefan.babatie@nxp.com>
2022-05-24 11:43:57 +02:00
Gabor Kiss-Vamosi
8b15007568 fix(draw): create intermediate layer for blend modes too 2022-04-26 11:23:55 +02:00
Gabor Kiss-Vamosi
318146a2c2 feat(draw): support transforming widgets and improfe sw transform
For details see: https://docs.lvgl.io/master/overview/style.html
2022-04-26 10:45:12 +02:00
woody
07b7eea56c feat(gpu): add SWM341 gpu support (synwit)
* Update lv_gpu_stm32_dma2d.c

fix stm32 DMA2D blend。

* add SWM341 DMA2D support for lvgl

* add SWM341 DMA2D support for lvgl

* add SWM341 DMA2D support for lvgl

* add SWM341 DMA2D support for lvgl

* add SWM341 DMA2D support for lvgl
2022-04-25 15:13:19 +02:00
Gabor Kiss-Vamosi
62d6f3c533 fix(theme): make the basic theme even more simpler 2022-03-12 18:50:19 +01:00
Gabor Kiss-Vamosi
81bfb765e5 fix(draw): futher bg_img draw fixes 2022-01-04 10:27:34 +01:00
Gabor Kiss-Vamosi
c63fb1c593 chore: fix warning 2022-01-03 21:42:04 +01:00
Gabor Kiss-Vamosi
d51aea4dff fix(draw): consider opa and clip corner on bg_img 2022-01-03 21:23:12 +01:00
Gabor Kiss-Vamosi
db53ea925c arch(draw): allow replacing the draw engine
BREAKING CHANGE: the API of lv_draw_... function have been changed
2021-12-21 15:54:22 +01:00
Gabor Kiss-Vamosi
70327bdb2d feat(obj) add LV_OBJ_FLAG_SCROLL_WITH_ARROW 2021-12-17 14:58:23 +01:00
Gabor Kiss-Vamosi
5658cc9444 experiement 2021-12-17 14:58:23 +01:00
Gabor Kiss-Vamosi
ee65410c37 fix(layout) fix layout recalculation trigger in lv_obj_add/clear_fleg 2021-11-30 22:23:37 +01:00
Gabor Kiss-Vamosi
8f6b1f8d6c arch(draw) separate SW renderer to allow replacing it (#2803)
* decouple sw renderer

* simplify blend interface

* make tests pass

* udpate makefiles

* fix warning

* fix build errors

* run code formatter

* antialias fix
2021-11-26 12:44:10 +01:00
ckielstra
b911b72f4b docs: spelling fixes (#2828) 2021-11-23 10:50:18 +01:00
xaowang96
25c2f53a67 fix(obj): in obj event use the current target instead of target (#2785)
When the event is bubbling, use lv_event_get_current_target
to get the obj that needs to be processed

Signed-off-by: wangxuedong <wangxuedong@xiaomi.com>

Co-authored-by: wangxuedong <wangxuedong@xiaomi.com>
2021-11-12 15:35:25 +01:00
guoweilkd
1b7cc1500d fix(border_post): ignore bg_img_opa draw when draw border_post (#2788) 2021-11-10 10:37:31 +01:00
Gabor Kiss-Vamosi
d9c6ad0425 fix(scrollbar) hide the scrollbar if the scrollble flag is removed 2021-09-30 18:20:35 +02:00
Gabor Kiss-Vamosi
188a9467b1 fix(scrollbar) hide the scrollbar if the scrollble flag is removed 2021-09-30 18:06:42 +02:00
Gabor Kiss-Vamosi
a4128a8356 fix(scroll) minor fixes on obj scroll handling
fixes https://github.com/lvgl/lvgl/issues/2547#issuecomment-927242760
2021-09-29 12:06:32 +02:00
Mariotaku
efc5bb40d9 feat(drawing) hardware accelerated rendering by SDL2 (#2484)
* Hardware accelerated SDL render WIP

* Rect drawing code cleanup

* Fixed arc drawing angle
Fixed compact rect drawing

* Refactoring
Fixed cache deinit order

* Image recolor
Drawing left and right border

* Math problems

* Improving draw cache

* Improving line drawing logic

* Improving arc drawing quality

* Added round function

* Attempts to render properly on Pi

* Updated lruc function names

* Updated symbol names

* Saved ram by reusing part of background rect

* Added outline drawing
Removed arc texture caching

* rect drawing cache rendering

* high efficiency rect shadow texture caching

* fixed simple borders drawing

* fixed generic borders drawing

* Simplified text atlas caching logic
Supports chroma keyed image

* Color palette WIP

* Improved draw cache

* Updated defines for better build

* renaming files for better consistency

* fix includes

* Updated lv_conf_internal with generator

* Fixing build issues

* fixed img rotation pivot

* better font atlas caching WIP

* fix includes

* full font atlas support
improved gpu caching for rect

* update conf header

* fix palette creation

* Fixed font atlas key matching

* fixed chroma key image background

* added 3bpp mask palette (WIP)

* fixed caching key initialization

* disabled gpu arc drawing for now
updated naming convention

* updated naming convention

* fix makefile and include path

* improved rect drawing when having masks

* improved rect drawing when having masks

* reduced texture allocation while drawing with mask

* accurate clipping for rects and texts

* fixed build error

* fixed build error

* line drawing WIP

* updated imports

* fixed freezes if LRU has smaller new item

* fixed clipping rect color

* fixed build error

* using built-in free function for LRU key

* Added custom background drawing function

* fixing imports

* fixed shadow bitmap on old SDL libs

* improved draw_img compatibility

* fixing font baking

* fixed font rendering

* fixed lv_draw_line check

* configurable SDL include path

* disabled SDL line drawing implementation

* supports screen resize

* sdl: Remove duplicated object

Observed issue:

  /usr/bin/ld: lv_gpu_sdl_texture_cache.o: \
  in function `_lv_gpu_sdl_texture_cache_init':
  lv_gpu_sdl_texture_cache.c:(.text+0x30): \
  multiple definition of `_lv_gpu_sdl_texture_cache_init'; \
  lv_gpu_sdl_texture_cache.o:lv_gpu_sdl_texture_cache.c:(.text+0x30): \
  first defined here

Forwarded: https://github.com/mariotaku/lvgl/pull/1
Relate-to: https://github.com/lvgl/lvgl/pull/2484
Signed-off-by: Philippe Coval <philippe.coval@huawei.com>

* Reduced opening of image

* Closes image resource properly

* improved draw image logic

* Moved driver related code to lv_drivers

* fixed lv_deinit implicit sdl code invocation

* improved shadow clipping

* fixed outline area invalidation

* updated comments

* formatted code using astyle

* Updated README

* formatted code

* fixed typo

* fixed static declaration

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: Philippe Coval <philippe.coval@huawei.com>
2021-09-16 18:20:32 +02:00
Gabor Kiss-Vamosi
d67dd943ca format run code-formtter.sh
related to #2543
2021-09-13 14:06:26 +02:00
Xiang Xiao
9fc0c3cf98 fix(lv_log.h): remove the duplicated semicolon from LV_LOG_xxx (#2544)
and fix the caller who forget to add semicolon at the line end

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-09-09 15:34:36 +02:00
Gabor Kiss-Vamosi
493ace352f fix(win) enable clip_corner and border_post by default
fixes #2430
2021-08-18 14:09:35 +02:00
Gabor Kiss-Vamosi
a8427915c7 perf(draw) ignore masks if they don't affect the current draw area 2021-08-05 17:39:59 +02:00
Gabor Kiss-Vamosi
637b706ddc perf(draw) reimplement circle drawing algorithms (#2374)
* perf(draw) reimplement circle drawing algorithms

Imporve the speed of circle drawing
Add circle draw caching
Various other speed improvements

* docs describe how to use masks

* fix(draw) add missing GC root usage
2021-07-27 19:16:00 +02:00
Amir Gonnen
4db0071f05 feat(obj) add lv_is_initialized (#2402)
While it's possible to try initialize LVGL after it is already initialized, it warns 'lv_init: already inited' in such case. Therefore it is useful to be able to check on runtime whether LVGL was initialized or not before calling lv_init().
2021-07-24 10:27:16 -04:00
Yin Zhong
1f255b7a0c feat(obj) Backport keypad and encoder scrolling from v7 lv_page to v8 lv_obj (#2390)
* support scrolling scrollable but non-editable objects thru keypad / encoder

* update doc on `lv_obj` scrolling behavior by arrow keys
2021-07-23 14:55:13 +02:00
Gabor Kiss-Vamosi
57cf6610a9 fix(obj style) fix children reposition if the parent's padding changes.
fixes #2368
2021-07-15 20:42:11 +02:00
Gabor Kiss-Vamosi
a04f2dea64 fix(obj) improve how the focusing indev is determined 2021-07-13 16:35:57 +02:00
Gabor Kiss-Vamosi
f03d4b8cb9 fix(obj) detecting which indev sent LV_EVENT_FOCUS
fixes #2359
2021-07-08 17:04:15 +02:00
Gabor Kiss-Vamosi
88c485949f feat(event, widgets) improve the paramter of LV_EVENT_DRAW_PART_BEGIN/END
Add lv_<widget>_draw_part_type_t to widgets to precisly describe the hooked drawings.
Also add class_p element to lv_obj_draw_part_dsc_t to show what widgets lv_<widget>_draw_part_type_t needs to be used.

Related to: https://forum.lvgl.io/t/how-to-add-minor-division-lines-to-a-chart/5366/
2021-07-07 16:19:06 +02:00
Gabor Kiss-Vamosi
b06393747f fix(obj) move clean ups from lv_obj_del to lv_obj_destructor 2021-07-06 13:52:12 +02:00
Gabor Kiss-Vamosi
ebb9ce913e perf(obj) remove lv_obj_get_child_cnt from cycle limit checks 2021-07-01 21:49:04 +02:00
Gabor Kiss-Vamosi
13ed195354 Merge pull request #2313 from NXPmicro/nxp_pxp_vglite_v8-dev
Nxp pxp vglite v8 dev
2021-06-22 11:50:28 +02:00
Gabor Kiss-Vamosi
713b39ecdb fix(obj, switch) do not send LV_EVENT_VALUE_CHANGED twice
fixes #2330
2021-06-22 10:06:28 +02:00
Jozef Bastek
8a2a4a11c8 fix(pxp): update for v8
includes updates from NXP MCU SDK 2.10 with adaptation for lvgl v8:

Updated cache handling

- range limited cache flushing changed to complete cache flush, which is
faster and shold be safe
- flushing done via callback system, so OS specific code is removed
from LVGL

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: pxp: Buffer sync with BLITs

Added buffer synchronisation with BLITs instead of memcpy for PXP.
In LVGL v8, buffer synchronisation acceleration is moved to littlevgl_support.c.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: pxp: updates for v8

cache callback type changed in display driver struct
chroma key name changed

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

gpu: pxp: new log header file for v8

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

core: init PXP accelerator

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
2021-06-21 10:53:38 +02:00
Gabor Kiss-Vamosi
b203167c75 feat(obj) send LV_EVENT_DRAW_PART_BEGIN/END for MAIN and SCROLLBAR parts 2021-06-20 12:35:10 +02:00
Gabor Kiss-Vamosi
428db9494d fix(coords) fix using large coordinates
Fixes #2323
2021-06-17 11:32:49 +02:00
Gabor Kiss-Vamosi
33e433008e chore(assert) add warnign about higher memory usage if LV_USE_ASSERT_STYLE is enabled 2021-06-14 11:07:52 +02:00
Gabor Kiss-Vamosi
e697807cf5 fix(typo) rename LV_OBJ_FLAG_SNAPABLE to LV_OBJ_FLAG_SNAPPABLE 2021-06-09 16:05:39 +02:00
Gabor Kiss-Vamosi
3b58ef14e5 fix(btnmamatrix) fix focus event handling 2021-06-02 14:21:15 +02:00