Add SignedByte and SignedShort enum variants (#234)
This commit is contained in:
1 parent
0c54a18e21
commit
307cd8be97
5 files changed
+47
-1
No files matched your search
+31
-1
@@ -11,7 +11,7 @@ use crate::{TiffError, TiffFormatError, TiffResult};
|
||||
|
||||
use self::Value::{
|
||||
Ascii, Byte, Double, Float, Ifd, IfdBig, List, Rational, RationalBig, SRational, SRationalBig,
|
||||
Short, Signed, SignedBig, Unsigned, UnsignedBig,
|
||||
Short, Signed, SignedBig, SignedByte, SignedShort, Unsigned, UnsignedBig,
|
||||
};
|
||||
|
||||
#[allow(unused_qualifications)]
|
||||
@@ -20,6 +20,8 @@ use self::Value::{
|
||||
pub enum Value {
|
||||
Byte(u8),
|
||||
Short(u16),
|
||||
SignedByte(i8),
|
||||
SignedShort(i16),
|
||||
Signed(i32),
|
||||
SignedBig(i64),
|
||||
Unsigned(u32),
|
||||
@@ -43,6 +45,14 @@ impl Value {
|
||||
val => Err(TiffError::FormatError(TiffFormatError::ByteExpected(val))),
|
||||
}
|
||||
}
|
||||
pub fn into_i8(self) -> TiffResult<i8> {
|
||||
match self {
|
||||
SignedByte(val) => Ok(val),
|
||||
val => Err(TiffError::FormatError(TiffFormatError::SignedByteExpected(
|
||||
val,
|
||||
))),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn into_u16(self) -> TiffResult<u16> {
|
||||
match self {
|
||||
@@ -55,6 +65,18 @@ impl Value {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn into_i16(self) -> TiffResult<i16> {
|
||||
match self {
|
||||
SignedByte(val) => Ok(val.into()),
|
||||
SignedShort(val) => Ok(val),
|
||||
Signed(val) => Ok(i16::try_from(val)?),
|
||||
SignedBig(val) => Ok(i16::try_from(val)?),
|
||||
val => Err(TiffError::FormatError(
|
||||
TiffFormatError::SignedShortExpected(val),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn into_u32(self) -> TiffResult<u32> {
|
||||
match self {
|
||||
Short(val) => Ok(val.into()),
|
||||
@@ -70,6 +92,8 @@ impl Value {
|
||||
|
||||
pub fn into_i32(self) -> TiffResult<i32> {
|
||||
match self {
|
||||
SignedByte(val) => Ok(val.into()),
|
||||
SignedShort(val) => Ok(val.into()),
|
||||
Signed(val) => Ok(val),
|
||||
SignedBig(val) => Ok(i32::try_from(val)?),
|
||||
val => Err(TiffError::FormatError(
|
||||
@@ -93,6 +117,8 @@ impl Value {
|
||||
|
||||
pub fn into_i64(self) -> TiffResult<i64> {
|
||||
match self {
|
||||
SignedByte(val) => Ok(val.into()),
|
||||
SignedShort(val) => Ok(val.into()),
|
||||
Signed(val) => Ok(val.into()),
|
||||
SignedBig(val) => Ok(val),
|
||||
val => Err(TiffError::FormatError(
|
||||
@@ -204,6 +230,8 @@ impl Value {
|
||||
}
|
||||
Ok(new_vec)
|
||||
}
|
||||
SignedByte(val) => Ok(vec![val.into()]),
|
||||
SignedShort(val) => Ok(vec![val.into()]),
|
||||
Signed(val) => Ok(vec![val]),
|
||||
SignedBig(val) => Ok(vec![i32::try_from(val)?]),
|
||||
SRational(numerator, denominator) => Ok(vec![numerator, denominator]),
|
||||
@@ -289,6 +317,8 @@ impl Value {
|
||||
}
|
||||
Ok(new_vec)
|
||||
}
|
||||
SignedByte(val) => Ok(vec![val.into()]),
|
||||
SignedShort(val) => Ok(vec![val.into()]),
|
||||
Signed(val) => Ok(vec![val.into()]),
|
||||
SignedBig(val) => Ok(vec![val]),
|
||||
SRational(numerator, denominator) => Ok(vec![numerator.into(), denominator.into()]),
|
||||
|
||||
Reference in new issue
Block a user