|
LCDGFX LCD display driver
1.2.0
Lightweight graphics library for SSD1306, SSD1325, SSD1327, SSD1331, SSD1351, SH1106, SH1107, IL9163, ST7735, ST7789, ILI9341, PCD8544 displays over I2C/SPI
|
All notable changes to lcdgfx are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
fontgenerator.py (issue #139): the -g option now takes an optional 3rd argument — -g <first> <count> <width> — that forces every char in that group to an exact pixel width, keeping the glyph centered (narrow chars padded, wider chars cropped). The width is stored per char in the new-format jump table, so it is free at runtime and works with setSpacing(). Ideal for widening thin chars (space, colon, period) without expanding the whole font to a single fixed width (-fw).src/canvas/gfx_compat.h): new header-only GfxCompat<D> adapter (plus makeGfxCompat() helper) that exposes the Adafruit_GFX drawing API on top of any lcdgfx display or canvas, with no external Adafruit_GFX library required.drawPixel, drawFast{H,V}Line, drawLine, draw/fillRect, fillScreen, draw/fillCircle, draw/fillTriangle, draw/fillRoundRect, drawBitmap.setCursor, setTextColor, setTextSize, write, print/println overloads, and Adafruit GFXfont custom-font rendering via setFont(const GFXfont*) (works on paged monochrome and colour displays; PROGMEM fonts supported).0/1 colour is mapped to lcdgfx's mask at compile time (zero runtime cost); colour values pass through unchanged.examples/direct_draw/gfx_compat.LcdGfxMenu / LcdGfxCheckboxMenu — eliminate flicker and scroll artifacts; do not invert checkbox mark itself when row is highlighted (only label text is inverted); checkbox toggle now reflects on screen immediately without needing to move selection.LcdGfxSlider — page-aligned 3-fillRect rendering on SSD1306: knob band lives in full pages strictly between the top/bottom border rows, so border lines are never disturbed and the slider does not flicker.LcdGfxSpinbox — central text band cleared explicitly each frame so value updates do not leave artifacts; border + arrows redrawn cleanly.LcdGfxSlider — horizontal value slider with bounded range and keyboard navigation (up/down). See examples/gui/slider_demo.LcdGfxSpinbox — bounded integer spinbox with configurable step. See examples/gui/spinbox_demo.LcdGfxTextEntry — single-line text-entry widget with cursor and cycleable charset (ASCII default; UTF-8 charset works with a secondary font). See examples/gui/text_entry_demo.LcdGfxXpt2046 — templated SPI driver for XPT2046 resistive touch controllers. Median-of-3 sampling, pressure detection, swappable SPI transport. See examples/touch_demo.TouchCalibration — per-axis affine calibration helper with swap/invert and clamping.LcdGfxMenu::onTouch() and itemAtPoint() — touch-driving the existing menu widget without changing its key API. See examples/gui/menu_touch_demo.lcdgfx::color namespace — header-only, constexpr, to_rgb565 / to_rgb332 / from_rgb / gray (BT.601 weights). Bit-identical to the existing RGB_COLOR16 / RGB_COLOR8 macros.nano_utf8_decode() — stateless UTF-8 decoder in canvas/font_utf8.h. Rejects overlongs, surrogates and codepoints above U+10FFFF.ssd1306xled_font6x8_Cyrillic — proof secondary font covering U+0410..U+042F (А..Я). See examples/utf8_demo.CXXSTD knob in Makefile (defaults to c++11).c++11, c++14 and c++17.docs/controller_matrix.md — capability matrix for every supported display controller.docs/migration_v1_v2.md — migration guide from the v1 API to the v2 API.SSD1325::fillRect 4-bit nibble-packing now respects setColor() for odd columns.make ARCH=linux SDL_EMULATION=y check.