about summary refs log tree commit diff
path: root/src/writer/gifbuilder.rs
diff options
context:
space:
mode:
authorGenny <gen@nyble.dev>2021-09-15 22:16:30 -0500
committerGenny <gen@nyble.dev>2021-09-15 22:16:30 -0500
commit7b8081a79fb3db4a76f9e4cca8f8a88e6e7f873c (patch)
tree5eab8cbf47698b031c12f8eadc4c55f674f70c01 /src/writer/gifbuilder.rs
parentcdedae673268c372beb27c6d2f123cdf21f630f1 (diff)
downloadgifed-7b8081a79fb3db4a76f9e4cca8f8a88e6e7f873c.tar.gz
gifed-7b8081a79fb3db4a76f9e4cca8f8a88e6e7f873c.zip
Reading, fix writing, monocommit
Diffstat (limited to 'src/writer/gifbuilder.rs')
-rw-r--r--src/writer/gifbuilder.rs115
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,
+        }
+    }
+}