diff options
author | Leon Scroggins III <scroggo@google.com> | 2017-04-11 10:32:02 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-11 15:05:05 +0000 |
commit | a4db9be6a28c3a2c24c31e721ac804aec47ad379 (patch) | |
tree | c57209e4f3ce29e137ad228d4ad9c65f0f6e6657 /include/codec/SkCodec.h | |
parent | 0f3fdfacf32261f943dcac5cdfd14475011f40db (diff) |
Correct GIF frame dependencies and track alpha
Add SkCodec::FrameInfo::fAlphaType. The SkImageInfo for the SkCodec
specifies the SkAlphaType for the first frame, but the opacity can vary
from frame to frame.
When determining the required frame, also compute whether a frame has
alpha. Update how we determine the required frame, which had bugs.
(Update a test that had an incorrect required frame as a result.)
Add new test images covering cases that have been fixed:
- randPixelsAnim2.gif
It has the following frames:
A (keep)
B (keep) (subset)
C (disposePrevious) (covers B)
D (any) (does *not* cover B)
B and C depend on A, but D depends on B, since after disposing C, B
should be visible again.
- alphabetAnim.gif
Includes frames which fill the image size, with different disposal
methods and transparencies.
Change-Id: Ie086167711c4cac4931ed8c4ddaeb9c9b0b91fdb
Reviewed-on: https://skia-review.googlesource.com/9810
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Diffstat (limited to 'include/codec/SkCodec.h')
-rw-r--r-- | include/codec/SkCodec.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h index 11d28ea8f2..6d4352214c 100644 --- a/include/codec/SkCodec.h +++ b/include/codec/SkCodec.h @@ -619,6 +619,12 @@ public: * There could be an error in the stream. */ bool fFullyReceived; + + /** + * This is conservative; it will still return non-opaque if e.g. a + * color index-based frame has a color with alpha but does not use it. + */ + SkAlphaType fAlphaType; }; /** |