Crates.io | stockbook |
lib.rs | stockbook |
version | 0.3.0 |
source | src |
created_at | 2022-10-23 11:49:32.776959 |
updated_at | 2022-10-27 14:58:55.633189 |
description | 1-bit image embedding at compile time |
homepage | |
repository | https://github.com/karolbelina/stockbook |
max_upload_size | |
id | 695140 |
size | 30,131 |
Stockbook embeds 1-bit raster images in your code at compile time.
Designed primarily for #![no_std]
usage, in embedded or other program-memory-constrained environments. Compatible with avr-progmem
.
[dependencies]
stockbook = "0.3.0
The main functionality of Stockbook is the stamp!
macro, which lets you include data similarly to how include_bytes!
does, but from an image, specifically a 1-bit black and white image. The macro returns a Stamp
type, which just holds the image's width, height, and a static reference to the pixel data. The pixel data is represented internally as an array of bytes, in which individual bits correspond to individual pixels.
File assets/star.png
(scaled x8 for preview, originally 12x12 px):
File 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 uses the image crate under the hood. See its own list of supported formats for more details.
progmem
— wraps all pixel data of Stamp
s in avr_progmem::wrapper::ProgMem
s. Combined with the avr
target architecture, this allows you to keep most of the data in program memory without the need to copy it to RAM. A no-op for non-avr
target architectures.Although this library works on stable
, any changes to images referenced by the stamp!
macro might not be detected because of caching. Therefore, until track_path
API (Tracking Issue) stabilizes, it is recommended to use the nightly
toolchain, however functionality behind this feature is unstable and may change or stop compiling at any time.
This software is licensed under the MIT license.
See the LICENSE file for more details.