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

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

Issue 17620004: Remove bitmap reuse from SkImageDecoder. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Add documentation. Created 7 years, 5 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 | Annotate | Revision Log
« 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 /* 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
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
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
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
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