diff options
Diffstat (limited to 'third_party/gif')
-rw-r--r-- | third_party/gif/SkGifImageReader.cpp | 7 | ||||
-rw-r--r-- | third_party/gif/SkGifImageReader.h | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/third_party/gif/SkGifImageReader.cpp b/third_party/gif/SkGifImageReader.cpp index a54fb59d3b..a04f8e11d0 100644 --- a/third_party/gif/SkGifImageReader.cpp +++ b/third_party/gif/SkGifImageReader.cpp @@ -879,15 +879,16 @@ static bool restore_bg(const SkFrame& frame) { return frame.getDisposalMethod() == SkCodecAnimation::DisposalMethod::kRestoreBGColor; } -bool SkGIFFrameContext::onReportsAlpha() const { +SkEncodedInfo::Alpha SkGIFFrameContext::onReportedAlpha() const { // Note: We could correct these after decoding - i.e. some frames may turn out to be // independent and opaque if they do not use the transparent pixel, but that would require // checking whether each pixel used the transparent index. - return is_palette_index_valid(this->transparentPixel()); + return is_palette_index_valid(this->transparentPixel()) ? SkEncodedInfo::kBinary_Alpha + : SkEncodedInfo::kOpaque_Alpha; } void SkFrameHolder::setAlphaAndRequiredFrame(SkFrame* frame) { - const bool reportsAlpha = frame->reportsAlpha(); + const bool reportsAlpha = frame->reportedAlpha() != SkEncodedInfo::kOpaque_Alpha; const auto screenRect = SkIRect::MakeWH(fScreenWidth, fScreenHeight); const auto frameRect = frame_rect_on_screen(frame->frameRect(), screenRect); diff --git a/third_party/gif/SkGifImageReader.h b/third_party/gif/SkGifImageReader.h index b5eca10dfb..5d8597fccf 100644 --- a/third_party/gif/SkGifImageReader.h +++ b/third_party/gif/SkGifImageReader.h @@ -247,7 +247,7 @@ public: SkGIFColorMap& localColorMap() { return m_localColorMap; } protected: - bool onReportsAlpha() const override; + SkEncodedInfo::Alpha onReportedAlpha() const override; private: int m_transparentPixel; // Index of transparent pixel. Value is kNotFound if there is no transparent pixel. |