diff --git a/Cargo.toml b/Cargo.toml index 10a6baa..fde5fc8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,20 +23,20 @@ half = { version = "2.4.1" } quick-error = "2.0.1" # Rename to avoid confusion with the feature name. -fax34 = { package = "fax", version = "0.2.6", optional = true } -flate2 = { version = "1.0.20", optional = true } -weezl = { version = "0.2.1", optional = true } +fax34 = { package = "fax", version = "0.3", optional = true } +flate2 = { version = "1", optional = true } +weezl = { version = "0.2", optional = true } zstd = { version = "0.14", optional = true } -zrip-decode = { version = "0.8.2", features = ["paranoid"], optional = true } -zune-jpeg = { version = "0.5.1", optional = true } -image-webp = {version = "0.2.4", optional = true } +zrip-decode = { version = "0.8", features = ["paranoid"], optional = true } +zune-jpeg = { version = "0.5", optional = true } +image-webp = {version = "0.2", optional = true } [dev-dependencies] -criterion = "0.3.1" +criterion = "0.3" # We may already depend on this via flate2 -crc32fast = "1.5" -libtest-mimic = "0.8.1" -walkdir = "2.5" +crc32fast = "1" +libtest-mimic = "0.8" +walkdir = "2" [features] default = ["deflate", "fax", "jpeg", "lzw"] diff --git a/src/decoder/stream.rs b/src/decoder/stream.rs index 29535f2..1e90673 100644 --- a/src/decoder/stream.rs +++ b/src/decoder/stream.rs @@ -294,7 +294,7 @@ pub struct Group4Reader { decoder: fax34::decoder::Group4Decoder>, line_buf: io::Cursor>, height: u32, - width: u16, + width: u32, y: u32, } @@ -306,7 +306,7 @@ impl Group4Reader { compressed_length: u64, fill_order: u16, ) -> crate::TiffResult { - let width = u16::try_from(dimensions.0)?; + let width = dimensions.0; let height = dimensions.1; Ok(Self { @@ -314,7 +314,7 @@ impl Group4Reader { fax_byte_iter(reader, compressed_length, fill_order), width, )?, - line_buf: io::Cursor::new(Vec::with_capacity(width.into())), + line_buf: io::Cursor::new(Vec::with_capacity(width as usize)), width, height, y: 0, @@ -344,7 +344,7 @@ impl Read for Group4Reader { let transitions = fax34::decoder::pels(self.decoder.transition(), self.width); let buffer = self.line_buf.get_mut(); - buffer.resize(usize::from(self.width).div_ceil(8), 0u8); + buffer.resize((self.width as usize).div_ceil(8), 0u8); let target = &mut buffer[..]; @@ -409,7 +409,7 @@ pub struct Group3Reader { reader: OwnedBitReader, line_buf: io::Cursor>, height: u32, - width: u16, + width: u32, y: u32, } @@ -421,7 +421,7 @@ impl Group3Reader { compressed_length: u64, fill_order: u16, ) -> crate::TiffResult { - let width = u16::try_from(dimensions.0)?; + let width = dimensions.0; let height = dimensions.1; // Buffer all compressed data and apply FillOrder bit reversal @@ -442,7 +442,7 @@ impl Group3Reader { Ok(Self { reader: bit_reader, - line_buf: io::Cursor::new(Vec::with_capacity(width.into())), + line_buf: io::Cursor::new(Vec::with_capacity(width as usize)), width, height, y: 0, @@ -463,10 +463,10 @@ impl Group3Reader { fn with_markup( decoder: fn(&mut R) -> Option, reader: &mut R, - ) -> Option { - let mut sum = 0u16; + ) -> Option { + let mut sum = 0u32; while let Some(n) = decoder(reader) { - sum = sum.checked_add(n)?; + sum = sum.checked_add(n as u32)?; if n < 64 { return Some(sum); } @@ -483,7 +483,7 @@ impl Read for Group3Reader { { // Decode one line of alternating white/black run-lengths let mut transitions = Vec::new(); - let mut a0 = 0u16; + let mut a0 = 0u32; let mut is_white = true; loop { let run = if is_white { @@ -507,7 +507,7 @@ impl Read for Group3Reader { self.y += 1; // Convert transitions to packed bilevel output - let bytes_per_line = usize::from(self.width).div_ceil(8); + let bytes_per_line = (self.width as usize).div_ceil(8); let buffer = self.line_buf.get_mut(); buffer.clear(); buffer.resize(bytes_per_line, 0u8);