| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "SkRadialGradient.h" | 9 #include "SkRadialGradient.h" |
| 10 #include "SkRadialGradient_Table.h" | 10 #include "SkRadialGradient_Table.h" |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 *dstC++ = cache[fi >> SkGradientShaderBase::kCache32Shift]; | 454 *dstC++ = cache[fi >> SkGradientShaderBase::kCache32Shift]; |
| 455 dstX += SK_Scalar1; | 455 dstX += SK_Scalar1; |
| 456 } while (--count != 0); | 456 } while (--count != 0); |
| 457 } | 457 } |
| 458 } | 458 } |
| 459 | 459 |
| 460 ///////////////////////////////////////////////////////////////////// | 460 ///////////////////////////////////////////////////////////////////// |
| 461 | 461 |
| 462 #if SK_SUPPORT_GPU | 462 #if SK_SUPPORT_GPU |
| 463 | 463 |
| 464 #include "GrTBackendProcessorFactory.h" | 464 #include "SkGr.h" |
| 465 #include "gl/builders/GrGLProgramBuilder.h" | 465 #include "gl/builders/GrGLProgramBuilder.h" |
| 466 #include "SkGr.h" | |
| 467 | 466 |
| 468 class GrGLRadialGradient : public GrGLGradientEffect { | 467 class GrGLRadialGradient : public GrGLGradientEffect { |
| 469 public: | 468 public: |
| 470 | 469 |
| 471 GrGLRadialGradient(const GrBackendProcessorFactory& factory, | 470 GrGLRadialGradient(const GrProcessor&) {} |
| 472 const GrProcessor&) : INHERITED (factory) { } | |
| 473 virtual ~GrGLRadialGradient() { } | 471 virtual ~GrGLRadialGradient() { } |
| 474 | 472 |
| 475 virtual void emitCode(GrGLFPBuilder*, | 473 virtual void emitCode(GrGLFPBuilder*, |
| 476 const GrFragmentProcessor&, | 474 const GrFragmentProcessor&, |
| 477 const char* outputColor, | 475 const char* outputColor, |
| 478 const char* inputColor, | 476 const char* inputColor, |
| 479 const TransformedCoordsArray&, | 477 const TransformedCoordsArray&, |
| 480 const TextureSamplerArray&) SK_OVERRIDE; | 478 const TextureSamplerArray&) SK_OVERRIDE; |
| 481 | 479 |
| 482 static void GenKey(const GrProcessor& processor, const GrGLCaps&, GrProcesso
rKeyBuilder* b) { | 480 static void GenKey(const GrProcessor& processor, const GrGLCaps&, GrProcesso
rKeyBuilder* b) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 495 public: | 493 public: |
| 496 static GrFragmentProcessor* Create(GrContext* ctx, | 494 static GrFragmentProcessor* Create(GrContext* ctx, |
| 497 const SkRadialGradient& shader, | 495 const SkRadialGradient& shader, |
| 498 const SkMatrix& matrix, | 496 const SkMatrix& matrix, |
| 499 SkShader::TileMode tm) { | 497 SkShader::TileMode tm) { |
| 500 return SkNEW_ARGS(GrRadialGradient, (ctx, shader, matrix, tm)); | 498 return SkNEW_ARGS(GrRadialGradient, (ctx, shader, matrix, tm)); |
| 501 } | 499 } |
| 502 | 500 |
| 503 virtual ~GrRadialGradient() { } | 501 virtual ~GrRadialGradient() { } |
| 504 | 502 |
| 505 static const char* Name() { return "Radial Gradient"; } | 503 virtual const char* name() const SK_OVERRIDE { return "Radial Gradient"; } |
| 506 virtual const GrBackendFragmentProcessorFactory& getFactory() const SK_OVERR
IDE { | 504 |
| 507 return GrTBackendFragmentProcessorFactory<GrRadialGradient>::getInstance
(); | 505 virtual void getGLProcessorKey(const GrGLCaps& caps, |
| 506 GrProcessorKeyBuilder* b) const SK_OVERRIDE { |
| 507 GrGLRadialGradient::GenKey(*this, caps, b); |
| 508 } | 508 } |
| 509 | 509 |
| 510 typedef GrGLRadialGradient GLProcessor; | 510 virtual GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE { |
| 511 return SkNEW_ARGS(GrGLRadialGradient, (*this)); |
| 512 } |
| 511 | 513 |
| 512 private: | 514 private: |
| 513 GrRadialGradient(GrContext* ctx, | 515 GrRadialGradient(GrContext* ctx, |
| 514 const SkRadialGradient& shader, | 516 const SkRadialGradient& shader, |
| 515 const SkMatrix& matrix, | 517 const SkMatrix& matrix, |
| 516 SkShader::TileMode tm) | 518 SkShader::TileMode tm) |
| 517 : INHERITED(ctx, shader, matrix, tm) { | 519 : INHERITED(ctx, shader, matrix, tm) { |
| 520 this->initClassID<GrRadialGradient>(); |
| 518 } | 521 } |
| 519 | 522 |
| 520 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; | 523 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
| 521 | 524 |
| 522 typedef GrGradientEffect INHERITED; | 525 typedef GrGradientEffect INHERITED; |
| 523 }; | 526 }; |
| 524 | 527 |
| 525 ///////////////////////////////////////////////////////////////////// | 528 ///////////////////////////////////////////////////////////////////// |
| 526 | 529 |
| 527 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrRadialGradient); | 530 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrRadialGradient); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 549 } | 552 } |
| 550 | 553 |
| 551 ///////////////////////////////////////////////////////////////////// | 554 ///////////////////////////////////////////////////////////////////// |
| 552 | 555 |
| 553 void GrGLRadialGradient::emitCode(GrGLFPBuilder* builder, | 556 void GrGLRadialGradient::emitCode(GrGLFPBuilder* builder, |
| 554 const GrFragmentProcessor& fp, | 557 const GrFragmentProcessor& fp, |
| 555 const char* outputColor, | 558 const char* outputColor, |
| 556 const char* inputColor, | 559 const char* inputColor, |
| 557 const TransformedCoordsArray& coords, | 560 const TransformedCoordsArray& coords, |
| 558 const TextureSamplerArray& samplers) { | 561 const TextureSamplerArray& samplers) { |
| 559 const GrGradientEffect& ge = fp.cast<GrGradientEffect>(); | 562 const GrRadialGradient& ge = fp.cast<GrRadialGradient>(); |
| 560 this->emitUniforms(builder, ge); | 563 this->emitUniforms(builder, ge); |
| 561 SkString t("length("); | 564 SkString t("length("); |
| 562 t.append(builder->getFragmentShaderBuilder()->ensureFSCoords2D(coords, 0)); | 565 t.append(builder->getFragmentShaderBuilder()->ensureFSCoords2D(coords, 0)); |
| 563 t.append(")"); | 566 t.append(")"); |
| 564 this->emitColor(builder, ge, t.c_str(), outputColor, inputColor, samplers); | 567 this->emitColor(builder, ge, t.c_str(), outputColor, inputColor, samplers); |
| 565 } | 568 } |
| 566 | 569 |
| 567 ///////////////////////////////////////////////////////////////////// | 570 ///////////////////////////////////////////////////////////////////// |
| 568 | 571 |
| 569 bool SkRadialGradient::asFragmentProcessor(GrContext* context, const SkPaint& pa
int, | 572 bool SkRadialGradient::asFragmentProcessor(GrContext* context, const SkPaint& pa
int, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 str->appendScalar(fCenter.fY); | 613 str->appendScalar(fCenter.fY); |
| 611 str->append(") radius: "); | 614 str->append(") radius: "); |
| 612 str->appendScalar(fRadius); | 615 str->appendScalar(fRadius); |
| 613 str->append(" "); | 616 str->append(" "); |
| 614 | 617 |
| 615 this->INHERITED::toString(str); | 618 this->INHERITED::toString(str); |
| 616 | 619 |
| 617 str->append(")"); | 620 str->append(")"); |
| 618 } | 621 } |
| 619 #endif | 622 #endif |
| OLD | NEW |