diff options
Diffstat (limited to 'include/codec/SkCodec.h')
-rw-r--r-- | include/codec/SkCodec.h | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h index 3855064f61..629274d21c 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; |