OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
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 "SkBlitRow.h" | 8 #include "SkBlitRow.h" |
9 #include "SkColorFilter.h" | 9 #include "SkColorFilter.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 const char* name() const override { return "ModeColorFilterEffect"; } | 159 const char* name() const override { return "ModeColorFilterEffect"; } |
160 | 160 |
161 SkXfermode::Mode mode() const { return fMode; } | 161 SkXfermode::Mode mode() const { return fMode; } |
162 GrColor color() const { return fColor; } | 162 GrColor color() const { return fColor; } |
163 | 163 |
164 class GLProcessor : public GrGLFragmentProcessor { | 164 class GLProcessor : public GrGLFragmentProcessor { |
165 public: | 165 public: |
166 GLProcessor(const GrProcessor&) { | 166 GLProcessor(const GrProcessor&) { |
167 } | 167 } |
168 | 168 |
169 virtual void emitCode(GrGLFPBuilder* builder, | 169 virtual void emitCode(EmitArgs& args) override { |
170 const GrFragmentProcessor& fp, | 170 SkXfermode::Mode mode = args.fFp.cast<ModeColorFilterEffect>().mode(
); |
171 const char* outputColor, | |
172 const char* inputColor, | |
173 const TransformedCoordsArray&, | |
174 const TextureSamplerArray&) override { | |
175 SkXfermode::Mode mode = fp.cast<ModeColorFilterEffect>().mode(); | |
176 | 171 |
177 SkASSERT(SkXfermode::kDst_Mode != mode); | 172 SkASSERT(SkXfermode::kDst_Mode != mode); |
178 const char* colorFilterColorUniName = NULL; | 173 const char* colorFilterColorUniName = NULL; |
179 if (fp.cast<ModeColorFilterEffect>().willUseFilterColor()) { | 174 if (args.fFp.cast<ModeColorFilterEffect>().willUseFilterColor()) { |
180 fFilterColorUni = builder->addUniform(GrGLProgramBuilder::kFragm
ent_Visibility, | 175 fFilterColorUni = args.fBuilder->addUniform( |
| 176 GrGLProgramBuilder::kFragm
ent_Visibility, |
181 kVec4f_GrSLType, kDefault_
GrSLPrecision, | 177 kVec4f_GrSLType, kDefault_
GrSLPrecision, |
182 "FilterColor", | 178 "FilterColor", |
183 &colorFilterColorUniName); | 179 &colorFilterColorUniName); |
184 } | 180 } |
185 | 181 |
186 GrGLSLExpr4 filter = | 182 GrGLSLExpr4 filter = |
187 color_filter_expression(mode, GrGLSLExpr4(colorFilterColorUniNam
e), | 183 color_filter_expression(mode, GrGLSLExpr4(colorFilterColorUniNam
e), |
188 GrGLSLExpr4(inputColor)); | 184 GrGLSLExpr4(args.fInputColor)); |
189 | 185 |
190 builder->getFragmentShaderBuilder()-> | 186 args.fBuilder->getFragmentShaderBuilder()-> |
191 codeAppendf("\t%s = %s;\n", outputColor, filter.c_str()); | 187 codeAppendf("\t%s = %s;\n", args.fOutputColor, filter.c_str(
)); |
192 } | 188 } |
193 | 189 |
194 static void GenKey(const GrProcessor& fp, const GrGLSLCaps&, | 190 static void GenKey(const GrProcessor& fp, const GrGLSLCaps&, |
195 GrProcessorKeyBuilder* b) { | 191 GrProcessorKeyBuilder* b) { |
196 const ModeColorFilterEffect& colorModeFilter = fp.cast<ModeColorFilt
erEffect>(); | 192 const ModeColorFilterEffect& colorModeFilter = fp.cast<ModeColorFilt
erEffect>(); |
197 // The SL code does not depend on filter color at the moment, so no
need to represent it | 193 // The SL code does not depend on filter color at the moment, so no
need to represent it |
198 // in the key. | 194 // in the key. |
199 b->add32(colorModeFilter.mode()); | 195 b->add32(colorModeFilter.mode()); |
200 } | 196 } |
201 | 197 |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 byte_to_scale(SkColorGetG(mul)), | 462 byte_to_scale(SkColorGetG(mul)), |
467 byte_to_scale(SkColorGetB(mul)), | 463 byte_to_scale(SkColorGetB(mul)), |
468 1); | 464 1); |
469 matrix.postTranslate(SkIntToScalar(SkColorGetR(add)), | 465 matrix.postTranslate(SkIntToScalar(SkColorGetR(add)), |
470 SkIntToScalar(SkColorGetG(add)), | 466 SkIntToScalar(SkColorGetG(add)), |
471 SkIntToScalar(SkColorGetB(add)), | 467 SkIntToScalar(SkColorGetB(add)), |
472 0); | 468 0); |
473 return SkColorMatrixFilter::Create(matrix); | 469 return SkColorMatrixFilter::Create(matrix); |
474 } | 470 } |
475 | 471 |
OLD | NEW |