Introduce GrColorSpaceXform, for gamut conversion on textures
[platform/upstream/libSkiaSharp.git] / src / gpu / effects / GrSingleTextureEffect.cpp
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 GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
11                                              sk_sp<GrColorSpaceXform> colorSpaceXform,
12                                              const SkMatrix& m,
13                                              GrCoordSet coordSet)
14     : fCoordTransform(coordSet, m, texture, GrTextureParams::kNone_FilterMode)
15     , fTextureAccess(texture)
16     , fColorSpaceXform(std::move(colorSpaceXform)) {
17     this->addCoordTransform(&fCoordTransform);
18     this->addTextureAccess(&fTextureAccess);
19 }
20
21 GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
22                                              sk_sp<GrColorSpaceXform> colorSpaceXform,
23                                              const SkMatrix& m,
24                                              GrTextureParams::FilterMode filterMode,
25                                              GrCoordSet coordSet)
26     : fCoordTransform(coordSet, m, texture, filterMode)
27     , fTextureAccess(texture, filterMode)
28     , fColorSpaceXform(std::move(colorSpaceXform)) {
29     this->addCoordTransform(&fCoordTransform);
30     this->addTextureAccess(&fTextureAccess);
31 }
32
33 GrSingleTextureEffect::GrSingleTextureEffect(GrTexture* texture,
34                                              sk_sp<GrColorSpaceXform> colorSpaceXform,
35                                              const SkMatrix& m,
36                                              const GrTextureParams& params,
37                                              GrCoordSet coordSet)
38     : fCoordTransform(coordSet, m, texture, params.filterMode())
39     , fTextureAccess(texture, params)
40     , fColorSpaceXform(std::move(colorSpaceXform)) {
41     this->addCoordTransform(&fCoordTransform);
42     this->addTextureAccess(&fTextureAccess);
43 }
44
45 GrSingleTextureEffect::~GrSingleTextureEffect() {
46 }