Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | 1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
| 2 /* ***** BEGIN LICENSE BLOCK ***** | 2 /* ***** BEGIN LICENSE BLOCK ***** |
| 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| 4 * | 4 * |
| 5 * The contents of this file are subject to the Mozilla Public License Version | 5 * The contents of this file are subject to the Mozilla Public License Version |
| 6 * 1.1 (the "License"); you may not use this file except in compliance with | 6 * 1.1 (the "License"); you may not use this file except in compliance with |
| 7 * the License. You may obtain a copy of the License at | 7 * the License. You may obtain a copy of the License at |
| 8 * http://www.mozilla.org/MPL/ | 8 * http://www.mozilla.org/MPL/ |
| 9 * | 9 * |
| 10 * Software distributed under the License is distributed on an "AS IS" basis, | 10 * Software distributed under the License is distributed on an "AS IS" basis, |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 * of those above. If you wish to allow use of your version of this file only | 28 * of those above. If you wish to allow use of your version of this file only |
| 29 * under the terms of either the GPL or the LGPL, and not to allow others to | 29 * under the terms of either the GPL or the LGPL, and not to allow others to |
| 30 * use your version of this file under the terms of the MPL, indicate your | 30 * use your version of this file under the terms of the MPL, indicate your |
| 31 * decision by deleting the provisions above and replace them with the notice | 31 * decision by deleting the provisions above and replace them with the notice |
| 32 * and other provisions required by the GPL or the LGPL. If you do not delete | 32 * and other provisions required by the GPL or the LGPL. If you do not delete |
| 33 * the provisions above, a recipient may use your version of this file under | 33 * the provisions above, a recipient may use your version of this file under |
| 34 * the terms of any one of the MPL, the GPL or the LGPL. | 34 * the terms of any one of the MPL, the GPL or the LGPL. |
| 35 * | 35 * |
| 36 * ***** END LICENSE BLOCK ***** */ | 36 * ***** END LICENSE BLOCK ***** */ |
| 37 | 37 |
| 38 #ifndef GIFImageReader_h | 38 #ifndef SkGifImageReader_h |
| 39 #define GIFImageReader_h | 39 #define SkGifImageReader_h |
| 40 | 40 |
| 41 // Define ourselves as the clientPtr. Mozilla just hacked their C++ callback cl ass into this old C decoder, | 41 // Define ourselves as the clientPtr. Mozilla just hacked their C++ callback cl ass into this old C decoder, |
| 42 // so we will too. | 42 // so we will too. |
| 43 class SkGifCodec; | 43 class SkGifCodec; |
| 44 | 44 |
| 45 #include "SkCodec.h" | 45 #include "SkCodec.h" |
| 46 #include "SkCodecPriv.h" | 46 #include "SkCodecPriv.h" |
| 47 #include "SkCodecAnimation.h" | 47 #include "SkCodecAnimation.h" |
| 48 #include "SkColorTable.h" | 48 #include "SkColorTable.h" |
| 49 #include "SkData.h" | 49 #include "SkData.h" |
| 50 #include "SkImageInfo.h" | 50 #include "SkImageInfo.h" |
| 51 #include "SkStreamBuffer.h" | 51 #include "SkStreamBuffer.h" |
| 52 #include "../private/SkTArray.h" | 52 #include "../private/SkTArray.h" |
| 53 #include <memory> | 53 #include <memory> |
| 54 #include <vector> | 54 #include <vector> |
| 55 | 55 |
| 56 typedef SkTArray<unsigned char, true> GIFRow; | 56 typedef SkTArray<unsigned char, true> GIFRow; |
|
dogben
2016/10/25 17:32:43
There are a ton of top-level non-static declaratio
| |
| 57 | 57 |
| 58 | 58 |
| 59 #define MAX_DICTIONARY_ENTRY_BITS 12 | 59 #define MAX_DICTIONARY_ENTRY_BITS 12 |
| 60 #define MAX_DICTIONARY_ENTRIES 4096 // 2^MAX_DICTIONARY_ENTRY_BITS | 60 #define MAX_DICTIONARY_ENTRIES 4096 // 2^MAX_DICTIONARY_ENTRY_BITS |
| 61 #define MAX_COLORS 256 | 61 #define MAX_COLORS 256 |
| 62 #define BYTES_PER_COLORMAP_ENTRY 3 | 62 #define BYTES_PER_COLORMAP_ENTRY 3 |
| 63 | 63 |
| 64 constexpr int cLoopCountNotSeen = -2; | 64 constexpr int cLoopCountNotSeen = -2; |
| 65 constexpr size_t kNotFound = static_cast<size_t>(-1); | 65 constexpr size_t kNotFound = static_cast<size_t>(-1); |
| 66 | 66 |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 268 std::unique_ptr<GIFLZWContext> m_lzwContext; | 268 std::unique_ptr<GIFLZWContext> m_lzwContext; |
| 269 std::vector<sk_sp<SkData>> m_lzwBlocks; // LZW blocks for this frame. | 269 std::vector<sk_sp<SkData>> m_lzwBlocks; // LZW blocks for this frame. |
| 270 GIFColorMap m_localColorMap; | 270 GIFColorMap m_localColorMap; |
| 271 | 271 |
| 272 size_t m_currentLzwBlock; | 272 size_t m_currentLzwBlock; |
| 273 bool m_isComplete; | 273 bool m_isComplete; |
| 274 bool m_isHeaderDefined; | 274 bool m_isHeaderDefined; |
| 275 bool m_isDataSizeDefined; | 275 bool m_isDataSizeDefined; |
| 276 }; | 276 }; |
| 277 | 277 |
| 278 class GIFImageReader final : public SkNoncopyable { | 278 class SkGifImageReader final : public SkNoncopyable { |
| 279 public: | 279 public: |
| 280 // This takes ownership of stream. | 280 // This takes ownership of stream. |
| 281 GIFImageReader(SkStream* stream) | 281 SkGifImageReader(SkStream* stream) |
| 282 : m_client(nullptr) | 282 : m_client(nullptr) |
| 283 , m_state(GIFType) | 283 , m_state(GIFType) |
| 284 , m_bytesToConsume(6) // Number of bytes for GIF type, either "GIF87a" o r "GIF89a". | 284 , m_bytesToConsume(6) // Number of bytes for GIF type, either "GIF87a" o r "GIF89a". |
| 285 , m_version(0) | 285 , m_version(0) |
| 286 , m_screenWidth(0) | 286 , m_screenWidth(0) |
| 287 , m_screenHeight(0) | 287 , m_screenHeight(0) |
| 288 , m_loopCount(cLoopCountNotSeen) | 288 , m_loopCount(cLoopCountNotSeen) |
| 289 , m_streamBuffer(stream) | 289 , m_streamBuffer(stream) |
| 290 , m_parseCompleted(false) | 290 , m_parseCompleted(false) |
| 291 , m_firstFrameHasAlpha(false) | 291 , m_firstFrameHasAlpha(false) |
| 292 , m_firstFrameSupportsIndex8(false) | 292 , m_firstFrameSupportsIndex8(false) |
| 293 { | 293 { |
| 294 } | 294 } |
| 295 | 295 |
| 296 ~GIFImageReader() | 296 ~SkGifImageReader() |
| 297 { | 297 { |
| 298 } | 298 } |
| 299 | 299 |
| 300 void setClient(SkGifCodec* client) { m_client = client; } | 300 void setClient(SkGifCodec* client) { m_client = client; } |
| 301 | 301 |
| 302 unsigned screenWidth() const { return m_screenWidth; } | 302 unsigned screenWidth() const { return m_screenWidth; } |
| 303 unsigned screenHeight() const { return m_screenHeight; } | 303 unsigned screenHeight() const { return m_screenHeight; } |
| 304 | 304 |
| 305 // Option to pass to parse(). All enums are negative, because a non-negative value is used to | 305 // Option to pass to parse(). All enums are negative, because a non-negative value is used to |
| 306 // indicate that the Reader should parse up to and including the frame indic ated. | 306 // indicate that the Reader should parse up to and including the frame indic ated. |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 389 SkStreamBuffer m_streamBuffer; | 389 SkStreamBuffer m_streamBuffer; |
| 390 bool m_parseCompleted; | 390 bool m_parseCompleted; |
| 391 | 391 |
| 392 // These values can be computed before we create a GIFFrameContext, so we | 392 // These values can be computed before we create a GIFFrameContext, so we |
| 393 // store them here instead of on m_frames[0]. | 393 // store them here instead of on m_frames[0]. |
| 394 bool m_firstFrameHasAlpha; | 394 bool m_firstFrameHasAlpha; |
| 395 bool m_firstFrameSupportsIndex8; | 395 bool m_firstFrameSupportsIndex8; |
| 396 }; | 396 }; |
| 397 | 397 |
| 398 #endif | 398 #endif |
| OLD | NEW |