diff options
author | Genny <gen@nyble.dev> | 2021-09-15 22:16:30 -0500 |
---|---|---|
committer | Genny <gen@nyble.dev> | 2021-09-15 22:16:30 -0500 |
commit | 7b8081a79fb3db4a76f9e4cca8f8a88e6e7f873c (patch) | |
tree | 5eab8cbf47698b031c12f8eadc4c55f674f70c01 /src/writer/gifbuilder.rs | |
parent | cdedae673268c372beb27c6d2f123cdf21f630f1 (diff) | |
download | gifed-7b8081a79fb3db4a76f9e4cca8f8a88e6e7f873c.tar.gz gifed-7b8081a79fb3db4a76f9e4cca8f8a88e6e7f873c.zip |
Reading, fix writing, monocommit
Diffstat (limited to 'src/writer/gifbuilder.rs')
-rw-r--r-- | src/writer/gifbuilder.rs | 115 |
1 files changed, 58 insertions, 57 deletions
diff --git a/src/writer/gifbuilder.rs b/src/writer/gifbuilder.rs index 7e5138a..d16be56 100644 --- a/src/writer/gifbuilder.rs +++ b/src/writer/gifbuilder.rs @@ -1,73 +1,74 @@ -use crate::block::{Block, ColorTable, ScreenDescriptor, Version, extension::Extension}; +use crate::block::{extension::Extension, Block, ColorTable, ScreenDescriptor, Version}; use crate::writer::ImageBuilder; use crate::Gif; pub struct GifBuilder { - version: Version, - width: u16, - height: u16, - background_color_index: u8, - global_color_table: Option<ColorTable>, - blocks: Vec<Block> + version: Version, + width: u16, + height: u16, + background_color_index: u8, + global_color_table: Option<ColorTable>, + blocks: Vec<Block>, } impl GifBuilder { - pub fn new(version: Version, width: u16, height: u16) -> Self { - Self { - version, - width, - height, - background_color_index: 0, - global_color_table: None, - blocks: vec![] - } - } + pub fn new(version: Version, width: u16, height: u16) -> Self { + Self { + version, + width, + height, + background_color_index: 0, + global_color_table: None, + blocks: vec![], + } + } - pub fn global_color_table(mut self, table: ColorTable) -> Self { - self.global_color_table = Some(table); + pub fn global_color_table(mut self, table: ColorTable) -> Self { + self.global_color_table = Some(table); - self - } + self + } - pub fn background_color_index(mut self, ind: u8) -> Self { - if self.global_color_table.is_none() { - //TODO: Throw error or let it go by, who knows - panic!("Setting background color index with noGCT!"); - } + pub fn background_color_index(mut self, ind: u8) -> Self { + if self.global_color_table.is_none() { + //TODO: Throw error or let it go by, who knows + panic!("Setting background color index with noGCT!"); + } - self.background_color_index = ind; - self - } + self.background_color_index = ind; + self + } - pub fn image(mut self, ib: ImageBuilder) -> Self { - self.blocks.push(Block::IndexedImage(ib.build())); - self - } + pub fn image(mut self, ib: ImageBuilder) -> Self { + self.blocks.push(Block::IndexedImage(ib.build())); + self + } - pub fn extension(mut self, ext: Extension) -> Self { - self.blocks.push(Block::Extension(ext)); - self - } + pub fn extension(mut self, ext: Extension) -> Self { + self.blocks.push(Block::Extension(ext)); + self + } - pub fn build(self) -> Gif { - let mut lsd = ScreenDescriptor { - width: self.width, - height: self.height, - packed: 0, // Set later - background_color_index: self.background_color_index, - pixel_aspect_ratio: 0 //TODO: Allow configuring - }; + pub fn build(self) -> Gif { + let mut lsd = ScreenDescriptor { + width: self.width, + height: self.height, + packed: 0, // Set later + background_color_index: self.background_color_index, + pixel_aspect_ratio: 0, //TODO: Allow configuring + }; - if let Some(gct) = &self.global_color_table { - lsd.color_table_present(true); - lsd.color_table_size(gct.len() as u8); - } + if let Some(gct) = &self.global_color_table { + println!("build {}", gct.len()); + lsd.set_color_table_present(true); + lsd.set_color_table_size((gct.len() - 1) as u8); + } - Gif { - header: self.version, - screen_descriptor: lsd, - global_color_table: self.global_color_table, - blocks: self.blocks - } - } -} \ No newline at end of file + Gif { + header: self.version, + screen_descriptor: lsd, + global_color_table: self.global_color_table, + blocks: self.blocks, + } + } +} |