|  | /* | 
|  | * Copyright 2016 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef GrImageTextureMaker_DEFINED | 
|  | #define GrImageTextureMaker_DEFINED | 
|  |  | 
|  | #include "include/core/SkImage.h" | 
|  | #include "src/gpu/GrTextureMaker.h" | 
|  | #include "src/gpu/SkGr.h" | 
|  |  | 
|  | class SkImage_Lazy; | 
|  | class SkImage_GpuYUVA; | 
|  |  | 
|  | /** This class manages the conversion of generator-backed images to GrTextures. If the caching hint | 
|  | is kAllow the image's ID is used for the cache key. */ | 
|  | class GrImageTextureMaker final : public GrTextureMaker { | 
|  | public: | 
|  | GrImageTextureMaker(GrRecordingContext*, const SkImage* client, GrImageTexGenPolicy); | 
|  |  | 
|  | private: | 
|  | GrSurfaceProxyView refOriginalTextureProxyView(GrMipmapped) override; | 
|  |  | 
|  | const SkImage_Lazy*     fImage; | 
|  | GrImageTexGenPolicy     fTexGenPolicy; | 
|  |  | 
|  | using INHERITED = GrTextureMaker; | 
|  | }; | 
|  |  | 
|  | /** This class manages the conversion of generator-backed YUVA images to GrTextures. */ | 
|  | class GrYUVAImageTextureMaker final : public GrTextureMaker { | 
|  | public: | 
|  | GrYUVAImageTextureMaker(GrRecordingContext* context, const SkImage* client); | 
|  |  | 
|  | std::unique_ptr<GrFragmentProcessor> createFragmentProcessor(const SkMatrix& textureMatrix, | 
|  | const SkRect* subset, | 
|  | const SkRect* domain, | 
|  | GrSamplerState) override; | 
|  |  | 
|  | std::unique_ptr<GrFragmentProcessor> createBicubicFragmentProcessor( | 
|  | const SkMatrix& textureMatrix, | 
|  | const SkRect* subset, | 
|  | const SkRect* domain, | 
|  | GrSamplerState::WrapMode wrapX, | 
|  | GrSamplerState::WrapMode wrapY, | 
|  | SkImage::CubicResampler) override; | 
|  |  | 
|  | bool isPlanar() const override { return true; } | 
|  |  | 
|  | private: | 
|  | GrSurfaceProxyView refOriginalTextureProxyView(GrMipmapped) override; | 
|  |  | 
|  | const SkImage_GpuYUVA*  fImage; | 
|  |  | 
|  | using INHERITED = GrTextureMaker; | 
|  | }; | 
|  |  | 
|  | #endif |