diff --git a/Cargo.toml b/Cargo.toml index ab14f0f..baf432f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,6 @@ categories = ["multimedia::images", "multimedia::encoding"] exclude = ["tests/images/*", "tests/fuzz_images/*"] [dependencies] -either = "1.13.0" weezl = "0.1.0" jpeg = { package = "jpeg-decoder", version = "0.3.0", default-features = false } flate2 = "1.0.20" diff --git a/src/decoder/mod.rs b/src/decoder/mod.rs index 6524f30..90c2b80 100644 --- a/src/decoder/mod.rs +++ b/src/decoder/mod.rs @@ -1,9 +1,6 @@ use std::collections::{HashMap, HashSet}; use std::io::{self, Read, Seek}; -use either::Either; - -use crate::decoder::tag_iter::TagIter; use crate::tags::{ CompressionMethod, PhotometricInterpretation, PlanarConfiguration, Predictor, SampleFormat, Tag, Type, @@ -19,7 +16,6 @@ use self::stream::{ByteOrder, EndianReader, SmartReader}; pub mod ifd; mod image; mod stream; -mod tag_iter; mod tag_reader; /// Result of a decoding process @@ -899,15 +895,11 @@ impl Decoder { } pub fn tag_iter(&mut self) -> impl Iterator> + '_ { - match self.image().ifd.as_ref() { - None => Either::Left(std::iter::empty()), - Some(ifd) => Either::Right(TagIter::new( - ifd.clone(), - &self.limits, - self.bigtiff, - &mut self.reader, - )), - } + self.image.ifd.as_ref().unwrap().iter().map(|(tag, entry)| { + entry + .val(&self.limits, self.bigtiff, &mut self.reader) + .map(|value| (*tag, value)) + }) } fn check_chunk_type(&self, expected: ChunkType) -> TiffResult<()> { diff --git a/src/decoder/tag_iter.rs b/src/decoder/tag_iter.rs deleted file mode 100644 index 687c5ff..0000000 --- a/src/decoder/tag_iter.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::collections::hash_map::IntoIter; -use std::io::{Read, Seek}; - -use crate::decoder::ifd::{Directory, Value}; -use crate::decoder::stream::SmartReader; -use crate::decoder::{ifd, Limits}; -use crate::tags::Tag; -use crate::TiffResult; - -pub(crate) struct TagIter<'a, R> -where - R: Read + Seek, -{ - iter: IntoIter, - limits: &'a Limits, - bigtiff: bool, - reader: &'a mut SmartReader, -} - -impl<'a, R> TagIter<'a, R> -where - R: Read + Seek, -{ - pub fn new( - directory: Directory, - limits: &'a Limits, - bigtiff: bool, - reader: &'a mut SmartReader, - ) -> Self { - Self { - iter: directory.into_iter(), - limits, - bigtiff, - reader, - } - } -} - -impl<'a, R> Iterator for TagIter<'a, R> -where - R: Read + Seek, -{ - type Item = TiffResult<(Tag, Value)>; - - fn next(&mut self) -> Option { - self.iter.next().map(|(tag, entry)| { - entry - .val(self.limits, self.bigtiff, self.reader) - .map(|value| (tag, value)) - }) - } -}