-
-
Notifications
You must be signed in to change notification settings - Fork 39.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Quantum Painter #10174
Quantum Painter #10174
Conversation
1d4c0cd
to
65c27a3
Compare
a1b96ba
to
3430907
Compare
73bad73
to
5d4a647
Compare
6f4043f
to
5129e9a
Compare
5129e9a
to
2518eb6
Compare
ef2aa38
to
fd7e2c7
Compare
I had the same idea of converting images and metadata into separately buildable objects. See https://github.com/manna-harbour/qmk_firmware/blob/crkbd/keyboards/crkbd/keymaps/manna-harbour/readme.org. In addition I implemented automatic rotation of images based on image and display orientation, and automatic conversion of images. If you're interested in adding those features, it would be nice to have a display orientation property that could be set per board so rotation could be completely automatic, and to integrate automatic conversion into the QMK build system. |
Display orientation is already in place, and automated conversion will be done with the CLI. Already in the works, but thanks! |
Great! For "automatic rotation of images based on image and display orientation" I was referring to this part in particular, so that users don't have to deal with display or image orientation at all:
|
fd7e2c7
to
c68bb2f
Compare
…monochrome and palette-based images.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for addressing my review points!
* Install dependencies before executing unit tests. * Split out UTF-8 decoder. * Fixup python formatting rules. * Add documentation for QGF/QFF and the RLE format used. * Add CLI commands for converting images and fonts. * Add stub rules.mk for QP. * Add stream type. * Add base driver and comms interfaces. * Add support for SPI, SPI+D/C comms drivers. * Include <qp.h> when enabled. * Add base support for SPI+D/C+RST panels, as well as concrete implementation of ST7789. * Add support for GC9A01. * Add support for ILI9341. * Add support for ILI9163. * Add support for SSD1351. * Implement qp_setpixel, including pixdata buffer management. * Implement qp_line. * Implement qp_rect. * Implement qp_circle. * Implement qp_ellipse. * Implement palette interpolation. * Allow for streams to work with either flash or RAM. * Image loading. * Font loading. * QGF palette loading. * Progressive decoder of pixel data supporting Raw+RLE, 1-,2-,4-,8-bpp monochrome and palette-based images. * Image drawing. * Animations. * Font rendering. * Check against 256 colours, dump out the loaded palette if debugging enabled. * Fix build. * AVR is not the intended audience. * `qmk format-c` * Generation fix. * First batch of docs. * More docs and examples. * Review comments. * Public API documentation.
Description
I needed a way to draw to an ILI9341 LCD panel. At the moment, QMK's ability to draw to devices is limited and implemented in bespoke manners, without any sort of abstraction layer in front of them.
This PR attempts to introduce the "Quantum Painter" API, which is intended to be a frontend for display devices, providing a unified API and allowing people to implement a minimal driver implementation to make it compatible with QMK.
Currently working hardware:
Types of Changes
Issues Fixed or Closed by This PR
Checklist