diff options
author | 2015-07-22 15:08:53 -0700 | |
---|---|---|
committer | 2015-07-22 15:08:53 -0700 | |
commit | 7c157a988845fb00f9024d6db6dda142c3458033 (patch) | |
tree | 3a3523e91c6ec7501afd200d5402ba41347a73f8 /src/effects/SkTableColorFilter.cpp | |
parent | 243406e5800ad4ff296da8d4cb30d0a33d6f7b2a (diff) |
Added GrGLFragmentProcessor::EmitArgs struct for use with emitCode()
BUG=skia:
Review URL: https://codereview.chromium.org/1251173002
Diffstat (limited to 'src/effects/SkTableColorFilter.cpp')
-rw-r--r-- | src/effects/SkTableColorFilter.cpp | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/src/effects/SkTableColorFilter.cpp b/src/effects/SkTableColorFilter.cpp index 11fdb89061..8314f30c43 100644 --- a/src/effects/SkTableColorFilter.cpp +++ b/src/effects/SkTableColorFilter.cpp @@ -379,12 +379,7 @@ class GLColorTableEffect : public GrGLFragmentProcessor { public: GLColorTableEffect(const GrProcessor&); - virtual void emitCode(GrGLFPBuilder*, - const GrFragmentProcessor&, - const char* outputColor, - const char* inputColor, - const TransformedCoordsArray&, - const TextureSamplerArray&) override; + virtual void emitCode(EmitArgs&) override; void setData(const GrGLProgramDataManager&, const GrProcessor&) override; @@ -417,28 +412,24 @@ void GLColorTableEffect::setData(const GrGLProgramDataManager& pdm, const GrProc pdm.set4fv(fRGBAYValuesUni, 1, rgbaYValues); } -void GLColorTableEffect::emitCode(GrGLFPBuilder* builder, - const GrFragmentProcessor&, - const char* outputColor, - const char* inputColor, - const TransformedCoordsArray&, - const TextureSamplerArray& samplers) { +void GLColorTableEffect::emitCode(EmitArgs& args) { const char* yoffsets; - fRGBAYValuesUni = builder->addUniform(GrGLFPBuilder::kFragment_Visibility, + fRGBAYValuesUni = args.fBuilder->addUniform(GrGLFPBuilder::kFragment_Visibility, kVec4f_GrSLType, kDefault_GrSLPrecision, "yoffsets", &yoffsets); static const float kColorScaleFactor = 255.0f / 256.0f; static const float kColorOffsetFactor = 1.0f / 512.0f; - GrGLFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); - if (NULL == inputColor) { + GrGLFragmentBuilder* fsBuilder = args.fBuilder->getFragmentShaderBuilder(); + if (NULL == args.fInputColor) { // the input color is solid white (all ones). static const float kMaxValue = kColorScaleFactor + kColorOffsetFactor; fsBuilder->codeAppendf("\t\tvec4 coord = vec4(%f, %f, %f, %f);\n", kMaxValue, kMaxValue, kMaxValue, kMaxValue); } else { - fsBuilder->codeAppendf("\t\tfloat nonZeroAlpha = max(%s.a, .0001);\n", inputColor); - fsBuilder->codeAppendf("\t\tvec4 coord = vec4(%s.rgb / nonZeroAlpha, nonZeroAlpha);\n", inputColor); + fsBuilder->codeAppendf("\t\tfloat nonZeroAlpha = max(%s.a, .0001);\n", args.fInputColor); + fsBuilder->codeAppendf("\t\tvec4 coord = vec4(%s.rgb / nonZeroAlpha, nonZeroAlpha);\n", + args.fInputColor); fsBuilder->codeAppendf("\t\tcoord = coord * %f + vec4(%f, %f, %f, %f);\n", kColorScaleFactor, kColorOffsetFactor, kColorOffsetFactor, @@ -447,27 +438,27 @@ void GLColorTableEffect::emitCode(GrGLFPBuilder* builder, SkString coord; - fsBuilder->codeAppendf("\t\t%s.a = ", outputColor); + fsBuilder->codeAppendf("\t\t%s.a = ", args.fOutputColor); coord.printf("vec2(coord.a, %s.a)", yoffsets); - fsBuilder->appendTextureLookup(samplers[0], coord.c_str()); + fsBuilder->appendTextureLookup(args.fSamplers[0], coord.c_str()); fsBuilder->codeAppend(";\n"); - fsBuilder->codeAppendf("\t\t%s.r = ", outputColor); + fsBuilder->codeAppendf("\t\t%s.r = ", args.fOutputColor); coord.printf("vec2(coord.r, %s.r)", yoffsets); - fsBuilder->appendTextureLookup(samplers[0], coord.c_str()); + fsBuilder->appendTextureLookup(args.fSamplers[0], coord.c_str()); fsBuilder->codeAppend(";\n"); - fsBuilder->codeAppendf("\t\t%s.g = ", outputColor); + fsBuilder->codeAppendf("\t\t%s.g = ", args.fOutputColor); coord.printf("vec2(coord.g, %s.g)", yoffsets); - fsBuilder->appendTextureLookup(samplers[0], coord.c_str()); + fsBuilder->appendTextureLookup(args.fSamplers[0], coord.c_str()); fsBuilder->codeAppend(";\n"); - fsBuilder->codeAppendf("\t\t%s.b = ", outputColor); + fsBuilder->codeAppendf("\t\t%s.b = ", args.fOutputColor); coord.printf("vec2(coord.b, %s.b)", yoffsets); - fsBuilder->appendTextureLookup(samplers[0], coord.c_str()); + fsBuilder->appendTextureLookup(args.fSamplers[0], coord.c_str()); fsBuilder->codeAppend(";\n"); - fsBuilder->codeAppendf("\t\t%s.rgb *= %s.a;\n", outputColor, outputColor); + fsBuilder->codeAppendf("\t\t%s.rgb *= %s.a;\n", args.fOutputColor, args.fOutputColor); } /////////////////////////////////////////////////////////////////////////////// |