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 |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 will cause the decoder to not return the image. | 110 will cause the decoder to not return the image. |
111 */ | 111 */ |
112 virtual bool peek(const char tag[], const void* data, size_t length) = 0
; | 112 virtual bool peek(const char tag[], const void* data, size_t length) = 0
; |
113 private: | 113 private: |
114 typedef SkRefCnt INHERITED; | 114 typedef SkRefCnt INHERITED; |
115 }; | 115 }; |
116 | 116 |
117 Peeker* getPeeker() const { return fPeeker; } | 117 Peeker* getPeeker() const { return fPeeker; } |
118 Peeker* setPeeker(Peeker*); | 118 Peeker* setPeeker(Peeker*); |
119 | 119 |
120 /** \class Peeker | 120 /** \class Chooser |
121 | 121 |
122 Base class for optional callbacks to retrieve meta/chunk data out of | 122 Base class for optional callbacks to choose an image from a format that |
123 an image as it is being decoded. | 123 contains multiple images. |
124 */ | 124 */ |
125 class Chooser : public SkRefCnt { | 125 class Chooser : public SkRefCnt { |
126 public: | 126 public: |
127 SK_DECLARE_INST_COUNT(Chooser) | 127 SK_DECLARE_INST_COUNT(Chooser) |
128 | 128 |
129 virtual void begin(int count) {} | 129 virtual void begin(int count) {} |
130 virtual void inspect(int index, SkBitmap::Config config, int width, int
height) {} | 130 virtual void inspect(int index, SkBitmap::Config config, int width, int
height) {} |
131 /** Return the index of the subimage you want, or -1 to choose none of t
hem. | 131 /** Return the index of the subimage you want, or -1 to choose none of t
hem. |
132 */ | 132 */ |
133 virtual int choose() = 0; | 133 virtual int choose() = 0; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 If the decoder can decompress the image, it calls bitmap.setConfig(), | 212 If the decoder can decompress the image, it calls bitmap.setConfig(), |
213 and then if the Mode is kDecodePixels_Mode, call allocPixelRef(), | 213 and then if the Mode is kDecodePixels_Mode, call allocPixelRef(), |
214 which will allocated a pixelRef. To access the pixel memory, the codec | 214 which will allocated a pixelRef. To access the pixel memory, the codec |
215 needs to call lockPixels/unlockPixels on the | 215 needs to call lockPixels/unlockPixels on the |
216 bitmap. It can then set the pixels with the decompressed image. | 216 bitmap. It can then set the pixels with the decompressed image. |
217 * If the image cannot be decompressed, return false. After the | 217 * If the image cannot be decompressed, return false. After the |
218 * decoding, the function converts the decoded config in bitmap | 218 * decoding, the function converts the decoded config in bitmap |
219 * to pref if possible. Whether a conversion is feasible is | 219 * to pref if possible. Whether a conversion is feasible is |
220 * tested by Bitmap::canCopyTo(pref). | 220 * tested by Bitmap::canCopyTo(pref). |
221 | 221 |
222 note: document use of Allocator, Peeker and Chooser | 222 If an SkBitmap::Allocator is installed via setAllocator, it will be |
| 223 used to allocate the pixel memory. A clever allocator can be used |
| 224 to allocate the memory from a cache, volatile memory, or even from |
| 225 an existing bitmap's memory. |
| 226 |
| 227 If a Peeker is installed via setPeeker, it may be used to peek into |
| 228 meta data during the decode. |
| 229 |
| 230 If a Chooser is installed via setChooser, it may be used to select |
| 231 which image to return from a format that contains multiple images. |
223 */ | 232 */ |
224 bool decode(SkStream*, SkBitmap* bitmap, SkBitmap::Config pref, Mode, bool r
euseBitmap = false); | 233 bool decode(SkStream*, SkBitmap* bitmap, SkBitmap::Config pref, Mode); |
225 bool decode(SkStream* stream, SkBitmap* bitmap, Mode mode, bool reuseBitmap
= false) { | 234 bool decode(SkStream* stream, SkBitmap* bitmap, Mode mode) { |
226 return this->decode(stream, bitmap, SkBitmap::kNo_Config, mode, reuseBit
map); | 235 return this->decode(stream, bitmap, SkBitmap::kNo_Config, mode); |
227 } | 236 } |
228 | 237 |
229 /** | 238 /** |
230 * Given a stream, build an index for doing tile-based decode. | 239 * Given a stream, build an index for doing tile-based decode. |
231 * The built index will be saved in the decoder, and the image size will | 240 * The built index will be saved in the decoder, and the image size will |
232 * be returned in width and height. | 241 * be returned in width and height. |
233 * | 242 * |
234 * Return true for success or false on failure. | 243 * Return true for success or false on failure. |
235 */ | 244 */ |
236 bool buildTileIndex(SkStream*, int *width, int *height); | 245 bool buildTileIndex(SkStream*, int *width, int *height); |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 // not all of these will be available | 500 // not all of these will be available |
492 DECLARE_DECODER_CREATOR(BMPImageDecoder); | 501 DECLARE_DECODER_CREATOR(BMPImageDecoder); |
493 DECLARE_DECODER_CREATOR(GIFImageDecoder); | 502 DECLARE_DECODER_CREATOR(GIFImageDecoder); |
494 DECLARE_DECODER_CREATOR(ICOImageDecoder); | 503 DECLARE_DECODER_CREATOR(ICOImageDecoder); |
495 DECLARE_DECODER_CREATOR(JPEGImageDecoder); | 504 DECLARE_DECODER_CREATOR(JPEGImageDecoder); |
496 DECLARE_DECODER_CREATOR(PNGImageDecoder); | 505 DECLARE_DECODER_CREATOR(PNGImageDecoder); |
497 DECLARE_DECODER_CREATOR(WBMPImageDecoder); | 506 DECLARE_DECODER_CREATOR(WBMPImageDecoder); |
498 DECLARE_DECODER_CREATOR(WEBPImageDecoder); | 507 DECLARE_DECODER_CREATOR(WEBPImageDecoder); |
499 | 508 |
500 #endif | 509 #endif |
OLD | NEW |