1 /* 2 * Copyright 2016 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 GrBitmapTextureMaker_DEFINED 9 #define GrBitmapTextureMaker_DEFINED 10 11 #include "GrTextureMaker.h" 12 13 /** This class manages the conversion of SW-backed bitmaps to GrTextures. If the input bitmap is 14 non-volatile the texture is cached using a key created from the pixels' image id and the 15 subset of the pixelref specified by the bitmap. */ 16 class GrBitmapTextureMaker : public GrTextureMaker { 17 public: 18 GrBitmapTextureMaker(GrContext* context, const SkBitmap& bitmap); 19 20 protected: 21 sk_sp<GrTextureProxy> refOriginalTextureProxy(bool willBeMipped, 22 SkColorSpace* dstColorSpace, 23 AllowedTexGenType onlyIfFast) override; 24 25 void makeCopyKey(const CopyParams& copyParams, GrUniqueKey* copyKey, 26 SkColorSpace* dstColorSpace) override; 27 28 void didCacheCopy(const GrUniqueKey& copyKey) override; 29 30 SkAlphaType alphaType() const override; 31 sk_sp<SkColorSpace> getColorSpace(SkColorSpace* dstColorSpace) override; 32 33 private: 34 const SkBitmap fBitmap; 35 GrUniqueKey fOriginalKey; 36 37 typedef GrTextureMaker INHERITED; 38 }; 39 40 #endif 41