aboutsummaryrefslogtreecommitdiff
path: root/src/tiff_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/tiff_parser.cc')
-rw-r--r--src/tiff_parser.cc31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/tiff_parser.cc b/src/tiff_parser.cc
index 697e320..00bb944 100644
--- a/src/tiff_parser.cc
+++ b/src/tiff_parser.cc
@@ -556,7 +556,22 @@ bool GetFullDimension32(const TiffDirectory& tiff_directory,
}
}
- if (tiff_directory.Has(kExifTagWidth) && tiff_directory.Has(kExifTagHeight)) {
+ if (tiff_directory.Has(kExifTagDefaultCropSize)) {
+ std::vector<std::uint32_t> crop(2);
+ std::vector<Rational> crop_rational(2);
+ if (tiff_directory.Get(kExifTagDefaultCropSize, &crop)) {
+ *width = crop[0];
+ *height = crop[1];
+ } else if (tiff_directory.Get(kExifTagDefaultCropSize, &crop_rational) &&
+ crop_rational[0].denominator != 0 &&
+ crop_rational[1].denominator != 0) {
+ *width = crop_rational[0].numerator / crop_rational[0].denominator;
+ *height = crop_rational[1].numerator / crop_rational[1].denominator;
+ } else {
+ return false;
+ }
+ } else if (tiff_directory.Has(kExifTagWidth) &&
+ tiff_directory.Has(kExifTagHeight)) {
if (!tiff_directory.Get(kExifTagWidth, width) ||
!tiff_directory.Get(kExifTagHeight, height)) {
return false;
@@ -585,20 +600,6 @@ bool GetFullDimension32(const TiffDirectory& tiff_directory,
} else {
return false;
}
- } else if (tiff_directory.Has(kExifTagDefaultCropSize)) {
- std::vector<std::uint32_t> crop(2);
- std::vector<Rational> crop_rational(2);
- if (tiff_directory.Get(kExifTagDefaultCropSize, &crop)) {
- *width = crop[0];
- *height = crop[1];
- } else if (tiff_directory.Get(kExifTagDefaultCropSize, &crop_rational) &&
- crop_rational[0].denominator != 0 &&
- crop_rational[1].denominator != 0) {
- *width = crop_rational[0].numerator / crop_rational[0].denominator;
- *height = crop_rational[1].numerator / crop_rational[1].denominator;
- } else {
- return false;
- }
}
return true;
}