blob: 7bf93ecf42ae362362b74139d84b515edb54d177 [file] [log] [blame]
/*
* 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 GrTextureAdjuster_DEFINED
#define GrTextureAdjuster_DEFINED
#include "src/core/SkTLazy.h"
#include "src/gpu/GrTextureProducer.h"
#include "src/gpu/GrTextureProxy.h"
class GrRecordingContext;
/**
* GrTextureProducer subclass that can be used when the user already has a texture that represents
* image contents.
*/
class GrTextureAdjuster final : public GrTextureProducer {
public:
GrTextureAdjuster(GrRecordingContext*, GrSurfaceProxyView, const GrColorInfo&,
uint32_t uniqueID);
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;
private:
GrSurfaceProxyView onView(GrMipmapped) override;
GrSurfaceProxyView makeMippedCopy();
GrSurfaceProxyView fOriginal;
uint32_t fUniqueID;
using INHERITED = GrTextureProducer;
};
#endif