summaryrefslogtreecommitdiff
path: root/vendor/gif/examples/check.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
committerValentin Popov <valentin@popov.link>2024-01-08 00:21:28 +0300
commit1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch)
tree7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/gif/examples/check.rs
parent5ecd8cf2cba827454317368b68571df0d13d7842 (diff)
downloadfparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz
fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/gif/examples/check.rs')
-rw-r--r--vendor/gif/examples/check.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/vendor/gif/examples/check.rs b/vendor/gif/examples/check.rs
new file mode 100644
index 0000000..89a6123
--- /dev/null
+++ b/vendor/gif/examples/check.rs
@@ -0,0 +1,41 @@
+use std::{env, fs, process};
+
+fn main() {
+ let file = env::args().nth(1)
+ .unwrap_or_else(|| explain_usage());
+ let file = fs::File::open(&file)
+ .expect("failed to open input file");
+ let mut reader = {
+ let mut options = gif::DecodeOptions::new();
+ options.allow_unknown_blocks(true);
+ options.read_info(file).unwrap()
+ };
+
+ loop {
+ let frame = match reader.read_next_frame() {
+ Ok(Some(frame)) => frame,
+ Ok(None) => break,
+ Err(error) => {
+ println!("Error: {:?}", error);
+ break;
+ }
+ };
+
+ println!(
+ " Frame:\n \
+ delay: {:?}\n \
+ canvas: {}x{}+{}+{}\n \
+ dispose: {:?}\n \
+ needs_input: {:?}",
+ frame.delay,
+ frame.width, frame.height, frame.left, frame.top,
+ frame.dispose,
+ frame.needs_user_input
+ );
+ }
+}
+
+fn explain_usage() -> ! {
+ println!("Print information on the frames of a gif.\n\nUsage: check <file>");
+ process::exit(1)
+}