diff options
author | 2013-10-09 16:49:45 +0000 | |
---|---|---|
committer | 2013-10-09 16:49:45 +0000 | |
commit | 48d9ff5b3475ad4b345fae35e1ce36b34069691b (patch) | |
tree | 031139bad8087d5953e8494c8f593da5ecbefcdd /src/images/SkImageDecoder_libgif.cpp | |
parent | 9864c24e40448ef64b1fe367eee1d63a872e51b8 (diff) |
Revert "change SkColorTable to be immutable"
This reverts commit 1c0ff422868b3badf5ffe0790a5d051d1896e2f7.
BUG=
Review URL: https://codereview.chromium.org/26709002
git-svn-id: http://skia.googlecode.com/svn/trunk@11677 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/images/SkImageDecoder_libgif.cpp')
-rw-r--r-- | src/images/SkImageDecoder_libgif.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/images/SkImageDecoder_libgif.cpp b/src/images/SkImageDecoder_libgif.cpp index ab0fbdaf3f..08f37efced 100644 --- a/src/images/SkImageDecoder_libgif.cpp +++ b/src/images/SkImageDecoder_libgif.cpp @@ -248,13 +248,10 @@ bool SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* bm, Mode mode) { if (NULL == cmap) { return error_return(gif, *bm, "null cmap"); } - colorCount = cmap->ColorCount; - if (colorCount > 256) { - colorCount = 256; // our kIndex8 can't support more - } - SkPMColor colorPtr[256]; // storage for worst-case - SkAlphaType alphaType = kOpaque_SkAlphaType; + colorCount = cmap->ColorCount; + SkAutoTMalloc<SkPMColor> colorStorage(colorCount); + SkPMColor* colorPtr = colorStorage.get(); for (int index = 0; index < colorCount; index++) { colorPtr[index] = SkPackARGB32(0xFF, cmap->Colors[index].Red, @@ -266,12 +263,10 @@ bool SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* bm, Mode mode) { bool reallyHasAlpha = transpIndex >= 0; if (reallyHasAlpha) { colorPtr[transpIndex] = SK_ColorTRANSPARENT; // ram in a transparent SkPMColor - alphaType = kPremul_SkAlphaType; } - SkAutoTUnref<SkColorTable> ctable(SkNEW_ARGS(SkColorTable, - (colorPtr, colorCount, - alphaType))); + SkAutoTUnref<SkColorTable> ctable(SkNEW_ARGS(SkColorTable, (colorPtr, colorCount))); + ctable->setIsOpaque(!reallyHasAlpha); if (!this->allocPixelRef(bm, ctable)) { return error_return(gif, *bm, "allocPixelRef"); } |