matrix-gui 0.2.0

embedded-graphics based GUI framework, use region-based freeform layout.
Documentation

Matrix GUI

License: MIT Rust embedded-graphics

πŸ‡¨πŸ‡³ δΈ­ζ–‡θ―΄ζ˜Ž

An immediate-mode embedded GUI framework inspired by kolibri-embedded-gui, built on top of embedded-graphics. This framework removes automatic layout functionality and adopts a state ID-based approach with predefined rectangles as the layout framework.

Features

  • Immediate-mode GUI: Lightweight, customizable, and low-footprint
  • Zero-allocation design: Except for control state values, all data resides on the stack, suitable for resource-constrained systems
  • Region-based layout: Flexible free-form layout with predefined rectangular regions, providing layout design tools (Matrix GUI Layout)
  • Feature-based modularity: Enable only the features you need to minimize binary size
  • no_std compatible: Works seamlessly in bare-metal environments
  • Integer-based animations: Lightweight animation system without floating-point operations
  • Custom widgets: Easy to create custom widgets by referencing built-in widgets
  • Mixed font display: Uses the multi-mono-font library, and CJK font generation can use the PCtoLCD2022 tool

Built-in Widgets

Static Widgets

  • Background - Background clearing
  • Label - Text labels
  • PlainText - Multi-line text
  • StaticImage - Static images
  • StaticLine - Static lines
  • Bar - Progress bars
  • ListBox - List boxes

Interactive Widgets (requires interaction feature)

  • Button - Buttons
  • Checkbox - Checkboxes
  • RadioButton - Radio buttons
  • Slider - Sliders
  • ScrollArea - Scrollable areas with drag interaction
  • Choice - Popup selector (requires popup feature)
  • MessageBox - Message dialogs (requires popup feature)

Screenshots

Basic Example

Basic Example

A comprehensive example demonstrating various widgets including buttons, sliders, checkboxes, radio buttons, labels, and static images.

Plain Text Widget

Plain Text

Multi-line text display widget with support for different fonts and styles.

Message Box

Message Box

Modal dialog widget for displaying messages and user interactions.

Grid Layout

Grid Layout

Compile-time grid layout example showing organized widget placement in a grid structure.

Getting Started

Installation

Add this to your Cargo.toml:

[dependencies]

matrix-gui = "0.1.0"

Features

This library uses Cargo features to enable optional functionality. By default, no features are enabled, allowing you to choose exactly what you need.

Feature Overview

Feature Description Dependencies
interaction User interaction support (touch/mouse) -
focus Keyboard focus management interaction
animation Lightweight animation system -
popup Modal dialog support -
framebuffer Off-screen rendering support -
fill-rect Fast rectangle filling with hardware acceleration -
debug-color Debug color visualization -
log Logging support log crate
part Core feature bundle log, focus, debug-color, interaction, framebuffer
all Enable all features part, fill-rect, popup
anim Animation feature bundle animation, part

Layout Tools

The project provides rectangle layout tools for designing your UI layouts. Check the releases page for layout tools and utilities.

Layout Tools

Examples

Run examples with:

cargo run --features part --example basic-example

cargo run --features anim --example anim-by-ui

cargo run --features popup,part --example msg-box

cargo run --features popup,part --example choice-demo

cargo run --features part --example scrollarea

Documents

License

This project is licensed under the MIT License - see the LICENSE-MIT file for details.

Acknowledgments

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues, questions, or suggestions, please open an issue on GitHub.