| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2008 The Android Open Source Project | 2 * Copyright 2008 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 SkPixelRef_DEFINED | 8 #ifndef SkPixelRef_DEFINED |
| 9 #define SkPixelRef_DEFINED | 9 #define SkPixelRef_DEFINED |
| 10 | 10 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 SkColorTable* fColorTable; | 79 SkColorTable* fColorTable; |
| 80 size_t fRowBytes; | 80 size_t fRowBytes; |
| 81 | 81 |
| 82 void zero() { sk_bzero(this, sizeof(*this)); } | 82 void zero() { sk_bzero(this, sizeof(*this)); } |
| 83 | 83 |
| 84 bool isZero() const { | 84 bool isZero() const { |
| 85 return NULL == fPixels && NULL == fColorTable && 0 == fRowBytes; | 85 return NULL == fPixels && NULL == fColorTable && 0 == fRowBytes; |
| 86 } | 86 } |
| 87 }; | 87 }; |
| 88 | 88 |
| 89 SkDEBUGCODE(bool isLocked() const { return fLockCount > 0; }) | 89 /** |
| 90 * Returns true if the lockcount > 0 |
| 91 */ |
| 92 bool isLocked() const { return fLockCount > 0; } |
| 93 |
| 90 SkDEBUGCODE(int getLockCount() const { return fLockCount; }) | 94 SkDEBUGCODE(int getLockCount() const { return fLockCount; }) |
| 91 | 95 |
| 92 /** | 96 /** |
| 93 * Call to access the pixel memory. Return true on success. Balance this | 97 * Call to access the pixel memory. Return true on success. Balance this |
| 94 * with a call to unlockPixels(). | 98 * with a call to unlockPixels(). |
| 95 */ | 99 */ |
| 96 bool lockPixels(); | 100 bool lockPixels(); |
| 97 | 101 |
| 98 /** | 102 /** |
| 99 * Call to access the pixel memory. On success, return true and fill out | 103 * Call to access the pixel memory. On success, return true and fill out |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 * return a ref to its data. If the pixelRef | 190 * return a ref to its data. If the pixelRef |
| 187 * is uncompressed or otherwise does not have this form, return NULL. | 191 * is uncompressed or otherwise does not have this form, return NULL. |
| 188 * | 192 * |
| 189 * If non-null is returned, the caller is responsible for calling unref() | 193 * If non-null is returned, the caller is responsible for calling unref() |
| 190 * on the data when it is finished. | 194 * on the data when it is finished. |
| 191 */ | 195 */ |
| 192 SkData* refEncodedData() { | 196 SkData* refEncodedData() { |
| 193 return this->onRefEncodedData(); | 197 return this->onRefEncodedData(); |
| 194 } | 198 } |
| 195 | 199 |
| 200 /** |
| 201 * Experimental -- tells the caller if it is worth it to call decodeInto(). |
| 202 * Just an optimization at this point, to avoid checking the cache first. |
| 203 * We may remove/change this call in the future. |
| 204 */ |
| 205 bool implementsDecodeInto() { |
| 206 return this->onImplementsDecodeInto(); |
| 207 } |
| 208 |
| 209 /** |
| 210 * Return a decoded instance of this pixelRef in bitmap. If this cannot be |
| 211 * done, return false and the bitmap parameter is ignored/unchanged. |
| 212 * |
| 213 * pow2 is the requeste power-of-two downscale that the caller needs. This |
| 214 * can be ignored, and the "original" size can be returned, but if the |
| 215 * underlying codec can efficiently return a smaller size, that should be |
| 216 * done. Some examples: |
| 217 * |
| 218 * To request the "base" version (original scale), pass 0 for pow2 |
| 219 * To request 1/2 scale version (1/2 width, 1/2 height), pass 1 for pow2 |
| 220 * To request 1/4 scale version (1/4 width, 1/4 height), pass 2 for pow2 |
| 221 * ... |
| 222 * |
| 223 * If this returns true, then bitmap must be "locked" such that |
| 224 * bitmap->getPixels() will return the correct address. |
| 225 */ |
| 226 bool decodeInto(int pow2, SkBitmap* bitmap) { |
| 227 SkASSERT(pow2 >= 0); |
| 228 return this->onDecodeInto(pow2, bitmap); |
| 229 } |
| 230 |
| 196 /** Are we really wrapping a texture instead of a bitmap? | 231 /** Are we really wrapping a texture instead of a bitmap? |
| 197 */ | 232 */ |
| 198 virtual GrTexture* getTexture() { return NULL; } | 233 virtual GrTexture* getTexture() { return NULL; } |
| 199 | 234 |
| 200 /** | 235 /** |
| 201 * If any planes or rowBytes is NULL, this should output the sizes and retu
rn true | 236 * If any planes or rowBytes is NULL, this should output the sizes and retu
rn true |
| 202 * if it can efficiently return YUV planar data. If it cannot, it should re
turn false. | 237 * if it can efficiently return YUV planar data. If it cannot, it should re
turn false. |
| 203 * | 238 * |
| 204 * If all planes and rowBytes are not NULL, then it should copy the associa
ted Y,U,V data | 239 * If all planes and rowBytes are not NULL, then it should copy the associa
ted Y,U,V data |
| 205 * into those planes of memory supplied by the caller. It should validate t
hat the sizes | 240 * into those planes of memory supplied by the caller. It should validate t
hat the sizes |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 * move or discard that memory. | 296 * move or discard that memory. |
| 262 * | 297 * |
| 263 * The caller will have already acquired a mutex for thread safety, so this | 298 * The caller will have already acquired a mutex for thread safety, so this |
| 264 * method need not do that. | 299 * method need not do that. |
| 265 */ | 300 */ |
| 266 virtual void onUnlockPixels() = 0; | 301 virtual void onUnlockPixels() = 0; |
| 267 | 302 |
| 268 /** Default impl returns true */ | 303 /** Default impl returns true */ |
| 269 virtual bool onLockPixelsAreWritable() const; | 304 virtual bool onLockPixelsAreWritable() const; |
| 270 | 305 |
| 306 // returns false; |
| 307 virtual bool onImplementsDecodeInto(); |
| 308 // returns false; |
| 309 virtual bool onDecodeInto(int pow2, SkBitmap* bitmap); |
| 310 |
| 271 /** | 311 /** |
| 272 * For pixelrefs that don't have access to their raw pixels, they may be | 312 * For pixelrefs that don't have access to their raw pixels, they may be |
| 273 * able to make a copy of them (e.g. if the pixels are on the GPU). | 313 * able to make a copy of them (e.g. if the pixels are on the GPU). |
| 274 * | 314 * |
| 275 * The base class implementation returns false; | 315 * The base class implementation returns false; |
| 276 */ | 316 */ |
| 277 virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subsetOrNull); | 317 virtual bool onReadPixels(SkBitmap* dst, const SkIRect* subsetOrNull); |
| 278 | 318 |
| 279 // default impl returns NULL. | 319 // default impl returns NULL. |
| 280 virtual SkData* onRefEncodedData(); | 320 virtual SkData* onRefEncodedData(); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 /** | 386 /** |
| 347 * Allocate a new pixelref matching the specified ImageInfo, allocating | 387 * Allocate a new pixelref matching the specified ImageInfo, allocating |
| 348 * the memory for the pixels. If the ImageInfo requires a ColorTable, | 388 * the memory for the pixels. If the ImageInfo requires a ColorTable, |
| 349 * the pixelref will ref() the colortable. | 389 * the pixelref will ref() the colortable. |
| 350 * On failure return NULL. | 390 * On failure return NULL. |
| 351 */ | 391 */ |
| 352 virtual SkPixelRef* create(const SkImageInfo&, size_t rowBytes, SkColorTable
*) = 0; | 392 virtual SkPixelRef* create(const SkImageInfo&, size_t rowBytes, SkColorTable
*) = 0; |
| 353 }; | 393 }; |
| 354 | 394 |
| 355 #endif | 395 #endif |
| OLD | NEW |