aboutsummaryrefslogtreecommitdiff
path: root/vendor/gif/README.md
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/README.md
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/README.md')
-rw-r--r--vendor/gif/README.md83
1 files changed, 83 insertions, 0 deletions
diff --git a/vendor/gif/README.md b/vendor/gif/README.md
new file mode 100644
index 0000000..3202b8d
--- /dev/null
+++ b/vendor/gif/README.md
@@ -0,0 +1,83 @@
+# GIF en- and decoding library [![Build Status](https://github.com/image-rs/image-gif/workflows/Rust%20CI/badge.svg)](https://github.com/image-rs/image-gif/actions)
+
+GIF en- and decoder written in Rust ([API Documentation](https://docs.rs/gif/)).
+
+# GIF encoding and decoding library
+
+This library provides all functions necessary to de- and encode GIF files.
+
+## High level interface
+
+The high level interface consists of the two types
+[`Encoder`](https://docs.rs/gif/*/gif/struct.Encoder.html) and [`Decoder`](https://docs.rs/gif/*/gif/struct.Decoder.html).
+
+### Decoding GIF files
+
+```rust
+// Open the file
+use std::fs::File;
+let input = File::open("tests/samples/sample_1.gif").unwrap();
+// Configure the decoder such that it will expand the image to RGBA.
+let mut options = gif::DecodeOptions::new();
+options.set_color_output(gif::ColorOutput::RGBA);
+// Read the file header
+let mut decoder = options.read_info(input).unwrap();
+while let Some(frame) = decoder.read_next_frame().unwrap() {
+ // Process every frame
+}
+```
+
+### Encoding GIF files
+
+The encoder can be used to save simple computer generated images:
+
+```rust
+use gif::{Frame, Encoder, Repeat};
+use std::fs::File;
+use std::borrow::Cow;
+
+let color_map = &[0xFF, 0xFF, 0xFF, 0, 0, 0];
+let (width, height) = (6, 6);
+let beacon_states = [[
+ 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0,
+ 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0,
+], [
+ 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0,
+]];
+let mut image = File::create("target/beacon.gif").unwrap();
+let mut encoder = Encoder::new(&mut image, width, height, color_map).unwrap();
+encoder.set_repeat(Repeat::Infinite).unwrap();
+for state in &beacon_states {
+ let mut frame = Frame::default();
+ frame.width = width;
+ frame.height = height;
+ frame.buffer = Cow::Borrowed(&*state);
+ encoder.write_frame(&frame).unwrap();
+}
+```
+
+[`Frame::from_*`](https://docs.rs/gif/*/gif/struct.Frame.html) can be used to convert a true color image to a paletted
+image with a maximum of 256 colors:
+
+```rust
+use std::fs::File;
+
+// Get pixel data from some source
+let mut pixels: Vec<u8> = vec![0; 30_000];
+// Create frame from data
+let frame = gif::Frame::from_rgb(100, 100, &mut *pixels);
+// Create encoder
+let mut image = File::create("target/indexed_color.gif").unwrap();
+let mut encoder = gif::Encoder::new(&mut image, frame.width, frame.height, &[]).unwrap();
+// Write frame to file
+encoder.write_frame(&frame).unwrap();
+```