summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs31
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"}}")
+}