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 "SkBitmap.h" 12 #include "SkImage.h" 13 #include "SkBitmapCache.h" 14 15 class SkBitmapProvider { 16 public: SkBitmapProvider(const SkBitmap & bm)17 explicit SkBitmapProvider(const SkBitmap& bm) : fBitmap(bm) {} SkBitmapProvider(const SkImage * img)18 explicit SkBitmapProvider(const SkImage* img) : fImage(SkSafeRef(img)) {} SkBitmapProvider(const SkBitmapProvider & other)19 SkBitmapProvider(const SkBitmapProvider& other) 20 : fBitmap(other.fBitmap) 21 , fImage(SkSafeRef(other.fImage.get())) 22 {} 23 24 int width() const; 25 int height() const; 26 uint32_t getID() const; 27 28 bool validForDrawing() const; 29 SkImageInfo info() const; 30 bool isVolatile() const; 31 32 SkBitmapCacheDesc makeCacheDesc(int w, int h) const; 33 SkBitmapCacheDesc makeCacheDesc() const; 34 void notifyAddedToCache() const; 35 36 // Only call this if you're sure you need the bits, since it maybe expensive 37 // ... cause a decode and cache, or gpu-readback 38 bool asBitmap(SkBitmap*) const; 39 40 private: 41 SkBitmap fBitmap; 42 SkAutoTUnref<const SkImage> fImage; 43 }; 44 45 #endif 46