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

Side by Side Diff: include/core/SkImageDecoder.h

Issue 647023006: Qualify the return value of SkImageDecoder::decode (Closed) Base URL: https://skia.googlesource.com/skia.git/+/master
Patch Set: Fix a piece of code only built on Android. Created 6 years, 2 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 | « no previous file | src/images/SkImageDecoder.cpp » ('j') | 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 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 #ifndef SkImageDecoder_DEFINED 8 #ifndef SkImageDecoder_DEFINED
9 #define SkImageDecoder_DEFINED 9 #define SkImageDecoder_DEFINED
10 10
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 218
219 /** Passed to the decode method. If kDecodeBounds_Mode is passed, then 219 /** Passed to the decode method. If kDecodeBounds_Mode is passed, then
220 only the bitmap's info need be set. If kDecodePixels_Mode 220 only the bitmap's info need be set. If kDecodePixels_Mode
221 is passed, then the bitmap must have pixels or a pixelRef. 221 is passed, then the bitmap must have pixels or a pixelRef.
222 */ 222 */
223 enum Mode { 223 enum Mode {
224 kDecodeBounds_Mode, //!< only return info in bitmap 224 kDecodeBounds_Mode, //!< only return info in bitmap
225 kDecodePixels_Mode //!< return entire bitmap (including pixels) 225 kDecodePixels_Mode //!< return entire bitmap (including pixels)
226 }; 226 };
227 227
228 /** Result of a decode. If read as a boolean, a partial success is
229 considered a success (true).
230 */
231 enum Result {
232 kFailure = 0, //!< Image failed to decode. bitmap will be
reed1 2014/10/17 21:07:26 nit: why specify the actual numeric values? we rar
scroggo 2014/10/17 21:11:44 I suppose I could be more explicit, but that is ho
233 // unchanged.
234 kPartialSuccess = 1, //!< Part of the image decoded. The rest is
235 // filled in automatically
236 kSuccess = 2 //!< The entire image decoded.
237 };
238
228 /** Given a stream, decode it into the specified bitmap. 239 /** Given a stream, decode it into the specified bitmap.
229 If the decoder can decompress the image, it calls bitmap.setInfo(), 240 If the decoder can decompress the image, it calls bitmap.setInfo(),
230 and then if the Mode is kDecodePixels_Mode, call allocPixelRef(), 241 and then if the Mode is kDecodePixels_Mode, call allocPixelRef(),
231 which will allocated a pixelRef. To access the pixel memory, the codec 242 which will allocated a pixelRef. To access the pixel memory, the codec
232 needs to call lockPixels/unlockPixels on the 243 needs to call lockPixels/unlockPixels on the
233 bitmap. It can then set the pixels with the decompressed image. 244 bitmap. It can then set the pixels with the decompressed image.
234 * If the image cannot be decompressed, return false. After the 245 * If the image cannot be decompressed, return false. After the
235 * decoding, the function converts the decoded colortype in bitmap 246 * decoding, the function converts the decoded colortype in bitmap
236 * to pref if possible. Whether a conversion is feasible is 247 * to pref if possible. Whether a conversion is feasible is
237 * tested by Bitmap::canCopyTo(pref). 248 * tested by Bitmap::canCopyTo(pref).
238 249
239 If an SkBitmap::Allocator is installed via setAllocator, it will be 250 If an SkBitmap::Allocator is installed via setAllocator, it will be
240 used to allocate the pixel memory. A clever allocator can be used 251 used to allocate the pixel memory. A clever allocator can be used
241 to allocate the memory from a cache, volatile memory, or even from 252 to allocate the memory from a cache, volatile memory, or even from
242 an existing bitmap's memory. 253 an existing bitmap's memory.
243 254
244 If a Peeker is installed via setPeeker, it may be used to peek into 255 If a Peeker is installed via setPeeker, it may be used to peek into
245 meta data during the decode. 256 meta data during the decode.
246 */ 257 */
247 bool decode(SkStream*, SkBitmap* bitmap, SkColorType pref, Mode); 258 Result decode(SkStream*, SkBitmap* bitmap, SkColorType pref, Mode);
248 bool decode(SkStream* stream, SkBitmap* bitmap, Mode mode) { 259 Result decode(SkStream* stream, SkBitmap* bitmap, Mode mode) {
249 return this->decode(stream, bitmap, kUnknown_SkColorType, mode); 260 return this->decode(stream, bitmap, kUnknown_SkColorType, mode);
250 } 261 }
251 262
252 /** 263 /**
253 * Given a stream, build an index for doing tile-based decode. 264 * Given a stream, build an index for doing tile-based decode.
254 * The built index will be saved in the decoder, and the image size will 265 * The built index will be saved in the decoder, and the image size will
255 * be returned in width and height. 266 * be returned in width and height.
256 * 267 *
257 * Return true for success or false on failure. 268 * Return true for success or false on failure.
258 */ 269 */
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 of the decoded stream. On failure it is ignored. 338 of the decoded stream. On failure it is ignored.
328 */ 339 */
329 static bool DecodeStream(SkStreamRewindable* stream, SkBitmap* bitmap, SkCol orType pref, Mode, 340 static bool DecodeStream(SkStreamRewindable* stream, SkBitmap* bitmap, SkCol orType pref, Mode,
330 Format* format = NULL); 341 Format* format = NULL);
331 static bool DecodeStream(SkStreamRewindable* stream, SkBitmap* bitmap) { 342 static bool DecodeStream(SkStreamRewindable* stream, SkBitmap* bitmap) {
332 return DecodeStream(stream, bitmap, kUnknown_SkColorType, kDecodePixels_ Mode, NULL); 343 return DecodeStream(stream, bitmap, kUnknown_SkColorType, kDecodePixels_ Mode, NULL);
333 } 344 }
334 345
335 protected: 346 protected:
336 // must be overridden in subclasses. This guy is called by decode(...) 347 // must be overridden in subclasses. This guy is called by decode(...)
337 virtual bool onDecode(SkStream*, SkBitmap* bitmap, Mode) = 0; 348 virtual Result onDecode(SkStream*, SkBitmap* bitmap, Mode) = 0;
338 349
339 // If the decoder wants to support tiled based decoding, 350 // If the decoder wants to support tiled based decoding,
340 // this method must be overridden. This guy is called by buildTileIndex(...) 351 // this method must be overridden. This guy is called by buildTileIndex(...)
341 virtual bool onBuildTileIndex(SkStreamRewindable*, int *width, int *height) { 352 virtual bool onBuildTileIndex(SkStreamRewindable*, int *width, int *height) {
342 return false; 353 return false;
343 } 354 }
344 355
345 // If the decoder wants to support tiled based decoding, 356 // If the decoder wants to support tiled based decoding,
346 // this method must be overridden. This guy is called by decodeRegion(...) 357 // this method must be overridden. This guy is called by decodeRegion(...)
347 virtual bool onDecodeSubset(SkBitmap* bitmap, const SkIRect& rect) { 358 virtual bool onDecodeSubset(SkBitmap* bitmap, const SkIRect& rect) {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 DECLARE_DECODER_CREATOR(PKMImageDecoder); 508 DECLARE_DECODER_CREATOR(PKMImageDecoder);
498 DECLARE_DECODER_CREATOR(KTXImageDecoder); 509 DECLARE_DECODER_CREATOR(KTXImageDecoder);
499 DECLARE_DECODER_CREATOR(ASTCImageDecoder); 510 DECLARE_DECODER_CREATOR(ASTCImageDecoder);
500 511
501 // Typedefs to make registering decoder and formatter callbacks easier. 512 // Typedefs to make registering decoder and formatter callbacks easier.
502 // These have to be defined outside SkImageDecoder. :( 513 // These have to be defined outside SkImageDecoder. :(
503 typedef SkTRegistry<SkImageDecoder*(*)(SkStreamRewindable*)> SkImageDecod er_DecodeReg; 514 typedef SkTRegistry<SkImageDecoder*(*)(SkStreamRewindable*)> SkImageDecod er_DecodeReg;
504 typedef SkTRegistry<SkImageDecoder::Format(*)(SkStreamRewindable*)> SkImageDecod er_FormatReg; 515 typedef SkTRegistry<SkImageDecoder::Format(*)(SkStreamRewindable*)> SkImageDecod er_FormatReg;
505 516
506 #endif 517 #endif
OLDNEW
« no previous file with comments | « no previous file | src/images/SkImageDecoder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698