4 个版本 (2 个重大变更)

0.3.0 2022年10月27日
0.2.0 2022年10月23日
0.1.1 2022年10月23日
0.1.0 2022年10月23日

#1527 in 嵌入式开发

MIT 许可证

29KB
294

stockbook

CI crates.io docs.rs

Stockbook在编译时将1位光栅图像嵌入到您的代码中。

主要针对#![no_std]的使用,适用于嵌入式或其他程序内存受限的环境。与avr-progmem兼容。

[dependencies]
stockbook = "0.3.0

Stockbook的主要功能是stamp!宏,它允许您以类似于include_bytes!的方式包含数据,但来自图像,特别是1位黑白图像。该宏返回一个Stamp类型,它仅保存图像的宽度和高度以及像素数据的静态引用。像素数据内部表示为字节数组,其中单个位对应单个像素。

示例

文件 assets/star.png(预览时放大8倍,原始12x12 px)

Star

文件 src/lib.rs

use stockbook::{stamp, Color, Stamp};

static STAR_SPRITE: Stamp = stamp!("assets/star.png");

pub fn draw_star() {
    for (x, y, color) in STAR_SPRITE.pixels() {
        match color {
            Color::Black => {}, // Treat as transparent
            Color::White => draw_pixel_at(x, y),
        }
    }
}

fn draw_pixel_at(x: usize, y: usize) {
    /* ... */
}

支持的格式

Stockbook底层使用image包。有关更多详细信息,请参阅其支持的格式列表

功能标志

  • progmem — 将Stamp的所有像素数据包装在avr_progmem::wrapper::ProgMem中。结合avr目标架构,这允许您在不将其复制到RAM的情况下,将大部分数据保留在程序内存中。对于非avr目标架构,此操作为无操作。

不稳定功能

尽管这个库在 稳定版 上运行,但由于缓存,任何对由 stamp! 宏引用的图像的更改可能不会被检测到。因此,在 track_path API跟踪问题)稳定之前,建议使用 nightly 工具链,但是此功能背后的功能是不稳定的,并且可能会随时更改或停止编译。

许可证

本软件采用 MIT 许可证。

有关详细信息,请参阅 LICENSE 文件。

依赖项

~6.5MB
~97K SLoC