OLD | NEW |
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 "SkColorTable.h" | 9 #include "SkColorTable.h" |
10 #include "SkImageInfo.h" | 10 #include "SkImageInfo.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 * Ownership is unchanged when we returned a gifOut. | 53 * Ownership is unchanged when we returned a gifOut. |
54 * | 54 * |
55 */ | 55 */ |
56 static bool ReadHeader(SkStream* stream, SkCodec** codecOut, | 56 static bool ReadHeader(SkStream* stream, SkCodec** codecOut, |
57 GifFileType** gifOut); | 57 GifFileType** gifOut); |
58 | 58 |
59 /* | 59 /* |
60 * Performs the full gif decode | 60 * Performs the full gif decode |
61 */ | 61 */ |
62 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, | 62 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, |
63 SkPMColor*, int32_t*) override; | 63 SkPMColor*, int*, int*) override; |
64 | 64 |
65 SkEncodedFormat onGetEncodedFormat() const override { | 65 SkEncodedFormat onGetEncodedFormat() const override { |
66 return kGIF_SkEncodedFormat; | 66 return kGIF_SkEncodedFormat; |
67 } | 67 } |
68 | 68 |
69 bool onRewind() override; | 69 bool onRewind() override; |
70 | 70 |
| 71 uint32_t onGetFillValue(SkColorType colorType, SkAlphaType alphaType) const
override; |
| 72 |
| 73 int onOutputScanline(int inputScanline) const; |
| 74 |
71 private: | 75 private: |
72 | 76 |
73 /* | 77 /* |
74 * A gif can contain multiple image frames. We will only decode the first | 78 * A gif can contain multiple image frames. We will only decode the first |
75 * frame. This function reads up to the first image frame, processing | 79 * frame. This function reads up to the first image frame, processing |
76 * transparency and/or animation information that comes before the image | 80 * transparency and/or animation information that comes before the image |
77 * data. | 81 * data. |
78 * | 82 * |
79 * @param gif Pointer to the library type that manages the gif decode | 83 * @param gif Pointer to the library type that manages the gif decode |
80 * @param transIndex This call will set the transparent index based on the | 84 * @param transIndex This call will set the transparent index based on the |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 /* | 126 /* |
123 * Initializes the swizzler. | 127 * Initializes the swizzler. |
124 * | 128 * |
125 * @param dstInfo Output image information. Dimensions may have been | 129 * @param dstInfo Output image information. Dimensions may have been |
126 * adjusted if the image frame size does not match the size | 130 * adjusted if the image frame size does not match the size |
127 * indicated in the header. | 131 * indicated in the header. |
128 * @param zeroInit Indicates if destination memory is zero initialized. | 132 * @param zeroInit Indicates if destination memory is zero initialized. |
129 */ | 133 */ |
130 Result initializeSwizzler(const SkImageInfo& dstInfo, ZeroInitialized zeroIn
it); | 134 Result initializeSwizzler(const SkImageInfo& dstInfo, ZeroInitialized zeroIn
it); |
131 | 135 |
132 SkSampler* getSampler() override { return fSwizzler; } | 136 SkSampler* getSampler(bool createIfNecessary) override { |
| 137 SkASSERT(fSwizzler); |
| 138 return fSwizzler; |
| 139 } |
133 | 140 |
134 /* | 141 /* |
135 * @return kSuccess if the read is successful and kIncompleteInput if the | 142 * @return true if the read is successful and false if the read fails. |
136 * read fails. | |
137 */ | 143 */ |
138 Result readRow(); | 144 bool readRow(); |
139 | 145 |
140 Result onStartScanlineDecode(const SkImageInfo& dstInfo, const Options& opts
, | 146 Result onStartScanlineDecode(const SkImageInfo& dstInfo, const Options& opts
, |
141 SkPMColor inputColorPtr[], int* inputColorCount) override; | 147 SkPMColor inputColorPtr[], int* inputColorCount) override; |
142 | 148 |
143 Result onGetScanlines(void* dst, int count, size_t rowBytes) override; | 149 int onGetScanlines(void* dst, int count, size_t rowBytes) override; |
144 | 150 |
145 SkScanlineOrder onGetScanlineOrder() const override; | 151 SkScanlineOrder onGetScanlineOrder() const override; |
146 | 152 |
147 int onNextScanline() const override; | |
148 | |
149 /* | 153 /* |
150 * This function cleans up the gif object after the decode completes | 154 * This function cleans up the gif object after the decode completes |
151 * It is used in a SkAutoTCallIProc template | 155 * It is used in a SkAutoTCallIProc template |
152 */ | 156 */ |
153 static void CloseGif(GifFileType* gif); | 157 static void CloseGif(GifFileType* gif); |
154 | 158 |
155 /* | 159 /* |
156 * Frees any extension data used in the decode | 160 * Frees any extension data used in the decode |
157 * Used in a SkAutoTCallVProc | 161 * Used in a SkAutoTCallVProc |
158 */ | 162 */ |
(...skipping 17 matching lines...) Expand all Loading... |
176 SkAutoTDeleteArray<uint8_t> fSrcBuffer; | 180 SkAutoTDeleteArray<uint8_t> fSrcBuffer; |
177 const SkIRect fFrameRect; | 181 const SkIRect fFrameRect; |
178 const uint32_t fTransIndex; | 182 const uint32_t fTransIndex; |
179 uint32_t fFillIndex; | 183 uint32_t fFillIndex; |
180 const bool fFrameIsSubset; | 184 const bool fFrameIsSubset; |
181 SkAutoTDelete<SkSwizzler> fSwizzler; | 185 SkAutoTDelete<SkSwizzler> fSwizzler; |
182 SkAutoTUnref<SkColorTable> fColorTable; | 186 SkAutoTUnref<SkColorTable> fColorTable; |
183 | 187 |
184 typedef SkCodec INHERITED; | 188 typedef SkCodec INHERITED; |
185 }; | 189 }; |
OLD | NEW |