TinyGPU
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
tinygpu Namespace Reference

Namespaces

namespace  asciifont_detail
 Raw glyph data for the fonts converted from STM32-EVAL fonts.c. Not part of the public API; use Font8x8/Font8x12/Font12x12/Font16x24.
 

Classes

class  AVIWriter
 Writes a simple AVI movie containing RGB565 frames. More...
 
class  BitmapFont
 Fixed-size bitmap font backed by a caller-supplied glyph table. More...
 
class  BMPExporter
 Writes TinyGPU surfaces as uncompressed 24-bit BMP data. More...
 
class  BMPParser
 Incremental BMP decoder for TinyGPU framebuffers. More...
 
struct  CalibrationData
 Touch calibration configuration. More...
 
class  CartesianView
 Bottom-left Cartesian coordinate view over an existing Surface. More...
 
class  DeviceOutput
 Hardware abstraction for writing framebuffers to SPI-based color displays. More...
 
class  DisplayDriver
 
class  DisplayDriverDSI
 Base driver for MIPI-DSI panels. All of the DSI PHY/lane bring-up, command-channel writes and video-timing/framebuffer scan-out are handled by an IDSIBus (dependency-injected, see the constructor below), not by this class - this class only turns ISurface writes into drawBitmap() calls and byte-swaps into the bus's expected native RGB565 order (see writeData()). That split is what makes this family portable: adding a platform means implementing IDSIBus once (see DSIBusESP32.h, the ESP32-P4 DBI+DPI path; DSIBusSTM32.h, STM32's HAL_DSI+LTDC path), while every panel subclass (ST7701Driver, ...) keeps working unchanged on every platform that has a bus. More...
 
class  DisplayDriverParallel8
 Common base class for 8-bit parallel ("Intel 8080"-style) TFT display drivers: 8 data lines (D0-D7), WR (write strobe), RD (read strobe, unused - this class only writes), RS/DC (command vs. data) and CS. This is the bus MCUFRIEND-style shields and many 40-pin parallel TFT breakout boards use, wired straight to 8 GPIOs rather than through SPI/QSPI - no dedicated bus peripheral is assumed, every data line and the WR strobe is bit-banged via digitalWrite(), the same portable approach TinyGPU/Input/TouchDriverArduino.h's TouchDriverBitBang uses for a resistive touch panel's four GPIO pins. This trades throughput (one digitalWrite() per bit, per byte) for working unmodified on any Arduino core - a hardware-accelerated 8080 driver (e.g. ESP32's LCD_CAM/ esp_lcd_panel_io_i80) would be faster but ties the implementation to one platform's peripheral, the same tradeoff DisplayDriverQSPI.h already makes explicitly for ESP32-only QSPI. More...
 
class  DisplayDriverParallel8ESP32
 Hardware-accelerated 8-bit parallel ("Intel 8080"-style) TFT display driver for ESP32-family targets, built on ESP-IDF's esp_lcd panel-IO layer - the same layer DisplayDriverQSPI.h uses for QSPI, just pointed at a different underlying peripheral. Where DisplayDriverSPI.h's hardware-parallel counterpart (DisplayDriverParallel8.h) bit-bangs D0-D7 one digitalWrite() per bit, this class drives the bus via DMA through whichever peripheral the target actually has: More...
 
class  DisplayDriverParallel8RP2040
 RP2040 PIO/DMA-accelerated 8-bit parallel ("Intel 8080"-style) TFT display driver. D0-D7 and WR are driven by one PIO state machine (see kLcd8080WriteProgram above) instead of bit-banged via digitalWrite() - see DisplayDriverParallel8.h for the portable bit-banged version this mirrors, and DisplayDriverParallel8ESP32.h for the equivalent ESP32 LCD_CAM/PARLIO-peripheral version. DC/CS/RST stay on plain GPIO (Arduino pinMode()/digitalWrite()), same as those two. More...
 
class  DisplayDriverQSPI
 Base driver for QSPI ("4-wire quad SPI") TFT panels: 1 clock, 1 chip-select, 4 data lines, no separate D/C pin. Used by a family of compact panel controllers (NV3041A, ST77916, CO5300, SH8601, AXS15231B, ...) that all speak a de-facto-standardized QSPI wire protocol - see IQSPIBus.h for the exact 32-bit command-frame/data layout. More...
 
class  DisplayDriverSDL
 Display class for rendering a Surface<RGB565> using the SDL2 library. This class can be used to display the contents of a TinyGPU Surface<RGB565> on a desktop environment for testing and debugging purposes. More...
 
class  DisplayDriverSPI
 Common base class for SPI-based display drivers. More...
 
class  DisplayDriverSTM32F723Discovery
 DisplayDriver<RGB565> wrapping the stm32f723-disco library's LCD class - the library owns the panel's init sequence and pixel output entirely (STM32Cube BSP driving the STM32F723's FMC peripheral), so this class is a thin adapter rather than a bus-level driver like DisplayDriverSPI/QSPI/DSI. Fixed 240x240 resolution - the panel is square, so width()/height() don't change with orientation. More...
 
class  DisplayDriverTFTeSPI
 Display driver that renders a TinyGPU surface through Bodmer's TFT_eSPI (https://github.com/Bodmer/TFT_eSPI) instead of one of this library's own SPI panel drivers (DisplayDriverSPI/QSPI/DSI) - useful if you already have a working TFT_eSPI User_Setup.h for your panel and would rather reuse it than duplicate the same init sequence/pin wiring here. More...
 
class  DSIBusESP32
 IDSIBus backend for ESP32-P4, built on ESP-IDF's DBI (command channel) + DPI (video-timing channel) split - the interface ESP32-P4 exposes for DSI LCDs. A DPI panel has no address-window/RAMWR concept: esp_lcd_new_panel_dpi() allocates a screen-sized, DMA-scanned framebuffer up front, and esp_lcd_panel_draw_bitmap() writes straight into a rect of it - the continuously-running DPI bridge just scans whatever's currently there. More...
 
class  DSIBusSTM32
 IDSIBus backend for STM32 parts with a DSI host + LTDC (F469/ F479, F769/F779, H747/H757, U5x9, ...), built on STM32Cube HAL's HAL_DSI_* (command channel, adapted/video-mode DSI wrapper) and HAL_LTDC_* (the pixel-timing generator/framebuffer scanner DSI sits in front of on these parts - conceptually the same role ESP32-P4's DPI peripheral plays for DSIBusESP32). More...
 
class  Font12x12
 12x12 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII12x12_Table. More...
 
class  Font16x24
 16x24 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII16x24_Table. More...
 
class  Font5x7
 Fixed-size 5x7 bitmap font with ASCII and extended character support. More...
 
class  Font8x12
 8x12 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII8x12_Table. More...
 
class  Font8x8
 8x8 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII8x8_Table. More...
 
class  FrameBuffer
 Framebuffer with sprite placement and background restoration support. More...
 
class  GammaTable
 Precomputed 8-bit gamma correction lookup table. More...
 
class  GestureDetector
 Recognizes touch gestures from a stream of single-point touch samples, and reports them through a single callback. More...
 
struct  GestureEvent
 
class  HX8357Driver
 Driver for HX8357 SPI display controller. More...
 
class  HX8357Driver8080
 Driver for HX8357 8-bit parallel display controller. More...
 
struct  I2SPins
 
class  IDSIBus
 Abstraction over the transport used by DisplayDriverDSI (see TinyGPU/Drivers/DisplayDriverDSI.h) to talk to MIPI-DSI panels: a low-speed command channel (DCS/vendor register writes, used for the panel's init sequence) plus a continuously-scanned video channel backed by a framebuffer that draws address into directly - there's no address-window/RAMWR concept the way SPI/QSPI panels have. More...
 
class  IFont
 Font rendering interface for TinyGPU-compatible framebuffers. More...
 
class  ILI9341Driver
 Driver for ILI9341 SPI display controller. More...
 
class  ILI9341Driver8080
 Driver for ILI9341 8-bit parallel display controller. More...
 
class  ILI9341Driver8080ESP32
 Driver for ILI9341 8-bit parallel display controller, driven via ESP32's LCD_CAM/I80 or PARLIO peripheral (see DisplayDriverParallel8ESP32). More...
 
class  ILI9341Driver8080RP2040
 Driver for ILI9341 8-bit parallel display controller, driven via RP2040's PIO/DMA (see DisplayDriverParallel8RP2040). More...
 
class  ILI9342Driver
 Driver for ILI9342 SPI display controller. More...
 
class  IQSPIBus
 Abstraction over the transport used by DisplayDriverQSPI (see TinyGPU/Drivers/DisplayDriverQSPI.h) to talk to the family of QSPI TFT panel controllers (NV3041A, ST77916, CO5300, SH8601, AXS15231B, ...) that wrap every command in a 32-bit frame: opcode byte (0x02 = "write, parameter bytes follow over 1 line", 0x32 = "write, color/pixel data follows over 4 lines"), the MIPI-DCS-style command byte, then 16 unused bits. More...
 
class  ISurface
 Abstract framebuffer and drawing interface for TinyGPU surfaces. More...
 
class  JPEGParser
 Decodes baseline JPEG images into a TinyGPU ISurface, using pschatzmann/TinyJPEG (https://github.com/pschatzmann/TinyJPEG) as the underlying decoder. More...
 
class  LCDBoard
 
class  LCDBoardDesktopSDL
 Desktop SDL2 window standing in for a physical LCD board. Window size is set at construction time (default 320x240) since - unlike the hardware boards in LCDBoardsESP32.h - there is no fixed panel to match. More...
 
class  LCDBoardESP32S3_2_8Display
 "2.8" ESP32-S3 Display" - ILI9341 SPI TFT + FT6336G capacitive touch (I2C, shares its bus with the board's ES8311 audio codec). (FBBA0125-002) - also named ESP32-S3 Hosyond Display More...
 
class  LCDBoardGuitionESP32_LVGL_2_4Display
 "ESP32 Arduino LVGL WiFi&Bluetooth Development Board, 2.4" LCD TFT Module" - ILI9341 SPI TFT + CST816S capacitive touch, no PSRAM. (ESP32-2432S028R) - also named ESP32 Cheap Yellow Diplay More...
 
class  LCDBoardGuitionESP32H4_4_3Display
 "Guition ESP32-P4 4.3" 480x800 Capacitive Touch Display" (JC4880P443C_I_W): it has an ST7701 MIPI-DSI display, GT911 capacitive touch (I2C), and an ES8311 audio codec with NS4150 speaker amp (speaker output only - this board has no mic). The board also has a WiFi SDIO interface and an SD_MMC interface, both of which need their own pin setup. More...
 
class  LCDBoardGuitionESP32S3_4_3Display
 "Guition ESP32-S3 4.3" 480x272 Capacitive Touch Display" (JC4827W543C_I): it has a NV3041A QSPI display, GT911 capacitive touch NV3041A QSPI TFT + GT911 capacitive touch (I2C) + NS4168 speaker amp (speaker output only - no codec/mic on this board). More...
 
class  LCDBoardSTM32F723Discovery
 "STM32F723E-Discovery" - on-board 240x240 ST7789H2 LCD (FMC) + FT6x06/FT3x67 capacitive touch, via the stm32f723-disco library. More...
 
class  LCDBoardTFTeSPI
 LCDBoard wrapping a single TFT_eSPI instance, shared between its DisplayDriverTFTeSPI and (optional) TouchDriverTFTeSPI. More...
 
class  LCDBoardWeActMiniSTM32H750
 WeAct "MiniSTM32H7xx" core board (STM32H750VBT6/STM32H743VIT6) with its bundled, ribbon/FPC-mounted 0.96" 160x80 ST7735 TFT, mounted landscape: https://github.com/WeActStudio/MiniSTM32H7xx. More...
 
struct  LEDPins
 
class  LinePrinter
 Helper for printing wrapped lines of text onto a TinyGPU target. More...
 
class  NV3041ADriver
 Driver for the New Vision NV3041A QSPI TFT controller (480x272 panels on Guition/Sunton JC4827W543-class ESP32-S3 boards). More...
 
struct  Point
 Touch point. More...
 
class  PSRAMAllocator
 STL-compatible allocator that prefers PSRAM allocation with fallback. More...
 
class  QSPIBusBitBang
 Portable, software-driven IQSPIBus backend built only on pinMode()/digitalWrite() - works on any Arduino core, notably RP2040 and STM32, neither of which exposes a hardware peripheral for this panel family's quad-SPI protocol the way ESP-IDF's esp_lcd does for ESP32 (see QSPIBusESP32.h): More...
 
class  QSPIBusESP32
 Hardware-accelerated IQSPIBus backend for ESP32, built on top of ESP-IDF's esp_lcd_new_panel_io_spi(quad_mode=1) - DMA-driven, with a persistent scratch buffer and completion callback for writeColor() (see that method's doc comment for why: esp_lcd_panel_io_tx_color() is asynchronous). This is a straight extraction of what used to live directly in DisplayDriverQSPI before the IQSPIBus split - behavior is unchanged from before. More...
 
struct  Rect
 Represents a rectangular area on the screen or surface. More...
 
class  RGB565
 RGB color stored in 16-bit RGB565 format, byte-swapped from the conventional bit layout. More...
 
class  RGB666
 RGB color stored in 18-bit RGB666 format. More...
 
class  RGB888
 RGB color stored in 24-bit RGB888 format. More...
 
class  SPIClass
 
struct  SPISettings
 
class  SpriteDisplay
 
struct  SpriteInfo
 
struct  SpriteInfoWithoutBackground
 
class  ST7701Driver
 Driver for the Sitronix ST7701S MIPI-DSI TFT controller, as wired on the Guition JC4880P443C_I_W (ESP32-P4, 480x800 portrait, 4.3"). More...
 
class  ST7735Driver
 Driver for ST7735 SPI display controller. More...
 
class  ST7735Driver8080
 Driver for ST7735 8-bit parallel display controller. More...
 
class  ST7735DriverHardwareSPI
 Hardware-SPI4 ST7735 driver for the WeAct MiniSTM32H7xx's bundled 0.96" 160x80 TFT. More...
 
class  ST7789Driver
 Driver for ST7789 SPI display controller. More...
 
class  ST7789Driver8080
 Driver for ST7789 8-bit parallel display controller. More...
 
class  ST7789Driver8080ESP32
 Driver for ST7789 8-bit parallel display controller, driven via ESP32's LCD_CAM/I80 or PARLIO peripheral (see DisplayDriverParallel8ESP32). More...
 
class  ST7789Driver8080RP2040
 Driver for ST7789 8-bit parallel display controller, driven via RP2040's PIO/DMA (see DisplayDriverParallel8RP2040). More...
 
class  ST7796Driver
 Driver for ST7796 SPI display controller. More...
 
class  ST7796Driver8080
 Driver for ST7796 8-bit parallel display controller. More...
 
class  Surface
 In-memory bitmap surface with basic 2D drawing and text rendering. More...
 
class  SurfaceBase
 Base class for 2D surfaces with drawing and text rendering support. More...
 
class  SurfaceMonochrome
 In-memory 1-bit (monochrome) bitmap surface with 2D drawing and text rendering. More...
 
class  SurfaceWithExternalBuffer
 In-memory bitmap surface with basic 2D drawing and text rendering. More...
 
class  TinyGPULoggerClass
 Simple header-only logger for TinyGPU with log levels and vararg support. More...
 
class  TouchDriver
 Base class for touch controllers. More...
 
class  TouchDriverBitBang
 Bit-banged 4-wire resistive touch panel driver. More...
 
class  TouchDriverCST816S
 CST816S capacitive touch controller. More...
 
class  TouchDriverFT6236
 FT6236 / FT6336 capacitive touch controller. More...
 
class  TouchDriverGT911
 GT911 capacitive touch controller. More...
 
class  TouchDriverSDL
 Maps the desktop mouse to a TouchDriver, for exercising touch-driven UI (buttons, sliders, ...) on the SDL desktop backend without any physical touch hardware. More...
 
class  TouchDriverSTM32F723Discovery
 TouchDriver wrapping the stm32f723-disco library's TouchScreen class (on-board FT6x06/FT3x67 capacitive touch controller - bus/pin setup is entirely owned by the library, same as the LCD side). More...
 
class  TouchDriverTFTeSPI
 Touch driver that reads through Bodmer's TFT_eSPI (https://github.com/Bodmer/TFT_eSPI) resistive touch support (TFT_eSPI::getTouch()) instead of one of this library's own touch controller drivers (TouchDriverXPT2046, ...) - the companion to DisplayDriverTFTeSPI, for a panel already wired up and calibrated through TFT_eSPI. More...
 
class  TouchDriverXPT2046
 XPT2046 resistive touch controller. More...
 
class  TwoWire
 
class  WindowedSurface
 An ISurface that reports a full width x height extent but physically redirects every pixel write into a much smaller backing surface, offset by (offsetX, offsetY), dropping anything that then falls outside backing's own bounds. More...
 
class  WireFrame3D
 Lightweight 3D wireframe renderer for TinyGPU drawing targets. More...
 

Typedefs

using FBBA0125_002 = LCDBoardESP32S3_2_8Display
 
using ESP32S3HosyondLCD = LCDBoardESP32S3_2_8Display
 
using JC4827W543C_I = LCDBoardGuitionESP32S3_4_3Display
 
using ESP32_2432S028R = LCDBoardGuitionESP32_LVGL_2_4Display
 
using ESP32CheapYellowDisplay = LCDBoardGuitionESP32_LVGL_2_4Display
 
using JC4880P443C_I_W = LCDBoardGuitionESP32H4_4_3Display
 
using DesktopSDL = LCDBoardDesktopSDL
 
using MiniSTM32H750 = LCDBoardWeActMiniSTM32H750
 
using MiniSTM32H7xx = LCDBoardWeActMiniSTM32H750
 
using STM32F723Discovery = LCDBoardSTM32F723Discovery
 
using TouchDriverFT6206 = TouchDriverFT6236
 The FT6206 is a drop-in replacement for the FT6236, so we can alias it here.
 
using FrameBufferMonochrome = FrameBuffer< bool, SurfaceMonochrome >
 FrameBufferMonochrome is a framebuffer specialized for 1-bit (monochrome) pixel storage.
 
template<typename RGB_T = RGB565>
using Sprite = Surface< RGB_T >
 Alias for a sprite surface with the same pixel format as the main surface.
 
using SpriteMonochrome = SurfaceMonochrome
 Alias for a monochrome sprite surface.
 
template<typename T >
using Vector = std::vector< T >
 
using SurfaceRGB565 = Surface< RGB565 >
 Surface with RGB565 pixel format.
 
using SurfaceRGB666 = Surface< RGB666 >
 Surface with RGB666 pixel format.
 
using SurfaceRGB888 = Surface< RGB888 >
 Surface with RGB888 pixel format.
 
using FrameBufferRGB565 = FrameBuffer< RGB565 >
 FrameBuffer with RGB565 pixel format.
 
using FrameBufferRGB666 = FrameBuffer< RGB666 >
 FrameBuffer with RGB666 pixel format.
 
using FrameBufferRGB888 = FrameBuffer< RGB888 >
 FrameBuffer with RGB888 pixel format.
 
using SpriteRGB565 = Sprite< RGB565 >
 Sprite with RGB565 pixel format.
 
using SpriteRGB666 = Sprite< RGB666 >
 Sprite with RGB666 pixel format.
 
using SpriteRGB888 = Sprite< RGB888 >
 Sprite with RGB888 pixel format.
 
using LinePrinterRGB565 = LinePrinter< RGB565 >
 LinePrinter with RGB565 pixel format.
 
using LinePrinterRGB666 = LinePrinter< RGB666 >
 LinePrinter with RGB666 pixel format.
 
using LinePrinterRGB888 = LinePrinter< RGB888 >
 LinePrinter with RGB888 pixel format.
 
using Font5x7RGB565 = Font5x7< RGB565 >
 Font5x7 with RGB565 pixel format.
 
using Font5x7RGB666 = Font5x7< RGB666 >
 Font5x7 with RGB666 pixel format.
 
using Font5x7RGB888 = Font5x7< RGB888 >
 Font5x7 with RGB888 pixel format.
 
using IFontRGB565 = IFont< RGB565 >
 IFont with RGB565 pixel format.
 
using IFontRGB666 = IFont< RGB666 >
 IFont with RGB666 pixel format.
 
using IFontRGB888 = IFont< RGB888 >
 IFont with RGB888 pixel format.
 
using Font8x8RGB565 = Font8x8< RGB565 >
 Font8x8 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.
 
using Font8x8RGB666 = Font8x8< RGB666 >
 Font8x8 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.
 
using Font8x8RGB888 = Font8x8< RGB888 >
 Font8x8 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.
 
using Font8x12RGB565 = Font8x12< RGB565 >
 Font8x12 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.
 
using Font8x12RGB666 = Font8x12< RGB666 >
 Font8x12 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.
 
using Font8x12RGB888 = Font8x12< RGB888 >
 Font8x12 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.
 
using Font12x12RGB565 = Font12x12< RGB565 >
 Font12x12 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.
 
using Font12x12RGB666 = Font12x12< RGB666 >
 Font12x12 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.
 
using Font12x12RGB888 = Font12x12< RGB888 >
 Font12x12 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.
 
using Font16x24RGB565 = Font16x24< RGB565 >
 Font16x24 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.
 
using Font16x24RGB666 = Font16x24< RGB666 >
 Font16x24 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.
 
using Font16x24RGB888 = Font16x24< RGB888 >
 Font16x24 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.
 
using WireFrame3D_RGB565 = WireFrame3D< RGB565 >
 WireFrame3D with RGB565 pixel format.
 
using WireFrame3D_RGB666 = WireFrame3D< RGB666 >
 WireFrame3D with RGB666 pixel format.
 
using WireFrame3D_RGB888 = WireFrame3D< RGB888 >
 WireFrame3D with RGB888 pixel format.
 
using CartesianViewRGB565 = CartesianView< RGB565 >
 CartesianView with RGB565 pixel format.
 
using CartesianViewRGB666 = CartesianView< RGB666 >
 CartesianView with RGB666 pixel format.
 
using CartesianViewRGB888 = CartesianView< RGB888 >
 CartesianView with RGB888 pixel format.
 

Enumerations

enum class  DisplayRotation {
  kNone = -1 , kPortrait = 0 , kLandscape = 1 , kPortraitFlipped = 2 ,
  kLandscapeFlipped = 3
}
 Abstract base class for display drivers. More...
 
enum class  GesturePhase : uint8_t { kBegan , kChanged , kEnded }
 
enum class  GestureType : uint8_t {
  kNone , kTap , kDoubleTap , kLongPress ,
  kSwipeLeft , kSwipeRight , kSwipeUp , kSwipeDown ,
  kDrag , kPan , kScroll , kPinchIn ,
  kPinchOut , kRotate
}
 
enum class  Rotation : uint8_t { Deg0 = 0 , Deg90 = 1 , Deg180 = 2 , Deg270 = 3 }
 Logical display rotation. More...
 

Functions

unsigned long millis ()
 
void delay (unsigned long ms)
 
void delay (uint32_t ms)
 
void pinMode (int pin, int mode)
 
void digitalWrite (int pin, int value)
 Sets a GPIO output level, matching Arduino's digitalWrite().
 
int digitalRead (int pin)
 Reads a GPIO input level, matching Arduino's digitalRead().
 
bool operator!= (const tinygpu::RGB565 &lhs, const tinygpu::RGB565 &rhs)
 
bool operator!= (const tinygpu::RGB888 &lhs, const tinygpu::RGB888 &rhs)
 
bool isLandscapeFamily (DisplayRotation r)
 
const char * toString (GestureType type)
 Human-readable name for a GestureType, useful for logging.
 
template<typename RGB_T , typename SurfaceT >
Vector< std::unique_ptr< SpriteInfo< RGB_T, SurfaceT > > >::iterator findSprite (Vector< std::unique_ptr< SpriteInfo< RGB_T, SurfaceT > > > &sprites, SpriteInfo< RGB_T, SurfaceT > &spriteInfo)
 
template<typename RGB_T >
Surface< RGB_T > scaleSpriteImage (const ISurface< RGB_T > &source, float scale, IFont< RGB_T > &font)
 
template<typename RGB_T >
Surface< RGB_T > rotateSpriteImage (const ISurface< RGB_T > &source, float angleDegrees, RGB_T fillColor, IFont< RGB_T > &font)
 
template<typename RGB_T , typename SurfaceT >
Surface< RGB_T > renderTransformedSprite (const SpriteInfo< RGB_T, SurfaceT > &spriteInfo, IFont< RGB_T > &font)
 

Variables

constexpr int HIGH = 1
 
constexpr int LOW = 0
 
constexpr int INPUT = 0x00
 
constexpr int OUTPUT = 0x01
 
constexpr int INPUT_PULLUP = 0x02
 
constexpr int MSBFIRST = 0
 
constexpr int LSBFIRST = 1
 
constexpr int SPI_MODE0 = 0
 
constexpr int SPI_MODE1 = 1
 
constexpr int SPI_MODE2 = 2
 
constexpr int SPI_MODE3 = 3
 
SPIClass SPI
 
TwoWire Wire
 
Font5x7RGB565 FontRGB565
 Default 5x7 bitmap font instance (RGB565) - the implicit default font for APIs that need one (e.g. SurfaceWithExternalBuffer's font constructor parameter).
 
Font5x7RGB666 FontRGB666
 Default 5x7 bitmap font instance (RGB666).
 
Font5x7RGB888 FontRGB888
 Default 5x7 bitmap font instance (RGB888).
 
Font5x7< bool > FontMonochrome
 Default 5x7 bitmap font instance for monochrome (1-bit) surfaces (SurfaceMonochrome/FrameBufferMonochrome/SpriteMonochrome use IFont<bool>, not one of the RGB_T typedefs above).
 

Typedef Documentation

◆ CartesianViewRGB565

CartesianView with RGB565 pixel format.

◆ CartesianViewRGB666

CartesianView with RGB666 pixel format.

◆ CartesianViewRGB888

CartesianView with RGB888 pixel format.

◆ DesktopSDL

◆ ESP32_2432S028R

◆ ESP32CheapYellowDisplay

◆ ESP32S3HosyondLCD

◆ FBBA0125_002

◆ Font12x12RGB565

Font12x12 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.

◆ Font12x12RGB666

Font12x12 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.

◆ Font12x12RGB888

Font12x12 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.

◆ Font16x24RGB565

Font16x24 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.

◆ Font16x24RGB666

Font16x24 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.

◆ Font16x24RGB888

Font16x24 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.

◆ Font5x7RGB565

Font5x7 with RGB565 pixel format.

◆ Font5x7RGB666

Font5x7 with RGB666 pixel format.

◆ Font5x7RGB888

Font5x7 with RGB888 pixel format.

◆ Font8x12RGB565

Font8x12 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.

◆ Font8x12RGB666

Font8x12 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.

◆ Font8x12RGB888

Font8x12 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.

◆ Font8x8RGB565

Font8x8 (converted from STM32-EVAL fonts.c) with RGB565 pixel format.

◆ Font8x8RGB666

Font8x8 (converted from STM32-EVAL fonts.c) with RGB666 pixel format.

◆ Font8x8RGB888

Font8x8 (converted from STM32-EVAL fonts.c) with RGB888 pixel format.

◆ FrameBufferMonochrome

FrameBufferMonochrome is a framebuffer specialized for 1-bit (monochrome) pixel storage.

This alias provides a convenient way to use FrameBuffer with SurfaceMonochrome for efficient bit-packed monochrome graphics operations.

◆ FrameBufferRGB565

FrameBuffer with RGB565 pixel format.

◆ FrameBufferRGB666

FrameBuffer with RGB666 pixel format.

◆ FrameBufferRGB888

FrameBuffer with RGB888 pixel format.

◆ IFontRGB565

IFont with RGB565 pixel format.

◆ IFontRGB666

IFont with RGB666 pixel format.

◆ IFontRGB888

IFont with RGB888 pixel format.

◆ JC4827W543C_I

◆ JC4880P443C_I_W

◆ LinePrinterRGB565

LinePrinter with RGB565 pixel format.

◆ LinePrinterRGB666

LinePrinter with RGB666 pixel format.

◆ LinePrinterRGB888

LinePrinter with RGB888 pixel format.

◆ MiniSTM32H750

◆ MiniSTM32H7xx

◆ Sprite

using Sprite = Surface<RGB_T>

Alias for a sprite surface with the same pixel format as the main surface.

◆ SpriteMonochrome

Alias for a monochrome sprite surface.

◆ SpriteRGB565

Sprite with RGB565 pixel format.

◆ SpriteRGB666

Sprite with RGB666 pixel format.

◆ SpriteRGB888

Sprite with RGB888 pixel format.

◆ STM32F723Discovery

◆ SurfaceRGB565

Surface with RGB565 pixel format.

◆ SurfaceRGB666

Surface with RGB666 pixel format.

◆ SurfaceRGB888

Surface with RGB888 pixel format.

◆ TouchDriverFT6206

The FT6206 is a drop-in replacement for the FT6236, so we can alias it here.

◆ Vector

using Vector = std::vector<T>

◆ WireFrame3D_RGB565

WireFrame3D with RGB565 pixel format.

◆ WireFrame3D_RGB666

WireFrame3D with RGB666 pixel format.

◆ WireFrame3D_RGB888

WireFrame3D with RGB888 pixel format.

Enumeration Type Documentation

◆ DisplayRotation

enum class DisplayRotation
strong

Abstract base class for display drivers.

Defines the interface for initializing the display, setting the address window, and writing pixel data from a Surface. Specific display drivers (e.g. SPI, SDL) should inherit from this and implement the virtual methods. Common rotation values for rectangular display drivers (row/column exchange plus optional axis mirroring) - shared here, rather than duplicated as a nested enum per concrete driver (as ILI9341Driver/ ILI9342Driver used to each define their own, identical, copy), so generic code holding only a DisplayDriver<RGB_T>& (e.g. an LCDBoard's display()) can call setRotation() without knowing the concrete driver type. Concrete drivers keep a using Rotation = tinygpu::DisplayRotation; alias so existing code written against e.g. ILI9341Driver<RGB565>:: Rotation still compiles unchanged. Named DisplayRotation (not just Rotation) to avoid colliding with the differently-shaped touch tinygpu::Rotation (Deg0/Deg90/Deg180/Deg270) in TouchDriver.h.

Enumerator
kNone 
kPortrait 
kLandscape 
kPortraitFlipped 
kLandscapeFlipped 

◆ GesturePhase

enum class GesturePhase : uint8_t
strong

Lifecycle phase of a continuous gesture (drag/pan/scroll/pinch/rotate). Discrete gestures (tap/double_tap/long_press/swipe_*) always report kEnded, since they are recognized once, at the moment they complete.

Enumerator
kBegan 
kChanged 
kEnded 

◆ GestureType

enum class GestureType : uint8_t
strong
Enumerator
kNone 
kTap 
kDoubleTap 
kLongPress 

aka "press"

kSwipeLeft 
kSwipeRight 
kSwipeUp 
kSwipeDown 
kDrag 

continuous move that started over a draggable target

kPan 

continuous move over the background, not vertical-dominant

kScroll 

continuous move over the background, vertical-dominant

kPinchIn 

two fingers moving together (zoom out)

kPinchOut 

two fingers moving apart (zoom in)

kRotate 

two-finger rotation

◆ Rotation

enum class Rotation : uint8_t
strong

Logical display rotation.

Enumerator
Deg0 
Deg90 
Deg180 
Deg270 

Function Documentation

◆ delay() [1/2]

void delay ( uint32_t  ms)
inline

Blocks the calling task for ms milliseconds via FreeRTOS - the ESP-IDF-native equivalent of Arduino's delay().

◆ delay() [2/2]

void delay ( unsigned long  ms)
inline

Blocks the calling thread for ms milliseconds, matching Arduino's delay().

◆ digitalRead()

int digitalRead ( int  pin)
inline

Reads a GPIO input level, matching Arduino's digitalRead().

◆ digitalWrite()

void digitalWrite ( int  pin,
int  value 
)
inline

Sets a GPIO output level, matching Arduino's digitalWrite().

◆ findSprite()

Vector< std::unique_ptr< SpriteInfo< RGB_T, SurfaceT > > >::iterator findSprite ( Vector< std::unique_ptr< SpriteInfo< RGB_T, SurfaceT > > > &  sprites,
SpriteInfo< RGB_T, SurfaceT > &  spriteInfo 
)
inline

Finds the iterator to a sprite within a sprite list, shared by FrameBuffer and SpriteDisplay.

◆ isLandscapeFamily()

bool isLandscapeFamily ( DisplayRotation  r)
inline

True for the landscape family (kLandscape/kLandscapeFlipped) - false for portrait (kPortrait/kPortraitFlipped) or kNone. The landscape family has its row/column addressing exchanged relative to portrait (MV bit, on MIPI-DCS-style controllers), which is what makes width()/height() swap between the two families - a same-family rotation (e.g. kLandscape to kLandscapeFlipped, a 180 degree flip) only changes scan direction, not addressable width/height.

◆ millis()

unsigned long millis ( )
inline

Milliseconds since the epoch, from a monotonic (steady) clock - not "time since boot" the way Arduino's millis() is, but that distinction never matters here: GestureDetector.h only ever subtracts two millis() calls to get an elapsed duration, never reads the absolute value.

Milliseconds since boot, matching Arduino's millis() (wraps the same way a 32-bit millisecond counter would, since esp_timer's underlying 64-bit microsecond count is truncated to unsigned long here).

◆ operator!=() [1/2]

bool operator!= ( const tinygpu::RGB565 &  lhs,
const tinygpu::RGB565 &  rhs 
)
inline

◆ operator!=() [2/2]

bool operator!= ( const tinygpu::RGB888 &  lhs,
const tinygpu::RGB888 &  rhs 
)
inline

◆ pinMode()

void pinMode ( int  pin,
int  mode 
)
inline

Configures a GPIO's direction/pull, matching Arduino's pinMode(). A negative pin (this library's "not wired up" sentinel throughout Drivers/Input) is silently ignored, exactly like the callers already assume when they guard on pin >= 0 before calling at all - and harmlessly for the few call sites that don't bother guarding.

◆ renderTransformedSprite()

Surface< RGB_T > renderTransformedSprite ( const SpriteInfo< RGB_T, SurfaceT > &  spriteInfo,
IFont< RGB_T > &  font 
)
inline

Renders spriteInfo's pristine sprite image at its currently requested scale and rotation (SpriteInfo::currentScale/currentAngleDegrees, set by scaleSprite()/rotateSprite() - see FrameBuffer.h/SpriteDisplay.h) in one combined pass, shared by FrameBuffer and SpriteDisplay.

This always starts over from the pristine original, never from spriteInfo.currentSprite() (the previous frame's already-transformed raster) - scaleSpriteImage()/rotateSpriteImage() use nearest-neighbor sampling with no interpolation, so repeatedly transforming an already-transformed raster compounds resampling artifacts frame after frame until the image degenerates into a solid blob within seconds (confirmed empirically: an 18x18 circle sprite scaled/rotated every frame that way fills its entire 40x40 max buffer within ~10 frames). Re-deriving from the pristine source every time is also the only way to support an absolute scale/angle contract at all - scaleSprite(info, 1.0) must be able to undo a previous scaleSprite(info, 1.3), which is impossible if 1.3x has already been baked irreversibly into the stored raster.

◆ rotateSpriteImage()

Surface< RGB_T > rotateSpriteImage ( const ISurface< RGB_T > &  source,
float  angleDegrees,
RGB_T  fillColor,
IFont< RGB_T > &  font 
)
inline

Returns a rotated copy of a sprite image, filling empty space with fillColor. Shared by FrameBuffer and SpriteDisplay.

◆ scaleSpriteImage()

Surface< RGB_T > scaleSpriteImage ( const ISurface< RGB_T > &  source,
float  scale,
IFont< RGB_T > &  font 
)
inline

Returns a scaled copy of a sprite image, shared by FrameBuffer and SpriteDisplay.

◆ toString()

const char * toString ( GestureType  type)
inline

Human-readable name for a GestureType, useful for logging.

Variable Documentation

◆ FontMonochrome

Font5x7<bool> FontMonochrome
inline

Default 5x7 bitmap font instance for monochrome (1-bit) surfaces (SurfaceMonochrome/FrameBufferMonochrome/SpriteMonochrome use IFont<bool>, not one of the RGB_T typedefs above).

◆ FontRGB565

Font5x7RGB565 FontRGB565
inline

Default 5x7 bitmap font instance (RGB565) - the implicit default font for APIs that need one (e.g. SurfaceWithExternalBuffer's font constructor parameter).

◆ FontRGB666

Font5x7RGB666 FontRGB666
inline

Default 5x7 bitmap font instance (RGB666).

◆ FontRGB888

Font5x7RGB888 FontRGB888
inline

Default 5x7 bitmap font instance (RGB888).

◆ HIGH

constexpr int HIGH = 1
constexpr

◆ INPUT

constexpr int INPUT = 0x00
constexpr

◆ INPUT_PULLUP

constexpr int INPUT_PULLUP = 0x02
constexpr

◆ LOW

constexpr int LOW = 0
constexpr

◆ LSBFIRST

constexpr int LSBFIRST = 1
constexpr

◆ MSBFIRST

constexpr int MSBFIRST = 0
constexpr

◆ OUTPUT

constexpr int OUTPUT = 0x01
constexpr

◆ SPI

SPIClass SPI
inline

Global default instance, matching Arduino's bare SPI object (used as e.g. TouchDriverXPT2046's default constructor argument).

◆ SPI_MODE0

constexpr int SPI_MODE0 = 0
constexpr

◆ SPI_MODE1

constexpr int SPI_MODE1 = 1
constexpr

◆ SPI_MODE2

constexpr int SPI_MODE2 = 2
constexpr

◆ SPI_MODE3

constexpr int SPI_MODE3 = 3
constexpr

◆ Wire

TwoWire Wire
inline

Global default instance, matching Arduino's bare Wire object (used as e.g. TouchDriverFT6236's default constructor argument).