| 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 |