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