Introduce GrColorSpaceXform, for gamut conversion on textures
[platform/upstream/libSkiaSharp.git] / src / gpu / glsl / GrGLSLColorSpaceXformHelper.h
1 /*
2  * Copyright 2016 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 #ifndef GrGLSLColorSpaceXformHelper_DEFINED
9 #define GrGLSLColorSpaceXformHelper_DEFINED
10
11 #include "GrGLSLUniformHandler.h"
12
13 class GrColorSpaceXform;
14
15 /**
16  * Stack helper class to assist with using GrColorSpaceXform within an FP's emitCode function.
17  */
18 class GrGLSLColorSpaceXformHelper : public SkNoncopyable {
19 public:
20     GrGLSLColorSpaceXformHelper(GrGLSLUniformHandler* uniformHandler,
21                                 GrColorSpaceXform* colorSpaceXform,
22                                 GrGLSLProgramDataManager::UniformHandle* handle) {
23         SkASSERT(uniformHandler && handle);
24         if (colorSpaceXform) {
25             *handle = uniformHandler->addUniform(kFragment_GrShaderFlag, kMat44f_GrSLType,
26                                                  kDefault_GrSLPrecision, "ColorXform",
27                                                  &fXformMatrix);
28         } else {
29             fXformMatrix = nullptr;
30         }
31     }
32
33     const char* getXformMatrix() const { return fXformMatrix; }
34
35 private:
36     const char* fXformMatrix;
37 };
38
39 #endif