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
10impl 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 {}