OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkBitmapAlphaThresholdShader.h" | 8 #include "SkBitmapAlphaThresholdShader.h" |
9 | 9 |
10 class BATShader : public SkShader { | 10 class BATShader : public SkShader { |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 "\t\t\t\tfloat scale = thresh / color.a;\n" | 142 "\t\t\t\tfloat scale = thresh / color.a;\n" |
143 "\t\t\t\tcolor.rgb *= scale;\n" | 143 "\t\t\t\tcolor.rgb *= scale;\n" |
144 "\t\t\t\tcolor.a = thresh;\n" | 144 "\t\t\t\tcolor.a = thresh;\n" |
145 "\t\t\t}\n" | 145 "\t\t\t}\n" |
146 "\t\t} else if (color.a < thresh) {\n" | 146 "\t\t} else if (color.a < thresh) {\n" |
147 "\t\t\tfloat scale = thresh / color.a;\n" | 147 "\t\t\tfloat scale = thresh / color.a;\n" |
148 "\t\t\tcolor.rgb *= scale;\n" | 148 "\t\t\tcolor.rgb *= scale;\n" |
149 "\t\t\tcolor.a = thresh;\n" | 149 "\t\t\tcolor.a = thresh;\n" |
150 "\t\t}\n"); | 150 "\t\t}\n"); |
151 | 151 |
152 builder->fsCodeAppend("color = "); | 152 builder->fsCodeAppendf("color = %s = %s;\n", outputColor, |
153 SkString outStr; | 153 (GrGLSLExpr<4>(inputColor) * GrGLSLExpr<4>("c
olor")).c_str()); |
154 outStr.appendf("\t\t%s = ", outputColor); | |
155 GrGLSLModulatef<4>(&outStr, inputColor, "color"); | |
156 outStr.append(";\n"); | |
157 builder->fsCodeAppend(outStr.c_str()); | |
158 } | 154 } |
159 | 155 |
160 virtual void setData(const GrGLUniformManager& uman, const GrDrawEffect&
e) SK_OVERRIDE { | 156 virtual void setData(const GrGLUniformManager& uman, const GrDrawEffect&
e) SK_OVERRIDE { |
161 const ThresholdEffect& effect = e.castEffect<ThresholdEffect>(); | 157 const ThresholdEffect& effect = e.castEffect<ThresholdEffect>(); |
162 if (fPrevThreshold != effect.fThreshold) { | 158 if (fPrevThreshold != effect.fThreshold) { |
163 uman.set1f(fThresholdUniHandle, effect.fThreshold); | 159 uman.set1f(fThresholdUniHandle, effect.fThreshold); |
164 } | 160 } |
165 } | 161 } |
166 | 162 |
167 private: | 163 private: |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 GrEffectRef* effect = ThresholdEffect::Create(bmpTexture, bmpMatrix, | 268 GrEffectRef* effect = ThresholdEffect::Create(bmpTexture, bmpMatrix, |
273 maskTexture, maskMatrix, | 269 maskTexture, maskMatrix, |
274 fThreshold); | 270 fThreshold); |
275 | 271 |
276 GrUnlockAndUnrefCachedBitmapTexture(bmpTexture); | 272 GrUnlockAndUnrefCachedBitmapTexture(bmpTexture); |
277 | 273 |
278 return effect; | 274 return effect; |
279 } | 275 } |
280 | 276 |
281 #endif | 277 #endif |
OLD | NEW |