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 嵌入式开发
29KB
294 行
stockbook
Stockbook在编译时将1位光栅图像嵌入到您的代码中。
主要针对#![no_std]的使用,适用于嵌入式或其他程序内存受限的环境。与avr-progmem兼容。
[dependencies]
stockbook = "0.3.0
Stockbook的主要功能是stamp!宏,它允许您以类似于include_bytes!的方式包含数据,但来自图像,特别是1位黑白图像。该宏返回一个Stamp类型,它仅保存图像的宽度和高度以及像素数据的静态引用。像素数据内部表示为字节数组,其中单个位对应单个像素。
示例
文件 assets/star.png(预览时放大8倍,原始12x12 px)

文件 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