Index: src/lazy/SkLazyPixelRef.h |
diff --git a/src/lazy/SkLazyPixelRef.h b/src/lazy/SkLazyPixelRef.h |
index 8f7a751e953693efd0b81cc9e0bafd24dba6154c..b6e0454b1e93cd8ff08ccdf4cb7c3ba8fb2b008d 100644 |
--- a/src/lazy/SkLazyPixelRef.h |
+++ b/src/lazy/SkLazyPixelRef.h |
@@ -33,8 +33,9 @@ public: |
* Create a new SkLazyPixelRef. |
* @param SkData Encoded data representing the pixels. |
* @param DecodeProc Called to decode the pixels when needed. Must be non-NULL. |
- * @param SkImageCache Object that handles allocating and freeing the pixel memory, as needed. |
- * Must not be NULL. |
+ * @param SkImageCache Object that handles allocating and freeing |
+ * the pixel memory, as needed. If NULL, use the global |
+ * SkScaledImageCache. |
*/ |
SkLazyPixelRef(SkData*, SkBitmapFactory::DecodeProc, SkImageCache*); |
@@ -50,6 +51,13 @@ public: |
static void ResetCacheStats() { gCacheHits = gCacheMisses = 0; } |
#endif |
+ /** |
+ * The allocator is used when (fImageCache==NULL) to allocate |
+ * concrete PixelRefs as needed. If NULL, use the default allocator. |
+ * This is passed directly into SkBitmap::allocPixels(). |
+ */ |
+ virtual void setAllocator(SkBitmap::Allocator * allocator = NULL); |
+ |
// No need to flatten this object. When flattening an SkBitmap, SkOrderedWriteBuffer will check |
// the encoded data and write that instead. |
// Future implementations of SkFlattenableWriteBuffer will need to special case for |
@@ -69,9 +77,11 @@ private: |
SkData* fData; |
SkBitmapFactory::DecodeProc fDecodeProc; |
SkImageCache* fImageCache; |
+ // fCacheId is a (SkScaledImageCache::ID*) or a (SkImageCache::ID). |
intptr_t fCacheId; |
size_t fRowBytes; |
SkImage::Info fLazilyCachedInfo; |
+ SkBitmap::Allocator* fAllocator; |
#if LAZY_CACHE_STATS |
static int32_t gCacheHits; |
@@ -80,6 +90,9 @@ private: |
// lazily initialized our cached info. Returns NULL on failure. |
const SkImage::Info* getCachedInfo(); |
+ void* lockScaledImageCachePixels(); |
+ void* lockImageCachePixels(); |
+ |
typedef SkPixelRef INHERITED; |
}; |