diff options
author | Genny <gen@nyble.dev> | 2021-03-10 01:26:24 -0600 |
---|---|---|
committer | Genny <gen@nyble.dev> | 2021-03-10 01:26:24 -0600 |
commit | 743888ae0c1038a92f4a0b64709a313eba70c887 (patch) | |
tree | 3b1f6e9fbe2524d3177a4ed12e3486a4fb009460 /src/writer | |
parent | a368be4dfb3c1f75f6bcfdc297fe0372fb5f6092 (diff) | |
download | gifed-743888ae0c1038a92f4a0b64709a313eba70c887.tar.gz gifed-743888ae0c1038a92f4a0b64709a313eba70c887.zip |
Refactor code and get ready for extension blocks
Diffstat (limited to 'src/writer')
-rw-r--r-- | src/writer/gifbuilder.rs | 19 | ||||
-rw-r--r-- | src/writer/imagebuilder.rs | 6 |
2 files changed, 10 insertions, 15 deletions
diff --git a/src/writer/gifbuilder.rs b/src/writer/gifbuilder.rs index 415ebf6..2cdc52c 100644 --- a/src/writer/gifbuilder.rs +++ b/src/writer/gifbuilder.rs @@ -1,4 +1,4 @@ -use crate::block::{ColorTable, ScreenDescriptor, Version}; +use crate::block::{Block, ColorTable, ScreenDescriptor, Version}; use crate::writer::ImageBuilder; use crate::Gif; @@ -6,9 +6,9 @@ pub struct GifBuilder { version: Version, width: u16, height: u16, - global_color_table: Option<ColorTable>, background_color_index: u8, - imagebuilders: Vec<ImageBuilder> + global_color_table: Option<ColorTable>, + blocks: Vec<Block> } impl GifBuilder { @@ -17,9 +17,9 @@ impl GifBuilder { version, width, height, - global_color_table: None, background_color_index: 0, - imagebuilders: vec![] + global_color_table: None, + blocks: vec![] } } @@ -40,7 +40,7 @@ impl GifBuilder { } pub fn image(mut self, ib: ImageBuilder) -> Self { - self.imagebuilders.push(ib); + self.blocks.push(Block::IndexedImage(ib.build())); self } @@ -58,16 +58,11 @@ impl GifBuilder { lsd.color_table_size(gct.len() as u8); } - let mut images = vec![]; - for builder in self.imagebuilders.into_iter() { - images.push(builder.build()); - } - Gif { header: self.version, screen_descriptor: lsd, global_color_table: self.global_color_table, - images + blocks: self.blocks } } } \ No newline at end of file diff --git a/src/writer/imagebuilder.rs b/src/writer/imagebuilder.rs index d8b9900..f2156ac 100644 --- a/src/writer/imagebuilder.rs +++ b/src/writer/imagebuilder.rs @@ -1,4 +1,4 @@ -use crate::block::{ColorTable, Image, ImageDescriptor}; +use crate::block::{ColorTable, IndexedImage, ImageDescriptor}; pub struct ImageBuilder { left_offset: u16, @@ -48,7 +48,7 @@ impl ImageBuilder { self } - pub fn build(self) -> Image { + pub fn build(self) -> IndexedImage { let mut imgdesc = ImageDescriptor { left: self.left_offset, top: self.top_offset, @@ -62,7 +62,7 @@ impl ImageBuilder { imgdesc.color_table_size(lct.packed_len()); } - Image { + IndexedImage { image_descriptor: imgdesc, local_color_table: self.color_table, indicies: self.indicies |