Index: src/effects/SkMorphologyImageFilter.cpp |
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp |
index bb8478c907b4865a417146e118bc4509338bbd5d..eef2a7d62323efdf49876a18d8213f53fc551c13 100644 |
--- a/src/effects/SkMorphologyImageFilter.cpp |
+++ b/src/effects/SkMorphologyImageFilter.cpp |
@@ -17,7 +17,7 @@ |
#include "GrTexture.h" |
#include "GrTBackendEffectFactory.h" |
#include "gl/GrGLEffect.h" |
-#include "gl/GrGLShaderBuilder.h" |
+#include "gl/builders/GrGLProgramBuilder.h" |
#include "effects/Gr1DKernelEffect.h" |
#endif |
@@ -329,7 +329,7 @@ class GrGLMorphologyEffect : public GrGLEffect { |
public: |
GrGLMorphologyEffect (const GrBackendEffectFactory&, const GrDrawEffect&); |
- virtual void emitCode(GrGLShaderBuilder*, |
+ virtual void emitCode(GrGLProgramBuilder*, |
const GrDrawEffect&, |
const GrEffectKey&, |
const char* outputColor, |
@@ -359,25 +359,26 @@ GrGLMorphologyEffect::GrGLMorphologyEffect(const GrBackendEffectFactory& factory |
fType = m.type(); |
} |
-void GrGLMorphologyEffect::emitCode(GrGLShaderBuilder* builder, |
+void GrGLMorphologyEffect::emitCode(GrGLProgramBuilder* builder, |
const GrDrawEffect&, |
const GrEffectKey& key, |
const char* outputColor, |
const char* inputColor, |
const TransformedCoordsArray& coords, |
const TextureSamplerArray& samplers) { |
- SkString coords2D = builder->ensureFSCoords2D(coords, 0); |
- fImageIncrementUni = builder->addUniform(GrGLShaderBuilder::kFragment_Visibility, |
+ fImageIncrementUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
kVec2f_GrSLType, "ImageIncrement"); |
+ GrGLFragmentShaderBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
+ SkString coords2D = fsBuilder->ensureFSCoords2D(coords, 0); |
const char* func; |
switch (fType) { |
case GrMorphologyEffect::kErode_MorphologyType: |
- builder->fsCodeAppendf("\t\t%s = vec4(1, 1, 1, 1);\n", outputColor); |
+ fsBuilder->codeAppendf("\t\t%s = vec4(1, 1, 1, 1);\n", outputColor); |
func = "min"; |
break; |
case GrMorphologyEffect::kDilate_MorphologyType: |
- builder->fsCodeAppendf("\t\t%s = vec4(0, 0, 0, 0);\n", outputColor); |
+ fsBuilder->codeAppendf("\t\t%s = vec4(0, 0, 0, 0);\n", outputColor); |
func = "max"; |
break; |
default: |
@@ -387,16 +388,16 @@ void GrGLMorphologyEffect::emitCode(GrGLShaderBuilder* builder, |
} |
const char* imgInc = builder->getUniformCStr(fImageIncrementUni); |
- builder->fsCodeAppendf("\t\tvec2 coord = %s - %d.0 * %s;\n", coords2D.c_str(), fRadius, imgInc); |
- builder->fsCodeAppendf("\t\tfor (int i = 0; i < %d; i++) {\n", this->width()); |
- builder->fsCodeAppendf("\t\t\t%s = %s(%s, ", outputColor, func, outputColor); |
- builder->fsAppendTextureLookup(samplers[0], "coord"); |
- builder->fsCodeAppend(");\n"); |
- builder->fsCodeAppendf("\t\t\tcoord += %s;\n", imgInc); |
- builder->fsCodeAppend("\t\t}\n"); |
+ fsBuilder->codeAppendf("\t\tvec2 coord = %s - %d.0 * %s;\n", coords2D.c_str(), fRadius, imgInc); |
+ fsBuilder->codeAppendf("\t\tfor (int i = 0; i < %d; i++) {\n", this->width()); |
+ fsBuilder->codeAppendf("\t\t\t%s = %s(%s, ", outputColor, func, outputColor); |
+ fsBuilder->appendTextureLookup(samplers[0], "coord"); |
+ fsBuilder->codeAppend(");\n"); |
+ fsBuilder->codeAppendf("\t\t\tcoord += %s;\n", imgInc); |
+ fsBuilder->codeAppend("\t\t}\n"); |
SkString modulate; |
GrGLSLMulVarBy4f(&modulate, 2, outputColor, inputColor); |
- builder->fsCodeAppend(modulate.c_str()); |
+ fsBuilder->codeAppend(modulate.c_str()); |
} |
void GrGLMorphologyEffect::GenKey(const GrDrawEffect& drawEffect, |