Skip to main content

gufo_tiff/
lib.rs

1use gufo_common::error::ErrorWithData;
2
3const LE_MAGIC_BYTES: &[u8] = b"II*\0";
4const BE_MAGIC_BYTES: &[u8] = b"MM\0*";
5
6pub struct Tiff {
7    data: Vec<u8>,
8}
9
10/// Representation of a TIFF image
11impl Tiff {
12    pub fn new(data: Vec<u8>) -> Result<Self, ErrorWithData<Error>> {
13        Ok(Self { data })
14    }
15
16    pub fn is_filetype(data: &[u8]) -> bool {
17        data.starts_with(LE_MAGIC_BYTES) || data.starts_with(BE_MAGIC_BYTES)
18    }
19
20    pub fn into_inner(self) -> Vec<u8> {
21        self.data
22    }
23
24    pub fn exif(&self) -> Result<&[u8], Error> {
25        Ok(&self.data)
26    }
27}
28
29#[derive(Debug, thiserror::Error)]
30pub enum Error {}