Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #ifndef SkImageDecoder_DEFINED | 10 #ifndef SkImageDecoder_DEFINED |
| 11 #define SkImageDecoder_DEFINED | 11 #define SkImageDecoder_DEFINED |
| 12 | 12 |
| 13 #include "SkBitmap.h" | 13 #include "SkBitmap.h" |
| 14 #include "SkBitmapFactory.h" | 14 #include "SkBitmapFactory.h" |
| 15 #include "SkImage.h" | 15 #include "SkImage.h" |
| 16 #include "SkLruImageCache.h" | |
| 16 #include "SkRect.h" | 17 #include "SkRect.h" |
| 17 #include "SkRefCnt.h" | 18 #include "SkRefCnt.h" |
| 19 #include "SkPurgeableImageCache.h" | |
|
caryclark
2013/07/12 18:29:39
this may be correct but why is it required? I don'
sglez
2013/07/13 04:11:27
Good catch. I was using it when trying to implemen
| |
| 18 #include "SkTypes.h" | 20 #include "SkTypes.h" |
| 19 | 21 |
| 20 class SkStream; | 22 class SkStream; |
| 21 | 23 |
| 22 /** \class SkImageDecoder | 24 /** \class SkImageDecoder |
| 23 | 25 |
| 24 Base class for decoding compressed images into a SkBitmap | 26 Base class for decoding compressed images into a SkBitmap |
| 25 */ | 27 */ |
| 26 class SkImageDecoder : public SkNoncopyable { | 28 class SkImageDecoder : public SkNoncopyable { |
| 27 public: | 29 public: |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 90 */ | 92 */ |
| 91 void setRequireUnpremultipliedColors(bool request) { | 93 void setRequireUnpremultipliedColors(bool request) { |
| 92 fRequireUnpremultipliedColors = request; | 94 fRequireUnpremultipliedColors = request; |
| 93 } | 95 } |
| 94 | 96 |
| 95 /** Returns true if the decoder will only return bitmaps with unpremultiplie d | 97 /** Returns true if the decoder will only return bitmaps with unpremultiplie d |
| 96 colors. | 98 colors. |
| 97 */ | 99 */ |
| 98 bool getRequireUnpremultipliedColors() const { return fRequireUnpremultiplie dColors; } | 100 bool getRequireUnpremultipliedColors() const { return fRequireUnpremultiplie dColors; } |
| 99 | 101 |
| 102 /** | |
| 103 * Returns a pointer to the LRU cache used by LazyDecodeBitmap. | |
| 104 */ | |
| 105 static SkLruImageCache* getLruImageCache() { | |
| 106 return &fLruImageCache; | |
| 107 } | |
| 108 | |
| 100 /** \class Peeker | 109 /** \class Peeker |
| 101 | 110 |
| 102 Base class for optional callbacks to retrieve meta/chunk data out of | 111 Base class for optional callbacks to retrieve meta/chunk data out of |
| 103 an image as it is being decoded. | 112 an image as it is being decoded. |
| 104 */ | 113 */ |
| 105 class Peeker : public SkRefCnt { | 114 class Peeker : public SkRefCnt { |
| 106 public: | 115 public: |
| 107 SK_DECLARE_INST_COUNT(Peeker) | 116 SK_DECLARE_INST_COUNT(Peeker) |
| 108 | 117 |
| 109 /** Return true to continue decoding, or false to indicate an error, whi ch | 118 /** Return true to continue decoding, or false to indicate an error, whi ch |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 301 */ | 310 */ |
| 302 static bool DecodeMemory(const void* buffer, size_t size, SkBitmap* bitmap, | 311 static bool DecodeMemory(const void* buffer, size_t size, SkBitmap* bitmap, |
| 303 SkBitmap::Config prefConfig, Mode, | 312 SkBitmap::Config prefConfig, Mode, |
| 304 Format* format = NULL); | 313 Format* format = NULL); |
| 305 static bool DecodeMemory(const void* buffer, size_t size, SkBitmap* bitmap){ | 314 static bool DecodeMemory(const void* buffer, size_t size, SkBitmap* bitmap){ |
| 306 return DecodeMemory(buffer, size, bitmap, SkBitmap::kNo_Config, | 315 return DecodeMemory(buffer, size, bitmap, SkBitmap::kNo_Config, |
| 307 kDecodePixels_Mode, NULL); | 316 kDecodePixels_Mode, NULL); |
| 308 } | 317 } |
| 309 | 318 |
| 310 /** | 319 /** |
| 320 * Decode the image with DecodeMemoryToTarget but defer the process until it is needed. | |
| 321 */ | |
| 322 static bool LazyDecodeBitmap(const void* buffer, size_t size, SkBitmap* bitm ap); | |
| 323 | |
| 324 /** | |
| 311 * Decode memory. | 325 * Decode memory. |
| 312 * @param info Output parameter. Returns info about the encoded image. | 326 * @param info Output parameter. Returns info about the encoded image. |
| 313 * @param target Contains the address of pixel memory to decode into | 327 * @param target Contains the address of pixel memory to decode into |
| 314 * (which must be large enough to hold the width in info) and | 328 * (which must be large enough to hold the width in info) and |
| 315 * the row bytes to use. If NULL, returns info and does not | 329 * the row bytes to use. If NULL, returns info and does not |
| 316 * decode pixels. | 330 * decode pixels. |
| 317 * @return bool Whether the function succeeded. | 331 * @return bool Whether the function succeeded. |
| 318 * | 332 * |
| 319 * Sample usage: | 333 * Sample usage: |
| 320 * <code> | 334 * <code> |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 461 Chooser* fChooser; | 475 Chooser* fChooser; |
| 462 SkBitmap::Allocator* fAllocator; | 476 SkBitmap::Allocator* fAllocator; |
| 463 int fSampleSize; | 477 int fSampleSize; |
| 464 SkBitmap::Config fDefaultPref; // use if fUsePrefTable is false | 478 SkBitmap::Config fDefaultPref; // use if fUsePrefTable is false |
| 465 SkBitmap::Config fPrefTable[6]; // use if fUsePrefTable is true | 479 SkBitmap::Config fPrefTable[6]; // use if fUsePrefTable is true |
| 466 bool fDitherImage; | 480 bool fDitherImage; |
| 467 bool fUsePrefTable; | 481 bool fUsePrefTable; |
| 468 mutable bool fShouldCancelDecode; | 482 mutable bool fShouldCancelDecode; |
| 469 bool fPreferQualityOverSpeed; | 483 bool fPreferQualityOverSpeed; |
| 470 bool fRequireUnpremultipliedColors; | 484 bool fRequireUnpremultipliedColors; |
| 485 | |
| 486 static SkLruImageCache fLruImageCache; | |
| 487 static SkBitmapFactory fLazyBitmapFactory; | |
| 488 | |
| 471 }; | 489 }; |
| 472 | 490 |
| 473 /** Calling newDecoder with a stream returns a new matching imagedecoder | 491 /** Calling newDecoder with a stream returns a new matching imagedecoder |
| 474 instance, or NULL if none can be found. The caller must manage its ownership | 492 instance, or NULL if none can be found. The caller must manage its ownership |
| 475 of the stream as usual, calling unref() when it is done, as the returned | 493 of the stream as usual, calling unref() when it is done, as the returned |
| 476 decoder may have called ref() (and if so, the decoder is responsible for | 494 decoder may have called ref() (and if so, the decoder is responsible for |
| 477 balancing its ownership when it is destroyed). | 495 balancing its ownership when it is destroyed). |
| 478 */ | 496 */ |
| 479 class SkImageDecoderFactory : public SkRefCnt { | 497 class SkImageDecoderFactory : public SkRefCnt { |
| 480 public: | 498 public: |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 510 // not all of these will be available | 528 // not all of these will be available |
| 511 DECLARE_DECODER_CREATOR(BMPImageDecoder); | 529 DECLARE_DECODER_CREATOR(BMPImageDecoder); |
| 512 DECLARE_DECODER_CREATOR(GIFImageDecoder); | 530 DECLARE_DECODER_CREATOR(GIFImageDecoder); |
| 513 DECLARE_DECODER_CREATOR(ICOImageDecoder); | 531 DECLARE_DECODER_CREATOR(ICOImageDecoder); |
| 514 DECLARE_DECODER_CREATOR(JPEGImageDecoder); | 532 DECLARE_DECODER_CREATOR(JPEGImageDecoder); |
| 515 DECLARE_DECODER_CREATOR(PNGImageDecoder); | 533 DECLARE_DECODER_CREATOR(PNGImageDecoder); |
| 516 DECLARE_DECODER_CREATOR(WBMPImageDecoder); | 534 DECLARE_DECODER_CREATOR(WBMPImageDecoder); |
| 517 DECLARE_DECODER_CREATOR(WEBPImageDecoder); | 535 DECLARE_DECODER_CREATOR(WEBPImageDecoder); |
| 518 | 536 |
| 519 #endif | 537 #endif |
| OLD | NEW |