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#ifndef SkPictureImageGenerator_DEFINED 8#define SkPictureImageGenerator_DEFINED 9 10#include "SkImageGenerator.h" 11#include "SkTLazy.h" 12 13class SkPictureImageGenerator : public SkImageGenerator { 14public: 15 static std::unique_ptr<SkImageGenerator> Make(const SkISize&, sk_sp<SkPicture>, const SkMatrix*, 16 const SkPaint*, SkImage::BitDepth, 17 sk_sp<SkColorSpace>); 18 19protected: 20 bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options& opts) 21 override; 22 23#if SK_SUPPORT_GPU 24 TexGenType onCanGenerateTexture() const override { return TexGenType::kExpensive; } 25 sk_sp<GrTextureProxy> onGenerateTexture(GrContext*, const SkImageInfo&, const SkIPoint&, 26 SkTransferFunctionBehavior, 27 bool willNeedMipMaps) override; 28#endif 29 30private: 31 SkPictureImageGenerator(const SkImageInfo& info, sk_sp<SkPicture>, const SkMatrix*, 32 const SkPaint*); 33 34 sk_sp<SkPicture> fPicture; 35 SkMatrix fMatrix; 36 SkTLazy<SkPaint> fPaint; 37 38 typedef SkImageGenerator INHERITED; 39}; 40#endif // SkPictureImageGenerator_DEFINED 41