Fix bug in sampling rotated decodes
Bug: b/122338652
Bug: b/77339676
getSampledDimensions is supposed to report dimensions that
SkAndroidCodec can decode to. But if SkAndroidCodec is respecting an
orientation that requires swapping the width and the height,
getSampledDimensions needs to do so, too.
Change-Id: I0cacefc2b02eb9832b8c029c88bcaaedcb2ba82b
Reviewed-on: https://skia-review.googlesource.com/c/188035
Auto-Submit: Leon Scroggins <scroggo@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp
index d741d6d..d912231 100644
--- a/src/codec/SkAndroidCodec.cpp
+++ b/src/codec/SkAndroidCodec.cpp
@@ -300,7 +300,13 @@
return fInfo.dimensions();
}
- return this->onGetSampledDimensions(sampleSize);
+ auto dims = this->onGetSampledDimensions(sampleSize);
+ if (fOrientationBehavior == SkAndroidCodec::ExifOrientationBehavior::kIgnore
+ || !SkPixmapPriv::ShouldSwapWidthHeight(fCodec->getOrigin())) {
+ return dims;
+ }
+
+ return { dims.height(), dims.width() };
}
bool SkAndroidCodec::getSupportedSubset(SkIRect* desiredSubset) const {