Skip to content

Commit ee0dbf3

Browse files
authored
Read Byte as u8, SignedByte as i8 (#236)
1 parent aeab243 commit ee0dbf3

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/decoder/ifd.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ impl Value {
5656

5757
pub fn into_u16(self) -> TiffResult<u16> {
5858
match self {
59+
Byte(val) => Ok(val.into()),
5960
Short(val) => Ok(val),
6061
Unsigned(val) => Ok(u16::try_from(val)?),
6162
UnsignedBig(val) => Ok(u16::try_from(val)?),
@@ -77,6 +78,7 @@ impl Value {
7778

7879
pub fn into_u32(self) -> TiffResult<u32> {
7980
match self {
81+
Byte(val) => Ok(val.into()),
8082
Short(val) => Ok(val.into()),
8183
Unsigned(val) => Ok(val),
8284
UnsignedBig(val) => Ok(u32::try_from(val)?),
@@ -102,6 +104,7 @@ impl Value {
102104

103105
pub fn into_u64(self) -> TiffResult<u64> {
104106
match self {
107+
Byte(val) => Ok(val.into()),
105108
Short(val) => Ok(val.into()),
106109
Unsigned(val) => Ok(val.into()),
107110
UnsignedBig(val) => Ok(val),
@@ -161,6 +164,7 @@ impl Value {
161164
}
162165
Ok(new_vec)
163166
}
167+
Byte(val) => Ok(vec![val.into()]),
164168
Short(val) => Ok(vec![val.into()]),
165169
Unsigned(val) => Ok(vec![val]),
166170
UnsignedBig(val) => Ok(vec![u32::try_from(val)?]),
@@ -188,9 +192,7 @@ impl Value {
188192
}
189193
Byte(val) => Ok(vec![val]),
190194

191-
val => Err(TiffError::FormatError(
192-
TiffFormatError::UnsignedIntegerExpected(val),
193-
)),
195+
val => Err(TiffError::FormatError(TiffFormatError::ByteExpected(val))),
194196
}
195197
}
196198

@@ -203,6 +205,7 @@ impl Value {
203205
}
204206
Ok(new_vec)
205207
}
208+
Byte(val) => Ok(vec![val.into()]),
206209
Short(val) => Ok(vec![val]),
207210
val => Err(TiffError::FormatError(TiffFormatError::ShortExpected(val))),
208211
}
@@ -282,6 +285,7 @@ impl Value {
282285
}
283286
Ok(new_vec)
284287
}
288+
Byte(val) => Ok(vec![val.into()]),
285289
Short(val) => Ok(vec![val.into()]),
286290
Unsigned(val) => Ok(vec![val.into()]),
287291
UnsignedBig(val) => Ok(vec![val]),
@@ -428,8 +432,8 @@ impl Entry {
428432

429433
// 2b: the value is at most 4 bytes or doesn't fit in the offset field.
430434
return Ok(match self.type_ {
431-
Type::BYTE => Unsigned(u32::from(self.offset[0])),
432-
Type::SBYTE => Signed(i32::from(self.offset[0] as i8)),
435+
Type::BYTE => Byte(self.offset[0]),
436+
Type::SBYTE => SignedByte(i8::from(self.offset[0] as i8)),
433437
Type::UNDEFINED => Byte(self.offset[0]),
434438
Type::SHORT => Short(self.r(bo).read_u16()?),
435439
Type::SSHORT => SignedShort(self.r(bo).read_i16()?),

0 commit comments

Comments
 (0)