diff options
Diffstat (limited to 'src/effects/SkTableColorFilter.cpp')
-rw-r--r-- | src/effects/SkTableColorFilter.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/src/effects/SkTableColorFilter.cpp b/src/effects/SkTableColorFilter.cpp index cf7ddc5295..16f2876af0 100644 --- a/src/effects/SkTableColorFilter.cpp +++ b/src/effects/SkTableColorFilter.cpp @@ -289,39 +289,38 @@ void GLColorTableEffect::emitCode(GrGLShaderBuilder* builder, static const float kColorScaleFactor = 255.0f / 256.0f; static const float kColorOffsetFactor = 1.0f / 512.0f; - SkString* code = &builder->fFSCode; if (NULL == inputColor) { // the input color is solid white (all ones). static const float kMaxValue = kColorScaleFactor + kColorOffsetFactor; - code->appendf("\t\tvec4 coord = vec4(%f, %f, %f, %f);\n", - kMaxValue, kMaxValue, kMaxValue, kMaxValue); + builder->fsCodeAppendf("\t\tvec4 coord = vec4(%f, %f, %f, %f);\n", + kMaxValue, kMaxValue, kMaxValue, kMaxValue); } else { - code->appendf("\t\tfloat nonZeroAlpha = max(%s.a, .0001);\n", inputColor); - code->appendf("\t\tvec4 coord = vec4(%s.rgb / nonZeroAlpha, nonZeroAlpha);\n", inputColor); - code->appendf("\t\tcoord = coord * %f + vec4(%f, %f, %f, %f);\n", - kColorScaleFactor, - kColorOffsetFactor, kColorOffsetFactor, - kColorOffsetFactor, kColorOffsetFactor); + builder->fsCodeAppendf("\t\tfloat nonZeroAlpha = max(%s.a, .0001);\n", inputColor); + builder->fsCodeAppendf("\t\tvec4 coord = vec4(%s.rgb / nonZeroAlpha, nonZeroAlpha);\n", inputColor); + builder->fsCodeAppendf("\t\tcoord = coord * %f + vec4(%f, %f, %f, %f);\n", + kColorScaleFactor, + kColorOffsetFactor, kColorOffsetFactor, + kColorOffsetFactor, kColorOffsetFactor); } - code->appendf("\t\t%s.a = ", outputColor); - builder->appendTextureLookup(code, samplers[0], "vec2(coord.a, 0.125)"); - code->append(";\n"); + builder->fsCodeAppendf("\t\t%s.a = ", outputColor); + builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, samplers[0], "vec2(coord.a, 0.125)"); + builder->fsCodeAppend(";\n"); - code->appendf("\t\t%s.r = ", outputColor); - builder->appendTextureLookup(code, samplers[0], "vec2(coord.r, 0.375)"); - code->append(";\n"); + builder->fsCodeAppendf("\t\t%s.r = ", outputColor); + builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, samplers[0], "vec2(coord.r, 0.375)"); + builder->fsCodeAppend(";\n"); - code->appendf("\t\t%s.g = ", outputColor); - builder->appendTextureLookup(code, samplers[0], "vec2(coord.g, 0.625)"); - code->append(";\n"); + builder->fsCodeAppendf("\t\t%s.g = ", outputColor); + builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, samplers[0], "vec2(coord.g, 0.625)"); + builder->fsCodeAppend(";\n"); - code->appendf("\t\t%s.b = ", outputColor); - builder->appendTextureLookup(code, samplers[0], "vec2(coord.b, 0.875)"); - code->append(";\n"); + builder->fsCodeAppendf("\t\t%s.b = ", outputColor); + builder->appendTextureLookup(GrGLShaderBuilder::kFragment_ShaderType, samplers[0], "vec2(coord.b, 0.875)"); + builder->fsCodeAppend(";\n"); - code->appendf("\t\t%s.rgb *= %s.a;\n", outputColor, outputColor); + builder->fsCodeAppendf("\t\t%s.rgb *= %s.a;\n", outputColor, outputColor); } GrGLEffect::EffectKey GLColorTableEffect::GenKey(const GrEffectStage&, const GrGLCaps&) { |