From 04e2cf568ce467f61d80a0784ede43f7a168715e Mon Sep 17 00:00:00 2001 From: KAMADA Ken'ichi Date: Wed, 5 Feb 2020 23:05:31 +0900 Subject: [PATCH] Add constants for the new tags in Exif 2.32. --- README | 2 +- src/tag.rs | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/README b/README index 860fa70..f90cebd 100644 --- a/README +++ b/README @@ -37,7 +37,7 @@ Dependencies Standards --------- - - Exif Version 2.31 + - Exif Version 2.32 - TIFF Revision 6.0 - ISO/IEC 14496-12:2015 - ISO/IEC 23008-12:2017 diff --git a/src/tag.rs b/src/tag.rs index a2b2dd8..5a7cb6b 100644 --- a/src/tag.rs +++ b/src/tag.rs @@ -584,6 +584,15 @@ generate_well_known_tag_constants!( (LensSerialNumber, 0xa435, DefaultValue::None, d_default, unit![], "Lens serial number"), + (CompositeImage, 0xa460, DefaultValue::Short(&[0]), d_cpstimg, + unit![], + "Composite image"), + (SourceImageNumberOfCompositeImage, 0xa461, DefaultValue::None, d_numcpstimg, + unit![], + "Source image number of composite image"), + (SourceExposureTimesOfCompositeImage, 0xa462, DefaultValue::None, d_default, + unit![], + "Source exposure times of composite image"), (Gamma, 0xa500, DefaultValue::None, d_decimal, unit![], "Gamma"), @@ -1201,6 +1210,25 @@ fn d_lensspec(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result { } } +// CompositeImage (Exif 0xa460) +fn d_cpstimg(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result { + let s = match value.get_uint(0) { + Some(1) => "non-composite", + Some(2) => "composite (general)", + Some(3) => "composite (at the moment of shooting)", + _ => return d_unknown(w, value, "unknown composite image "), + }; + w.write_str(s) +} + +// SourceImageNumberOfCompositeImage (Exif 0xa461) +fn d_numcpstimg(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result { + match (value.get_uint(0), value.get_uint(1)) { + (Some(t), Some(u)) => write!(w, "total {}, used {}", t, u), + _ => d_unknown(w, value, "unknown image number of composite imsage "), + } +} + // GPSVersionID (Exif/GPS 0x0) fn d_gpsver(w: &mut dyn fmt::Write, value: &Value) -> fmt::Result { match *value {