Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(477)

Side by Side Diff: src/images/SkMovie_gif.cpp

Issue 860853003: Upstream support for giflib >= 5.1. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 98 Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/images/SkImageDecoder_libgif.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkMovie.h" 10 #include "SkMovie.h"
11 #include "SkColor.h" 11 #include "SkColor.h"
12 #include "SkColorPriv.h" 12 #include "SkColorPriv.h"
13 #include "SkStream.h" 13 #include "SkStream.h"
14 #include "SkTemplates.h" 14 #include "SkTemplates.h"
15 #include "SkUtils.h" 15 #include "SkUtils.h"
16 16
17 #include "gif_lib.h" 17 #include "gif_lib.h"
18 18
19 #if GIFLIB_MAJOR < 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR == 0)
20 #define DGifCloseFile(a, b) DGifCloseFile(a)
21 #endif
22
19 class SkGIFMovie : public SkMovie { 23 class SkGIFMovie : public SkMovie {
20 public: 24 public:
21 SkGIFMovie(SkStream* stream); 25 SkGIFMovie(SkStream* stream);
22 virtual ~SkGIFMovie(); 26 virtual ~SkGIFMovie();
23 27
24 protected: 28 protected:
25 virtual bool onGetInfo(Info*); 29 virtual bool onGetInfo(Info*);
26 virtual bool onSetTime(SkMSec); 30 virtual bool onSetTime(SkMSec);
27 virtual bool onGetBitmap(SkBitmap*); 31 virtual bool onGetBitmap(SkBitmap*);
28 32
(...skipping 14 matching lines...) Expand all
43 #if GIFLIB_MAJOR < 5 47 #if GIFLIB_MAJOR < 5
44 fGIF = DGifOpen( stream, Decode ); 48 fGIF = DGifOpen( stream, Decode );
45 #else 49 #else
46 fGIF = DGifOpen( stream, Decode, NULL ); 50 fGIF = DGifOpen( stream, Decode, NULL );
47 #endif 51 #endif
48 if (NULL == fGIF) 52 if (NULL == fGIF)
49 return; 53 return;
50 54
51 if (DGifSlurp(fGIF) != GIF_OK) 55 if (DGifSlurp(fGIF) != GIF_OK)
52 { 56 {
53 DGifCloseFile(fGIF); 57 DGifCloseFile(fGIF, NULL);
54 fGIF = NULL; 58 fGIF = NULL;
55 } 59 }
56 fCurrIndex = -1; 60 fCurrIndex = -1;
57 fLastDrawIndex = -1; 61 fLastDrawIndex = -1;
58 } 62 }
59 63
60 SkGIFMovie::~SkGIFMovie() 64 SkGIFMovie::~SkGIFMovie()
61 { 65 {
62 if (fGIF) 66 if (fGIF)
63 DGifCloseFile(fGIF); 67 DGifCloseFile(fGIF, NULL);
64 } 68 }
65 69
66 static SkMSec savedimage_duration(const SavedImage* image) 70 static SkMSec savedimage_duration(const SavedImage* image)
67 { 71 {
68 for (int j = 0; j < image->ExtensionBlockCount; j++) 72 for (int j = 0; j < image->ExtensionBlockCount; j++)
69 { 73 {
70 if (image->ExtensionBlocks[j].Function == GRAPHICS_EXT_FUNC_CODE) 74 if (image->ExtensionBlocks[j].Function == GRAPHICS_EXT_FUNC_CODE)
71 { 75 {
72 SkASSERT(image->ExtensionBlocks[j].ByteCount >= 4); 76 SkASSERT(image->ExtensionBlocks[j].ByteCount >= 4);
73 const uint8_t* b = (const uint8_t*)image->ExtensionBlocks[j].Bytes; 77 const uint8_t* b = (const uint8_t*)image->ExtensionBlocks[j].Bytes;
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 memcmp(GIF89_STAMP, buf, GIF_STAMP_LEN) == 0) { 442 memcmp(GIF89_STAMP, buf, GIF_STAMP_LEN) == 0) {
439 // must rewind here, since our construct wants to re-read the data 443 // must rewind here, since our construct wants to re-read the data
440 stream->rewind(); 444 stream->rewind();
441 return SkNEW_ARGS(SkGIFMovie, (stream)); 445 return SkNEW_ARGS(SkGIFMovie, (stream));
442 } 446 }
443 } 447 }
444 return NULL; 448 return NULL;
445 } 449 }
446 450
447 static SkTRegistry<SkMovie*(*)(SkStreamRewindable*)> gReg(Factory); 451 static SkTRegistry<SkMovie*(*)(SkStreamRewindable*)> gReg(Factory);
OLDNEW
« no previous file with comments | « src/images/SkImageDecoder_libgif.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698