1 /*
2 * Copyright 2012 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 #include "effects/GrSingleTextureEffect.h"
9
10 #include "GrTextureProxy.h"
11
GrSingleTextureEffect(GrTexture * texture,sk_sp<GrColorSpaceXform> colorSpaceXform,const SkMatrix & m,OptimizationFlags optFlags)12 GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
13 sk_sp<GrColorSpaceXform> colorSpaceXform,
14 const SkMatrix& m, OptimizationFlags optFlags)
15 : INHERITED(optFlags)
16 , fCoordTransform(m, texture, GrSamplerParams::kNone_FilterMode)
17 , fTextureSampler(texture)
18 , fColorSpaceXform(std::move(colorSpaceXform)) {
19 this->addCoordTransform(&fCoordTransform);
20 this->addTextureSampler(&fTextureSampler);
21 }
22
GrSingleTextureEffect(GrTexture * texture,sk_sp<GrColorSpaceXform> colorSpaceXform,const SkMatrix & m,GrSamplerParams::FilterMode filterMode,OptimizationFlags optFlags)23 GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
24 sk_sp<GrColorSpaceXform> colorSpaceXform,
25 const SkMatrix& m,
26 GrSamplerParams::FilterMode filterMode,
27 OptimizationFlags optFlags)
28 : INHERITED(optFlags)
29 , fCoordTransform(m, texture, filterMode)
30 , fTextureSampler(texture, filterMode)
31 , fColorSpaceXform(std::move(colorSpaceXform)) {
32 this->addCoordTransform(&fCoordTransform);
33 this->addTextureSampler(&fTextureSampler);
34 }
35
GrSingleTextureEffect(GrTexture * texture,sk_sp<GrColorSpaceXform> colorSpaceXform,const SkMatrix & m,const GrSamplerParams & params,OptimizationFlags optFlags)36 GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
37 sk_sp<GrColorSpaceXform> colorSpaceXform,
38 const SkMatrix& m, const GrSamplerParams& params,
39 OptimizationFlags optFlags)
40 : INHERITED(optFlags)
41 , fCoordTransform(m, texture, params.filterMode())
42 , fTextureSampler(texture, params)
43 , fColorSpaceXform(std::move(colorSpaceXform)) {
44 this->addCoordTransform(&fCoordTransform);
45 this->addTextureSampler(&fTextureSampler);
46 }
47
GrSingleTextureEffect(GrResourceProvider * resourceProvider,OptimizationFlags optFlags,sk_sp<GrTextureProxy> proxy,sk_sp<GrColorSpaceXform> colorSpaceXform,const SkMatrix & m)48 GrSingleTextureEffect::GrSingleTextureEffect(GrResourceProvider* resourceProvider,
49 OptimizationFlags optFlags,
50 sk_sp<GrTextureProxy> proxy,
51 sk_sp<GrColorSpaceXform> colorSpaceXform,
52 const SkMatrix& m)
53 : INHERITED(optFlags)
54 , fCoordTransform(resourceProvider, m, proxy.get(), GrSamplerParams::kNone_FilterMode)
55 , fTextureSampler(resourceProvider, std::move(proxy))
56 , fColorSpaceXform(std::move(colorSpaceXform)) {
57 this->addCoordTransform(&fCoordTransform);
58 this->addTextureSampler(&fTextureSampler);
59 }
60
GrSingleTextureEffect(GrResourceProvider * resourceProvider,OptimizationFlags optFlags,sk_sp<GrTextureProxy> proxy,sk_sp<GrColorSpaceXform> colorSpaceXform,const SkMatrix & m,GrSamplerParams::FilterMode filterMode)61 GrSingleTextureEffect::GrSingleTextureEffect(GrResourceProvider* resourceProvider,
62 OptimizationFlags optFlags,
63 sk_sp<GrTextureProxy> proxy,
64 sk_sp<GrColorSpaceXform> colorSpaceXform,
65 const SkMatrix& m,
66 GrSamplerParams::FilterMode filterMode)
67 : INHERITED(optFlags)
68 , fCoordTransform(resourceProvider, m, proxy.get(), filterMode)
69 , fTextureSampler(resourceProvider, std::move(proxy), filterMode)
70 , fColorSpaceXform(std::move(colorSpaceXform)) {
71 this->addCoordTransform(&fCoordTransform);
72 this->addTextureSampler(&fTextureSampler);
73 }
74
GrSingleTextureEffect(GrResourceProvider * resourceProvider,OptimizationFlags optFlags,sk_sp<GrTextureProxy> proxy,sk_sp<GrColorSpaceXform> colorSpaceXform,const SkMatrix & m,const GrSamplerParams & params)75 GrSingleTextureEffect::GrSingleTextureEffect(GrResourceProvider* resourceProvider,
76 OptimizationFlags optFlags,
77 sk_sp<GrTextureProxy> proxy,
78 sk_sp<GrColorSpaceXform> colorSpaceXform,
79 const SkMatrix& m, const GrSamplerParams& params)
80 : INHERITED(optFlags)
81 , fCoordTransform(resourceProvider, m, proxy.get(), params.filterMode())
82 , fTextureSampler(resourceProvider, std::move(proxy), params)
83 , fColorSpaceXform(std::move(colorSpaceXform)) {
84 this->addCoordTransform(&fCoordTransform);
85 this->addTextureSampler(&fTextureSampler);
86 }
87