| Index: include/codec/SkCodec.h
|
| diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h
|
| index 3855064f614d552bcb18e9ce6f6893bdb53e3740..629274d21ccacc734259c981b670d60cf1d37c5e 100644
|
| --- a/include/codec/SkCodec.h
|
| +++ b/include/codec/SkCodec.h
|
| @@ -107,6 +107,25 @@ public:
|
| */
|
| SkColorSpace* getColorSpace() const { return fColorSpace.get(); }
|
|
|
| + enum Origin {
|
| + kTopLeft_Origin = 1, // Default
|
| + kTopRight_Origin = 2, // Reflected across y-axis
|
| + kBottomRight_Origin = 3, // Rotated 180
|
| + kBottomLeft_Origin = 4, // Reflected across x-axis
|
| + kLeftTop_Origin = 5, // Reflected across x-axis, Rotated 90 CCW
|
| + kRightTop_Origin = 6, // Rotated 90 CW
|
| + kRightBottom_Origin = 7, // Reflected across x-axis, Rotated 90 CW
|
| + kLeftBottom_Origin = 8, // Rotated 90 CCW
|
| + kDefault_Origin = kTopLeft_Origin,
|
| + kLast_Origin = kLeftBottom_Origin,
|
| + };
|
| +
|
| + /**
|
| + * Returns the image orientation stored in the EXIF data.
|
| + * If there is no EXIF data, or if we cannot read the EXIF data, returns kTopLeft.
|
| + */
|
| + Origin getOrigin() const { return fOrigin; }
|
| +
|
| /**
|
| * Return a size that approximately supports the desired scale factor.
|
| * The codec may not be able to scale efficiently to the exact scale
|
| @@ -491,9 +510,11 @@ public:
|
| protected:
|
| /**
|
| * Takes ownership of SkStream*
|
| - * Does not affect ownership of SkColorSpace*
|
| */
|
| - SkCodec(const SkImageInfo&, SkStream*, sk_sp<SkColorSpace> = nullptr);
|
| + SkCodec(const SkImageInfo&,
|
| + SkStream*,
|
| + sk_sp<SkColorSpace> = nullptr,
|
| + Origin = kTopLeft_Origin);
|
|
|
| virtual SkISize onGetScaledDimensions(float /*desiredScale*/) const {
|
| // By default, scaling is not supported.
|
| @@ -625,6 +646,7 @@ private:
|
| SkAutoTDelete<SkStream> fStream;
|
| bool fNeedsRewind;
|
| sk_sp<SkColorSpace> fColorSpace;
|
| + const Origin fOrigin;
|
|
|
| // These fields are only meaningful during scanline decodes.
|
| SkImageInfo fDstInfo;
|
|
|