1 /* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkBitmapProvider_DEFINED 9 #define SkBitmapProvider_DEFINED 10 11 #include "SkImage.h" 12 #include "SkBitmapCache.h" 13 14 class SkBitmapProvider { 15 public: SkBitmapProvider(const SkImage * img)16 explicit SkBitmapProvider(const SkImage* img) 17 : fImage(img) { 18 SkASSERT(img); 19 } SkBitmapProvider(const SkBitmapProvider & other)20 SkBitmapProvider(const SkBitmapProvider& other) 21 : fImage(other.fImage) 22 {} 23 24 SkBitmapCacheDesc makeCacheDesc() const; 25 void notifyAddedToCache() const; 26 27 // Only call this if you're sure you need the bits, since it maybe expensive 28 // ... cause a decode and cache, or gpu-readback 29 bool asBitmap(SkBitmap*) const; 30 31 private: 32 // Stack-allocated only. 33 void* operator new(size_t) = delete; 34 void* operator new(size_t, void*) = delete; 35 36 // SkBitmapProvider is always short-lived/stack allocated, and the source image is guaranteed 37 // to outlive its scope => we can store a raw ptr to avoid ref churn. 38 const SkImage* fImage; 39 }; 40 41 #endif 42