diff options
Diffstat (limited to 'third_party/gif')
-rw-r--r-- | third_party/gif/SkGifImageReader.cpp | 2 | ||||
-rw-r--r-- | third_party/gif/SkGifImageReader.h | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/third_party/gif/SkGifImageReader.cpp b/third_party/gif/SkGifImageReader.cpp index e76028dac9..76f3edcef0 100644 --- a/third_party/gif/SkGifImageReader.cpp +++ b/third_party/gif/SkGifImageReader.cpp @@ -762,11 +762,13 @@ bool SkGifImageReader::parse(SkGifImageReader::SkGIFParseQuery query) isLocalColormapDefined, numColors)) { m_firstFrameHasAlpha = true; + m_firstFrameSupportsIndex8 = true; } else { const bool frameIsSubset = xOffset > 0 || yOffset > 0 || width < fScreenWidth || height < fScreenHeight; m_firstFrameHasAlpha = frameIsSubset; + m_firstFrameSupportsIndex8 = !frameIsSubset; } } diff --git a/third_party/gif/SkGifImageReader.h b/third_party/gif/SkGifImageReader.h index 49655c23df..f105a1de87 100644 --- a/third_party/gif/SkGifImageReader.h +++ b/third_party/gif/SkGifImageReader.h @@ -289,6 +289,7 @@ public: , m_streamBuffer(stream) , m_parseCompleted(false) , m_firstFrameHasAlpha(false) + , m_firstFrameSupportsIndex8(false) { } @@ -366,6 +367,8 @@ public: bool firstFrameHasAlpha() const { return m_firstFrameHasAlpha; } + bool firstFrameSupportsIndex8() const { return m_firstFrameSupportsIndex8; } + // Helper function that returns whether an SkGIFFrameContext has transparency. // This method is sometimes called before creating one/parsing its color map, // so it cannot rely on SkGIFFrameContext::transparentPixel or ::localColorMap(). @@ -407,9 +410,10 @@ private: SkStreamBuffer m_streamBuffer; bool m_parseCompleted; - // This value can be computed before we create a SkGIFFrameContext, so we - // store it here instead of on m_frames[0]. + // These values can be computed before we create a SkGIFFrameContext, so we + // store them here instead of on m_frames[0]. bool m_firstFrameHasAlpha; + bool m_firstFrameSupportsIndex8; }; #endif |