Index: Source/core/platform/image-decoders/gif/GIFImageReader.h |
diff --git a/Source/core/platform/image-decoders/gif/GIFImageReader.h b/Source/core/platform/image-decoders/gif/GIFImageReader.h |
index 79d0b4ba75c5cc6fdca625684906df92d44f4ed8..ef85725ddf8fc0446e2d8bd244c8793c0903f10d 100644 |
--- a/Source/core/platform/image-decoders/gif/GIFImageReader.h |
+++ b/Source/core/platform/image-decoders/gif/GIFImageReader.h |
@@ -46,10 +46,10 @@ |
#include "wtf/PassOwnPtr.h" |
#include "wtf/Vector.h" |
-#define MAX_LZW_BITS 12 |
-#define MAX_BYTES 4097 /* 2^MAX_LZW_BITS+1 */ |
-#define MAX_COLORS 256 |
-#define GIF_COLORS 3 |
+#define MAX_DICTIONARY_ENTRY_BITS 12 |
+#define MAX_DICTIONARY_ENTRIES 4096 // 2^MAX_DICTIONARY_ENTRY_BITS |
+#define MAX_COLORS 256 |
+#define BYTES_PER_COLORMAP_ENTRY 3 |
const int cLoopCountNotSeen = -2; |
@@ -95,14 +95,13 @@ public: |
, ipass(0) |
, irow(0) |
, rowsRemaining(0) |
- , stackp(0) |
, rowIter(0) |
, m_client(client) |
, m_frameContext(frameContext) |
{ } |
bool prepareToDecode(); |
- bool outputRow(); |
+ bool outputRow(GIFRow::const_iterator rowBegin); |
bool doLZW(const unsigned char* block, size_t bytesInBlock); |
bool hasRemainingRows() { return rowsRemaining; } |
@@ -120,13 +119,11 @@ private: |
size_t irow; // Current output row, starting at zero. |
size_t rowsRemaining; // Rows remaining to be output. |
- unsigned short prefix[MAX_BYTES]; |
- unsigned char suffix[MAX_BYTES]; |
- unsigned char stack[MAX_BYTES]; |
- Vector<unsigned char> rowBuffer; // Single scanline temporary buffer. |
- |
- size_t stackp; // Current stack pointer. |
- Vector<unsigned char>::iterator rowIter; |
+ unsigned short prefix[MAX_DICTIONARY_ENTRIES]; |
+ unsigned char suffix[MAX_DICTIONARY_ENTRIES]; |
+ unsigned short suffixLength[MAX_DICTIONARY_ENTRIES]; |
+ GIFRow rowBuffer; // Single scanline temporary buffer. |
+ GIFRow::iterator rowIter; |
// Initialized during construction and read-only. |
WebCore::GIFImageDecoder* m_client; |