summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorjpe230 <pablin.123.ra@gmail.com>2022-12-12 14:51:14 -0600
committerGitHub <noreply@github.com>2022-12-13 07:51:14 +1100
commit102f22f7e99d87989cd95e10370863c3f96ba7e2 (patch)
tree1b7b27838e01f547714b19932c98e58362354bb8 /docs
parent2d19e59d784582cd2e3768ff4e7f7e0c4618eb2f (diff)
[Core] Quantum Painter - LVGL Integration (#18499)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Diffstat (limited to 'docs')
-rw-r--r--docs/_summary.md1
-rw-r--r--docs/quantum_painter_lvgl.md55
2 files changed, 56 insertions, 0 deletions
diff --git a/docs/_summary.md b/docs/_summary.md
index d388d08391..d2d4bb9b32 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -100,6 +100,7 @@
* Hardware Features
* Displays
* [Quantum Painter](quantum_painter.md)
+ * [Quantum Painter LVGL Integration](quantum_painter_lvgl.md)
* [HD44780 LCD Driver](feature_hd44780.md)
* [ST7565 LCD Driver](feature_st7565.md)
* [OLED Driver](feature_oled_driver.md)
diff --git a/docs/quantum_painter_lvgl.md b/docs/quantum_painter_lvgl.md
new file mode 100644
index 0000000000..3edb37fbce
--- /dev/null
+++ b/docs/quantum_painter_lvgl.md
@@ -0,0 +1,55 @@
+# Quantum Painter LVGL Integration :id=lvgl
+
+LVGL (Light and Versatile Graphics Library) is an open-source graphics library providing everything you need to create an embedded GUI for your board with easy-to-use graphical elements.
+
+LVGL integrates with [Quantum Painter's](quantum_painter.md) API and drivers to render to the display, the hardware supported by Quantum Painter is also supported by LVGL.
+
+?> Keep in mind that enabling the LVGL integration has a big impact in firmware size, it is recommeded to use a supported MCU with >256 kB of flash space.
+
+To learn more about LVGL and how to use it please take a look at their [official documentation](https://docs.lvgl.io/8.2/intro/)
+
+## Enabling LVGL :id=lvgl-enabling
+To enable LVGL to be built into your firmware, add the following to `rules.mk`:
+
+```make
+QUANTUM_PAINTER_ENABLE = yes
+QUANTUM_PAINTER_DRIVERS = ......
+QUANTUM_PAINTER_LVGL_INTEGRATION = yes
+```
+To configure the Quantum Painter Display Drivers please read the [Quantum Painter Display Drivers](quantum_painter.md#quantum-painter-drivers) section.
+
+## Quantum Painter LVGL API :id=lvgl-api
+
+### Quantum Painter LVGL Attach :id=lvgl-api-init
+
+```c
+bool qp_lvgl_attach(painter_device_t device);
+```
+
+The `qp_lvgl_attach` function is used to set up LVGL with the supplied display, and requires an already configured display.
+
+```c
+static painter_device_t display;
+void keyboard_post_init_kb(void) {
+ display = qp_make_.......; // Create the display
+ qp_init(display, QP_ROTATION_0); // Initialise the display
+
+ if (qp_lvgl_attach(display)) { // Attach LVGL to the display
+ ...Your code to draw // Run LVGL specific code to draw
+ }
+}
+```
+To init. the display please read the [Display Initialisation](quantum_painter.md#quantum-painter-api-init) section.
+
+!> Attaching LVGL to a display means LVGL subsequently "owns" the display. Using standard Quantum Painter drawing operations with the display after LVGL attachment will likely result in display artifacts.
+### Quantum Painter LVGL Detach :id=lvgl-api-init
+
+```c
+void qp_lvgl_detach()
+```
+
+The `qp_lvgl_detach` function stops the internal LVGL ticks and releases resources related to it.
+
+## Enabling/Disabling LVGL features :id=lvgl-configuring
+
+You can overwrite LVGL specific features in your `lv_conf.h` file.