SkBitmapProvider.h revision 013e9e3bb0495ab0b5aff011429a6ac983464d34
1013e9e3bb0495ab0b5aff011429a6ac983464d34reed/* 2013e9e3bb0495ab0b5aff011429a6ac983464d34reed * Copyright 2015 Google Inc. 3013e9e3bb0495ab0b5aff011429a6ac983464d34reed * 4013e9e3bb0495ab0b5aff011429a6ac983464d34reed * Use of this source code is governed by a BSD-style license that can be 5013e9e3bb0495ab0b5aff011429a6ac983464d34reed * found in the LICENSE file. 6013e9e3bb0495ab0b5aff011429a6ac983464d34reed */ 7013e9e3bb0495ab0b5aff011429a6ac983464d34reed 8013e9e3bb0495ab0b5aff011429a6ac983464d34reed#ifndef SkBitmapProvider_DEFINED 9013e9e3bb0495ab0b5aff011429a6ac983464d34reed#define SkBitmapProvider_DEFINED 10013e9e3bb0495ab0b5aff011429a6ac983464d34reed 11013e9e3bb0495ab0b5aff011429a6ac983464d34reed#include "SkBitmap.h" 12013e9e3bb0495ab0b5aff011429a6ac983464d34reed#include "SkImage.h" 13013e9e3bb0495ab0b5aff011429a6ac983464d34reed#include "SkBitmapCache.h" 14013e9e3bb0495ab0b5aff011429a6ac983464d34reed 15013e9e3bb0495ab0b5aff011429a6ac983464d34reedclass SkBitmapProvider { 16013e9e3bb0495ab0b5aff011429a6ac983464d34reedpublic: 17013e9e3bb0495ab0b5aff011429a6ac983464d34reed explicit SkBitmapProvider(const SkBitmap& bm) : fBitmap(bm) {} 18013e9e3bb0495ab0b5aff011429a6ac983464d34reed explicit SkBitmapProvider(const SkImage* img) : fImage(SkSafeRef(img)) {} 19013e9e3bb0495ab0b5aff011429a6ac983464d34reed SkBitmapProvider(const SkBitmapProvider& other) 20013e9e3bb0495ab0b5aff011429a6ac983464d34reed : fBitmap(other.fBitmap) 21013e9e3bb0495ab0b5aff011429a6ac983464d34reed , fImage(SkSafeRef(other.fImage.get())) 22013e9e3bb0495ab0b5aff011429a6ac983464d34reed {} 23013e9e3bb0495ab0b5aff011429a6ac983464d34reed 24013e9e3bb0495ab0b5aff011429a6ac983464d34reed int width() const; 25013e9e3bb0495ab0b5aff011429a6ac983464d34reed int height() const; 26013e9e3bb0495ab0b5aff011429a6ac983464d34reed uint32_t getID() const; 27013e9e3bb0495ab0b5aff011429a6ac983464d34reed 28013e9e3bb0495ab0b5aff011429a6ac983464d34reed bool validForDrawing() const; 29013e9e3bb0495ab0b5aff011429a6ac983464d34reed SkImageInfo info() const; 30013e9e3bb0495ab0b5aff011429a6ac983464d34reed 31013e9e3bb0495ab0b5aff011429a6ac983464d34reed SkBitmapCacheDesc makeCacheDesc(int w, int h) const; 32013e9e3bb0495ab0b5aff011429a6ac983464d34reed SkBitmapCacheDesc makeCacheDesc() const; 33013e9e3bb0495ab0b5aff011429a6ac983464d34reed void notifyAddedToCache() const; 34013e9e3bb0495ab0b5aff011429a6ac983464d34reed 35013e9e3bb0495ab0b5aff011429a6ac983464d34reed // Only call this if you're sure you need the bits, since it maybe expensive 36013e9e3bb0495ab0b5aff011429a6ac983464d34reed // ... cause a decode and cache, or gpu-readback 37013e9e3bb0495ab0b5aff011429a6ac983464d34reed bool asBitmap(SkBitmap*) const; 38013e9e3bb0495ab0b5aff011429a6ac983464d34reed 39013e9e3bb0495ab0b5aff011429a6ac983464d34reedprivate: 40013e9e3bb0495ab0b5aff011429a6ac983464d34reed SkBitmap fBitmap; 41013e9e3bb0495ab0b5aff011429a6ac983464d34reed SkAutoTUnref<const SkImage> fImage; 42013e9e3bb0495ab0b5aff011429a6ac983464d34reed}; 43013e9e3bb0495ab0b5aff011429a6ac983464d34reed 44013e9e3bb0495ab0b5aff011429a6ac983464d34reed#endif 45