Skip to content

Commit 082a35a

Browse files
committed
Deprecate unofficial value types
Seems they were introduced with BigTiff but since the enumeration of the decoder had no obligation of introducing discriminant values the list was not cross-referenced to libtiff. Hence, some rational types exist with no basis in decoding.
1 parent 923df5f commit 082a35a

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

src/decoder/ifd.rs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ use crate::tags::{IfdPointer, Tag, Type};
1010
use crate::{TiffError, TiffFormatError, TiffResult};
1111

1212
use self::Value::{
13-
Ascii, Byte, Double, Float, Ifd, IfdBig, List, Rational, RationalBig, SRational, SRationalBig,
14-
Short, Signed, SignedBig, SignedByte, SignedShort, Unsigned, UnsignedBig,
13+
Ascii, Byte, Double, Float, Ifd, IfdBig, List, Rational, SRational, Short, Signed, SignedBig,
14+
SignedByte, SignedShort, Unsigned, UnsignedBig,
1515
};
1616

1717
#[allow(unused_qualifications)]
@@ -30,8 +30,16 @@ pub enum Value {
3030
Double(f64),
3131
List(Vec<Value>),
3232
Rational(u32, u32),
33+
#[deprecated(
34+
note = "Not implemented in BigTIFF with a standard tag value",
35+
since = "0.11.1"
36+
)]
3337
RationalBig(u64, u64),
3438
SRational(i32, i32),
39+
#[deprecated(
40+
note = "Not implemented in BigTIFF with a standard tag value",
41+
since = "0.11.1"
42+
)]
3543
SRationalBig(i64, i64),
3644
Ascii(String),
3745
Ifd(u32),
@@ -170,7 +178,8 @@ impl Value {
170178
Unsigned(val) => Ok(vec![val]),
171179
UnsignedBig(val) => Ok(vec![u32::try_from(val)?]),
172180
Rational(numerator, denominator) => Ok(vec![numerator, denominator]),
173-
RationalBig(numerator, denominator) => {
181+
#[expect(deprecated)]
182+
Value::RationalBig(numerator, denominator) => {
174183
Ok(vec![u32::try_from(numerator)?, u32::try_from(denominator)?])
175184
}
176185
Ifd(val) => Ok(vec![val]),
@@ -220,7 +229,8 @@ impl Value {
220229
new_vec.push(numerator);
221230
new_vec.push(denominator);
222231
}
223-
SRationalBig(numerator, denominator) => {
232+
#[expect(deprecated)]
233+
Value::SRationalBig(numerator, denominator) => {
224234
new_vec.push(i32::try_from(numerator)?);
225235
new_vec.push(i32::try_from(denominator)?);
226236
}
@@ -234,7 +244,8 @@ impl Value {
234244
Signed(val) => Ok(vec![val]),
235245
SignedBig(val) => Ok(vec![i32::try_from(val)?]),
236246
SRational(numerator, denominator) => Ok(vec![numerator, denominator]),
237-
SRationalBig(numerator, denominator) => {
247+
#[expect(deprecated)]
248+
Value::SRationalBig(numerator, denominator) => {
238249
Ok(vec![i32::try_from(numerator)?, i32::try_from(denominator)?])
239250
}
240251
_ => Err(TiffError::FormatError(TiffFormatError::InvalidTypeForTag)),
@@ -283,7 +294,8 @@ impl Value {
283294
Unsigned(val) => Ok(vec![val.into()]),
284295
UnsignedBig(val) => Ok(vec![val]),
285296
Rational(numerator, denominator) => Ok(vec![numerator.into(), denominator.into()]),
286-
RationalBig(numerator, denominator) => Ok(vec![numerator, denominator]),
297+
#[expect(deprecated)]
298+
Value::RationalBig(numerator, denominator) => Ok(vec![numerator, denominator]),
287299
Ifd(val) => Ok(vec![val.into()]),
288300
IfdBig(val) => Ok(vec![val]),
289301
Ascii(val) => Ok(val.chars().map(u32::from).map(u64::from).collect()),
@@ -301,7 +313,8 @@ impl Value {
301313
new_vec.push(numerator.into());
302314
new_vec.push(denominator.into());
303315
}
304-
SRationalBig(numerator, denominator) => {
316+
#[expect(deprecated)]
317+
Value::SRationalBig(numerator, denominator) => {
305318
new_vec.push(numerator);
306319
new_vec.push(denominator);
307320
}
@@ -315,7 +328,8 @@ impl Value {
315328
Signed(val) => Ok(vec![val.into()]),
316329
SignedBig(val) => Ok(vec![val]),
317330
SRational(numerator, denominator) => Ok(vec![numerator.into(), denominator.into()]),
318-
SRationalBig(numerator, denominator) => Ok(vec![numerator, denominator]),
331+
#[expect(deprecated)]
332+
Value::SRationalBig(numerator, denominator) => Ok(vec![numerator, denominator]),
319333
_ => Err(TiffError::FormatError(TiffFormatError::InvalidTypeForTag)),
320334
}
321335
}

0 commit comments

Comments
 (0)