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

Side by Side Diff: src/codec/SkGifCodec.h

Issue 2045293002: Add support for multiple frames in SkCodec (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Return metadata in a vector Created 4 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkCodec.h" 8 #include "SkCodec.h"
9 #include "SkCodecAnimation.h" 9 #include "SkCodecAnimation.h"
10 #include "SkColorSpace.h" 10 #include "SkColorSpace.h"
11 #include "SkColorTable.h" 11 #include "SkColorTable.h"
12 #include "SkImageInfo.h" 12 #include "SkImageInfo.h"
13 #include "SkSwizzler.h" 13 #include "SkSwizzler.h"
14 #include "../private/SkTArray.h"
15 14
16 struct GifFileType; 15 struct GifFileType;
17 struct SavedImage; 16 struct SavedImage;
18 17
19 /* 18 /*
20 * 19 *
21 * This class implements the decoding for gif images 20 * This class implements the decoding for gif images
22 * 21 *
23 */ 22 */
24 class SkGifCodec : public SkCodec { 23 class SkGifCodec : public SkCodec {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 */ 60 */
62 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, 61 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&,
63 SkPMColor*, int*, int*) override; 62 SkPMColor*, int*, int*) override;
64 63
65 SkEncodedFormat onGetEncodedFormat() const override { 64 SkEncodedFormat onGetEncodedFormat() const override {
66 return kGIF_SkEncodedFormat; 65 return kGIF_SkEncodedFormat;
67 } 66 }
68 67
69 uint64_t onGetFillValue(const SkImageInfo&) const override; 68 uint64_t onGetFillValue(const SkImageInfo&) const override;
70 69
71 size_t onGetFrameCount() override { 70 std::vector<FrameInfo> onGetFrameInfo() override;
72 return (size_t) fFrameInfos.count();
73 }
74 71
75 size_t onGetRequiredFrame(size_t) override;
76
77 size_t onGetFrameDuration(size_t) override;
78 private: 72 private:
79 73
80 /* 74 /*
81 * A gif may contain many image frames, all of different sizes. 75 * A gif may contain many image frames, all of different sizes.
82 * This function checks if the gif dimensions are valid, based on the frame 76 * This function checks if the gif dimensions are valid, based on the frame
83 * dimensions, and corrects the gif dimensions if necessary. 77 * dimensions, and corrects the gif dimensions if necessary.
84 * 78 *
85 * @param gif Pointer to the library type that manages the gif decode 79 * @param gif Pointer to the library type that manages the gif decode
86 * @param size Size of the image that we will decode. 80 * @param size Size of the image that we will decode.
87 * Will be set by this function if the return value is tru e. 81 * Will be set by this function if the return value is tru e.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 * @param stream the stream of image data 139 * @param stream the stream of image data
146 * @param gif pointer to library type that manages gif decode 140 * @param gif pointer to library type that manages gif decode
147 * takes ownership 141 * takes ownership
148 * @param transIndex The transparent index. An invalid value 142 * @param transIndex The transparent index. An invalid value
149 * indicates that there is no transparent index. 143 * indicates that there is no transparent index.
150 */ 144 */
151 SkGifCodec(int width, int height, const SkEncodedInfo& info, SkStream* strea m, 145 SkGifCodec(int width, int height, const SkEncodedInfo& info, SkStream* strea m,
152 GifFileType* gif, uint32_t transIndex); 146 GifFileType* gif, uint32_t transIndex);
153 147
154 148
155 struct FrameInfo : public SkCodecAnimation::FrameInfo { 149 struct GifFrameInfo : public SkCodecAnimation::FrameInfo {
156 uint32_t fTransIndex; 150 uint32_t fTransIndex;
157 }; 151 };
158 152
159 SkAutoTCallVProc<GifFileType, CloseGif> fGif; // owned 153 SkAutoTCallVProc<GifFileType, CloseGif> fGif; // owned
160 SkAutoTDeleteArray<uint8_t> fSrcBuffer; 154 SkAutoTDeleteArray<uint8_t> fSrcBuffer;
161 uint32_t fFillIndex; 155 uint32_t fFillIndex;
162 SkAutoTDelete<SkSwizzler> fSwizzler; 156 SkAutoTDelete<SkSwizzler> fSwizzler;
163 SkAutoTUnref<SkColorTable> fColorTable; 157 SkAutoTUnref<SkColorTable> fColorTable;
164 SkTArray<FrameInfo> fFrameInfos; 158 std::vector<GifFrameInfo> fFrameInfos;
165 159
166 typedef SkCodec INHERITED; 160 typedef SkCodec INHERITED;
167 }; 161 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698