diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..242654b --- /dev/null +++ b/src/main.rs @@ -0,0 +1,31 @@ +fn main() { + let args: Vec<String> = std::env::args().collect(); + if args.len() != 2 { + eprintln!("usage: {} palette.png", args[0]); + std::process::exit(1); + } + + let pal = image::io::Reader::open(&args[1]) + .expect("failed to open image") + .decode() + .expect("decoding failed") + .to_rgb8(); + + println!(r#"#include "px.h""#); + println!(r"__attribute__(constructor))"); + println!(r"static void set_pxpal(void)"); + println!(r"{{"); + + for y in 0..pal.height() { + for x in 0..pal.width() { + let pixel = pal.get_pixel(x, y); + let i = x + y * pal.width(); + println!( + "\tpxpal[{0}].r={1}; pxpal[{0}].g={2}; pxpal[{0}].b={3};", + i, pixel[0], pixel[1], pixel[2] + ); + } + } + + println!(r"}}") +} |