Hello all,
While developing a new GUI design on a Riverdi dev board, I had to switch to 16 bit to reduce RAM usage. However noticed ThorVG was using still 32bit and only small (animated) Lottie widgets/controls could be created.
So took a look at the ThorVG code and added a 16bit color implementation, which can be set at compile time. Tried using a full template implementation, but that required too much code changes.
This allows to render to 16bit, instead of first allow a 32bitxy buffer, render, and reduce color, and merge to display buffer!
Because SVG sources are easier to read compared to Lottie, tried to use animated SVG. While looking at the code found two SVG renders, both in LVGL as in ThorVG. Both lacking animations…
So added (basic) animations to the LVGL SVG implementation.
However still the image/widget needed to be rendered in a separate ram buffer which was copied to the display ram. When using large widgets/images a lot of ram is required. So implemented the LVGL vector rendering to use the display ram buffer directly rendering the image in a section of the display ram buffer.
Above allows e.g. to have a full Lottie GUI on a (relative large) display without requiring a lot of additional RAM.
Fixed some small issues, like LV_MIN(dsc->grad.stops_count, LV_GRADIENT_MAX_STOPS)
.
How to continue to have my improvements in the master?
I welcome to take a look:
Comparing lvgl:master…alfen-dev:thorvg-main · lvgl/lvgl · GitHub