diff options
author | Nick Brassel <[email protected]> | 2022-04-13 18:00:18 +1000 |
---|---|---|
committer | GitHub <[email protected]> | 2022-04-13 18:00:18 +1000 |
commit | 1f2b1dedccdf21b629c45ece80b4ca32f6653296 (patch) | |
tree | a4283b928fe11c6662be10067314531f12774152 /docs/quantum_painter_rle.md | |
parent | 1dbbd2b6b068b9f921ebc0341c890df16a491007 (diff) | |
download | qmk_firmware-1f2b1dedccdf21b629c45ece80b4ca32f6653296.tar.gz qmk_firmware-1f2b1dedccdf21b629c45ece80b4ca32f6653296.zip |
Quantum Painter (#10174)
* 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.
Diffstat (limited to 'docs/quantum_painter_rle.md')
-rw-r--r-- | docs/quantum_painter_rle.md | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/docs/quantum_painter_rle.md b/docs/quantum_painter_rle.md new file mode 100644 index 0000000000..dcb9a1e1a7 --- /dev/null +++ b/docs/quantum_painter_rle.md @@ -0,0 +1,29 @@ +# QMK QGF/QFF RLE data schema :id=qmk-qp-rle-schema + +There are two "modes" to the RLE algorithm used in both [QGF](quantum_painter_qgf.md)/[QFF](quantum_painter_qff.md): + +* Non-repeating sections of octets, with associated length of up to `128` octets + * `length` = `marker - 128` + * A corresponding `length` number of octets follow directly after the marker octet +* Repeated octet with associated length, with associated length of up to `128` + * `length` = `marker` + * A single octet follows the marker that should be repeated `length` times. + +Decoder pseudocode: +``` +while !EOF + marker = READ_OCTET() + + if marker >= 128 + length = marker - 128 + for i = 0 ... length-1 + c = READ_OCTET() + WRITE_OCTET(c) + + else + length = marker + c = READ_OCTET() + for i = 0 ... length-1 + WRITE_OCTET(c) + +``` |