tiff/encoder/compression/
uncompressed.rs

1use crate::{encoder::compression::*, tags::CompressionMethod};
2use std::io::Write;
3
4/// The default algorithm which does not compress at all.
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
6pub struct Uncompressed;
7
8impl Compression for Uncompressed {
9    const COMPRESSION_METHOD: CompressionMethod = CompressionMethod::None;
10
11    fn get_algorithm(&self) -> Compressor {
12        Compressor::Uncompressed(*self)
13    }
14}
15
16impl CompressionAlgorithm for Uncompressed {
17    fn write_to<W: Write>(&mut self, writer: &mut W, bytes: &[u8]) -> Result<u64, io::Error> {
18        writer.write(bytes).map(|byte_count| byte_count as u64)
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25    use crate::encoder::compression::tests::TEST_DATA;
26    use std::io::Cursor;
27
28    #[test]
29    fn test_no_compression() {
30        let mut compressed_data = Vec::<u8>::new();
31        let mut writer = Cursor::new(&mut compressed_data);
32        Uncompressed.write_to(&mut writer, TEST_DATA).unwrap();
33        assert_eq!(TEST_DATA, compressed_data);
34    }
35}