aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..39c6117
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,32 @@
+use std::env;
+use std::fs::File;
+use std::process;
+
+use bubbles::Config;
+use bubbles::Gif;
+
+fn main() {
+ let config = Config::build(env::args()).unwrap_or_else(|err| {
+ eprintln!("Error printing arguments: {err}");
+ process::exit(1);
+ });
+
+ // create Gif data
+ let mut gif = Gif::create_from_config(&config, 100);
+
+ // Create encoder
+ let mut image = File::create(config.out_file).unwrap();
+ let mut encoder = gif::Encoder::new(&mut image, config.width, config.height, &[]).unwrap();
+
+ // Repeat infinitely
+ if let Err(_) = encoder.set_repeat(gif::Repeat::Infinite) {
+ process::exit(1);
+ }
+
+ // Create pixel array
+ bubbles::fill_canvas(&mut gif);
+ let frame = gif::Frame::from_rgb(gif.width, gif.height, &mut gif.pixels);
+
+ // Write frame to file
+ encoder.write_frame(&frame).unwrap();
+}