Read Byte as u8, SignedByte as i8 (#236)

This commit is contained in:
Wei Ji authored and GitHub committed 2025-06-08 18:31:51 -07:00
1 parent aeab243a96
commit ee0dbf373b
1 file changed
+9 -5
+9 -5
View File
@@ -56,6 +56,7 @@ impl Value {
pub fn into_u16(self) -> TiffResult<u16> { pub fn into_u16(self) -> TiffResult<u16> {
match self { match self {
Byte(val) => Ok(val.into()),
Short(val) => Ok(val), Short(val) => Ok(val),
Unsigned(val) => Ok(u16::try_from(val)?), Unsigned(val) => Ok(u16::try_from(val)?),
UnsignedBig(val) => Ok(u16::try_from(val)?), UnsignedBig(val) => Ok(u16::try_from(val)?),
@@ -77,6 +78,7 @@ impl Value {
pub fn into_u32(self) -> TiffResult<u32> { pub fn into_u32(self) -> TiffResult<u32> {
match self { match self {
Byte(val) => Ok(val.into()),
Short(val) => Ok(val.into()), Short(val) => Ok(val.into()),
Unsigned(val) => Ok(val), Unsigned(val) => Ok(val),
UnsignedBig(val) => Ok(u32::try_from(val)?), UnsignedBig(val) => Ok(u32::try_from(val)?),
@@ -102,6 +104,7 @@ impl Value {
pub fn into_u64(self) -> TiffResult<u64> { pub fn into_u64(self) -> TiffResult<u64> {
match self { match self {
Byte(val) => Ok(val.into()),
Short(val) => Ok(val.into()), Short(val) => Ok(val.into()),
Unsigned(val) => Ok(val.into()), Unsigned(val) => Ok(val.into()),
UnsignedBig(val) => Ok(val), UnsignedBig(val) => Ok(val),
@@ -161,6 +164,7 @@ impl Value {
} }
Ok(new_vec) Ok(new_vec)
} }
Byte(val) => Ok(vec![val.into()]),
Short(val) => Ok(vec![val.into()]), Short(val) => Ok(vec![val.into()]),
Unsigned(val) => Ok(vec![val]), Unsigned(val) => Ok(vec![val]),
UnsignedBig(val) => Ok(vec![u32::try_from(val)?]), UnsignedBig(val) => Ok(vec![u32::try_from(val)?]),
@@ -188,9 +192,7 @@ impl Value {
} }
Byte(val) => Ok(vec![val]), Byte(val) => Ok(vec![val]),
val => Err(TiffError::FormatError( val => Err(TiffError::FormatError(TiffFormatError::ByteExpected(val))),
TiffFormatError::UnsignedIntegerExpected(val),
)),
} }
} }
@@ -203,6 +205,7 @@ impl Value {
} }
Ok(new_vec) Ok(new_vec)
} }
Byte(val) => Ok(vec![val.into()]),
Short(val) => Ok(vec![val]), Short(val) => Ok(vec![val]),
val => Err(TiffError::FormatError(TiffFormatError::ShortExpected(val))), val => Err(TiffError::FormatError(TiffFormatError::ShortExpected(val))),
} }
@@ -282,6 +285,7 @@ impl Value {
} }
Ok(new_vec) Ok(new_vec)
} }
Byte(val) => Ok(vec![val.into()]),
Short(val) => Ok(vec![val.into()]), Short(val) => Ok(vec![val.into()]),
Unsigned(val) => Ok(vec![val.into()]), Unsigned(val) => Ok(vec![val.into()]),
UnsignedBig(val) => Ok(vec![val]), UnsignedBig(val) => Ok(vec![val]),
@@ -428,8 +432,8 @@ impl Entry {
// 2b: the value is at most 4 bytes or doesn't fit in the offset field. // 2b: the value is at most 4 bytes or doesn't fit in the offset field.
return Ok(match self.type_ { return Ok(match self.type_ {
Type::BYTE => Unsigned(u32::from(self.offset[0])), Type::BYTE => Byte(self.offset[0]),
Type::SBYTE => Signed(i32::from(self.offset[0] as i8)), Type::SBYTE => SignedByte(i8::from(self.offset[0] as i8)),
Type::UNDEFINED => Byte(self.offset[0]), Type::UNDEFINED => Byte(self.offset[0]),
Type::SHORT => Short(self.r(bo).read_u16()?), Type::SHORT => Short(self.r(bo).read_u16()?),
Type::SSHORT => SignedShort(self.r(bo).read_i16()?), Type::SSHORT => SignedShort(self.r(bo).read_i16()?),