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 |