Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp

Issue 1388113002: Bye bye processor data manager (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: remove files Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/effects/gradients/SkTwoPointConicalGradient_gpu.h ('k') | src/gpu/GrBlurUtils.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 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 "SkTwoPointConicalGradient_gpu.h" 9 #include "SkTwoPointConicalGradient_gpu.h"
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 rot.setSinCos(-SkScalarMul(invDiffLen, diff.fY), 52 rot.setSinCos(-SkScalarMul(invDiffLen, diff.fY),
53 SkScalarMul(invDiffLen, diff.fX)); 53 SkScalarMul(invDiffLen, diff.fX));
54 invLMatrix->postConcat(rot); 54 invLMatrix->postConcat(rot);
55 } 55 }
56 } 56 }
57 57
58 class Edge2PtConicalEffect : public GrGradientEffect { 58 class Edge2PtConicalEffect : public GrGradientEffect {
59 public: 59 public:
60 60
61 static GrFragmentProcessor* Create(GrContext* ctx, 61 static GrFragmentProcessor* Create(GrContext* ctx,
62 GrProcessorDataManager* procDataManager,
63 const SkTwoPointConicalGradient& shader, 62 const SkTwoPointConicalGradient& shader,
64 const SkMatrix& matrix, 63 const SkMatrix& matrix,
65 SkShader::TileMode tm) { 64 SkShader::TileMode tm) {
66 return new Edge2PtConicalEffect(ctx, procDataManager, shader, matrix, tm ); 65 return new Edge2PtConicalEffect(ctx, shader, matrix, tm);
67 } 66 }
68 67
69 virtual ~Edge2PtConicalEffect() {} 68 virtual ~Edge2PtConicalEffect() {}
70 69
71 const char* name() const override { 70 const char* name() const override {
72 return "Two-Point Conical Gradient Edge Touching"; 71 return "Two-Point Conical Gradient Edge Touching";
73 } 72 }
74 73
75 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation. 74 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation.
76 SkScalar center() const { return fCenterX1; } 75 SkScalar center() const { return fCenterX1; }
77 SkScalar diffRadius() const { return fDiffRadius; } 76 SkScalar diffRadius() const { return fDiffRadius; }
78 SkScalar radius() const { return fRadius0; } 77 SkScalar radius() const { return fRadius0; }
79 78
80 private: 79 private:
81 GrGLFragmentProcessor* onCreateGLInstance() const override; 80 GrGLFragmentProcessor* onCreateGLInstance() const override;
82 81
83 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride; 82 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
84 83
85 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 84 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
86 const Edge2PtConicalEffect& s = sBase.cast<Edge2PtConicalEffect>(); 85 const Edge2PtConicalEffect& s = sBase.cast<Edge2PtConicalEffect>();
87 return (INHERITED::onIsEqual(sBase) && 86 return (INHERITED::onIsEqual(sBase) &&
88 this->fCenterX1 == s.fCenterX1 && 87 this->fCenterX1 == s.fCenterX1 &&
89 this->fRadius0 == s.fRadius0 && 88 this->fRadius0 == s.fRadius0 &&
90 this->fDiffRadius == s.fDiffRadius); 89 this->fDiffRadius == s.fDiffRadius);
91 } 90 }
92 91
93 Edge2PtConicalEffect(GrContext* ctx, 92 Edge2PtConicalEffect(GrContext* ctx,
94 GrProcessorDataManager* procDataManager,
95 const SkTwoPointConicalGradient& shader, 93 const SkTwoPointConicalGradient& shader,
96 const SkMatrix& matrix, 94 const SkMatrix& matrix,
97 SkShader::TileMode tm) 95 SkShader::TileMode tm)
98 : INHERITED(ctx, procDataManager, shader, matrix, tm), 96 : INHERITED(ctx, shader, matrix, tm),
99 fCenterX1(shader.getCenterX1()), 97 fCenterX1(shader.getCenterX1()),
100 fRadius0(shader.getStartRadius()), 98 fRadius0(shader.getStartRadius()),
101 fDiffRadius(shader.getDiffRadius()){ 99 fDiffRadius(shader.getDiffRadius()){
102 this->initClassID<Edge2PtConicalEffect>(); 100 this->initClassID<Edge2PtConicalEffect>();
103 // We should only be calling this shader if we are degenerate case with touching circles 101 // We should only be calling this shader if we are degenerate case with touching circles
104 // When deciding if we are in edge case, we scaled by the end radius for cases when the 102 // When deciding if we are in edge case, we scaled by the end radius for cases when the
105 // start radius was close to zero, otherwise we scaled by the start radi us. In addition 103 // start radius was close to zero, otherwise we scaled by the start radi us. In addition
106 // Our test for the edge case in set_matrix_circle_conical has a higher tolerance so we 104 // Our test for the edge case in set_matrix_circle_conical has a higher tolerance so we
107 // need the sqrt value below 105 // need the sqrt value below
108 SkASSERT(SkScalarAbs(SkScalarAbs(fDiffRadius) - fCenterX1) < 106 SkASSERT(SkScalarAbs(SkScalarAbs(fDiffRadius) - fCenterX1) <
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 SkColor colors[kMaxRandomGradientColors]; 201 SkColor colors[kMaxRandomGradientColors];
204 SkScalar stopsArray[kMaxRandomGradientColors]; 202 SkScalar stopsArray[kMaxRandomGradientColors];
205 SkScalar* stops = stopsArray; 203 SkScalar* stops = stopsArray;
206 SkShader::TileMode tm; 204 SkShader::TileMode tm;
207 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); 205 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
208 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 206 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
209 center 2, radius2, 207 center 2, radius2,
210 colors , stops, colorCount, 208 colors , stops, colorCount,
211 tm)); 209 tm));
212 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, 210 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext,
213 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, d->fProcDat aManager); 211 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality);
214 GrAlwaysAssert(fp); 212 GrAlwaysAssert(fp);
215 return fp; 213 return fp;
216 } 214 }
217 215
218 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) 216 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&)
219 : fVSVaryingName(nullptr) 217 : fVSVaryingName(nullptr)
220 , fFSVaryingName(nullptr) 218 , fFSVaryingName(nullptr)
221 , fCachedRadius(-SK_ScalarMax) 219 , fCachedRadius(-SK_ScalarMax)
222 , fCachedDiffRadius(-SK_ScalarMax) {} 220 , fCachedDiffRadius(-SK_ScalarMax) {}
223 221
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 359
362 return conicalType; 360 return conicalType;
363 } 361 }
364 362
365 ////////////////////////////////////////////////////////////////////////////// 363 //////////////////////////////////////////////////////////////////////////////
366 364
367 class FocalOutside2PtConicalEffect : public GrGradientEffect { 365 class FocalOutside2PtConicalEffect : public GrGradientEffect {
368 public: 366 public:
369 367
370 static GrFragmentProcessor* Create(GrContext* ctx, 368 static GrFragmentProcessor* Create(GrContext* ctx,
371 GrProcessorDataManager* procDataManager,
372 const SkTwoPointConicalGradient& shader, 369 const SkTwoPointConicalGradient& shader,
373 const SkMatrix& matrix, 370 const SkMatrix& matrix,
374 SkShader::TileMode tm, 371 SkShader::TileMode tm,
375 SkScalar focalX) { 372 SkScalar focalX) {
376 return new FocalOutside2PtConicalEffect(ctx, procDataManager, shader, ma trix, tm, focalX); 373 return new FocalOutside2PtConicalEffect(ctx, shader, matrix, tm, focalX) ;
377 } 374 }
378 375
379 virtual ~FocalOutside2PtConicalEffect() { } 376 virtual ~FocalOutside2PtConicalEffect() { }
380 377
381 const char* name() const override { 378 const char* name() const override {
382 return "Two-Point Conical Gradient Focal Outside"; 379 return "Two-Point Conical Gradient Focal Outside";
383 } 380 }
384 381
385 bool isFlipped() const { return fIsFlipped; } 382 bool isFlipped() const { return fIsFlipped; }
386 SkScalar focal() const { return fFocalX; } 383 SkScalar focal() const { return fFocalX; }
387 384
388 private: 385 private:
389 GrGLFragmentProcessor* onCreateGLInstance() const override; 386 GrGLFragmentProcessor* onCreateGLInstance() const override;
390 387
391 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride; 388 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
392 389
393 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 390 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
394 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica lEffect>(); 391 const FocalOutside2PtConicalEffect& s = sBase.cast<FocalOutside2PtConica lEffect>();
395 return (INHERITED::onIsEqual(sBase) && 392 return (INHERITED::onIsEqual(sBase) &&
396 this->fFocalX == s.fFocalX && 393 this->fFocalX == s.fFocalX &&
397 this->fIsFlipped == s.fIsFlipped); 394 this->fIsFlipped == s.fIsFlipped);
398 } 395 }
399 396
400 FocalOutside2PtConicalEffect(GrContext* ctx, 397 FocalOutside2PtConicalEffect(GrContext* ctx,
401 GrProcessorDataManager* procDataManager,
402 const SkTwoPointConicalGradient& shader, 398 const SkTwoPointConicalGradient& shader,
403 const SkMatrix& matrix, 399 const SkMatrix& matrix,
404 SkShader::TileMode tm, 400 SkShader::TileMode tm,
405 SkScalar focalX) 401 SkScalar focalX)
406 : INHERITED(ctx, procDataManager, shader, matrix, tm) 402 : INHERITED(ctx, shader, matrix, tm)
407 , fFocalX(focalX) 403 , fFocalX(focalX)
408 , fIsFlipped(shader.isFlippedGrad()) { 404 , fIsFlipped(shader.isFlippedGrad()) {
409 this->initClassID<FocalOutside2PtConicalEffect>(); 405 this->initClassID<FocalOutside2PtConicalEffect>();
410 } 406 }
411 407
412 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 408 GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
413 409
414 SkScalar fFocalX; 410 SkScalar fFocalX;
415 bool fIsFlipped; 411 bool fIsFlipped;
416 412
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 SkColor colors[kMaxRandomGradientColors]; 475 SkColor colors[kMaxRandomGradientColors];
480 SkScalar stopsArray[kMaxRandomGradientColors]; 476 SkScalar stopsArray[kMaxRandomGradientColors];
481 SkScalar* stops = stopsArray; 477 SkScalar* stops = stopsArray;
482 SkShader::TileMode tm; 478 SkShader::TileMode tm;
483 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); 479 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
484 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 480 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
485 center 2, radius2, 481 center 2, radius2,
486 colors , stops, colorCount, 482 colors , stops, colorCount,
487 tm)); 483 tm));
488 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, 484 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext,
489 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, d->fProcDat aManager); 485 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality);
490 GrAlwaysAssert(fp); 486 GrAlwaysAssert(fp);
491 return fp; 487 return fp;
492 } 488 }
493 489
494 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor & processor) 490 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor & processor)
495 : fVSVaryingName(nullptr) 491 : fVSVaryingName(nullptr)
496 , fFSVaryingName(nullptr) 492 , fFSVaryingName(nullptr)
497 , fCachedFocal(SK_ScalarMax) { 493 , fCachedFocal(SK_ScalarMax) {
498 const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon icalEffect>(); 494 const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon icalEffect>();
499 fIsFlipped = data.isFlipped(); 495 fIsFlipped = data.isFlipped();
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 } 568 }
573 569
574 ////////////////////////////////////////////////////////////////////////////// 570 //////////////////////////////////////////////////////////////////////////////
575 571
576 class GLFocalInside2PtConicalEffect; 572 class GLFocalInside2PtConicalEffect;
577 573
578 class FocalInside2PtConicalEffect : public GrGradientEffect { 574 class FocalInside2PtConicalEffect : public GrGradientEffect {
579 public: 575 public:
580 576
581 static GrFragmentProcessor* Create(GrContext* ctx, 577 static GrFragmentProcessor* Create(GrContext* ctx,
582 GrProcessorDataManager* procDataManager,
583 const SkTwoPointConicalGradient& shader, 578 const SkTwoPointConicalGradient& shader,
584 const SkMatrix& matrix, 579 const SkMatrix& matrix,
585 SkShader::TileMode tm, 580 SkShader::TileMode tm,
586 SkScalar focalX) { 581 SkScalar focalX) {
587 return new FocalInside2PtConicalEffect(ctx, procDataManager, shader, mat rix, tm, focalX); 582 return new FocalInside2PtConicalEffect(ctx, shader, matrix, tm, focalX);
588 } 583 }
589 584
590 virtual ~FocalInside2PtConicalEffect() {} 585 virtual ~FocalInside2PtConicalEffect() {}
591 586
592 const char* name() const override { 587 const char* name() const override {
593 return "Two-Point Conical Gradient Focal Inside"; 588 return "Two-Point Conical Gradient Focal Inside";
594 } 589 }
595 590
596 SkScalar focal() const { return fFocalX; } 591 SkScalar focal() const { return fFocalX; }
597 592
598 typedef GLFocalInside2PtConicalEffect GLProcessor; 593 typedef GLFocalInside2PtConicalEffect GLProcessor;
599 594
600 private: 595 private:
601 GrGLFragmentProcessor* onCreateGLInstance() const override; 596 GrGLFragmentProcessor* onCreateGLInstance() const override;
602 597
603 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride; 598 void onGetGLProcessorKey(const GrGLSLCaps&, GrProcessorKeyBuilder*) const ov erride;
604 599
605 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 600 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
606 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE ffect>(); 601 const FocalInside2PtConicalEffect& s = sBase.cast<FocalInside2PtConicalE ffect>();
607 return (INHERITED::onIsEqual(sBase) && 602 return (INHERITED::onIsEqual(sBase) &&
608 this->fFocalX == s.fFocalX); 603 this->fFocalX == s.fFocalX);
609 } 604 }
610 605
611 FocalInside2PtConicalEffect(GrContext* ctx, 606 FocalInside2PtConicalEffect(GrContext* ctx,
612 GrProcessorDataManager* procDataManager,
613 const SkTwoPointConicalGradient& shader, 607 const SkTwoPointConicalGradient& shader,
614 const SkMatrix& matrix, 608 const SkMatrix& matrix,
615 SkShader::TileMode tm, 609 SkShader::TileMode tm,
616 SkScalar focalX) 610 SkScalar focalX)
617 : INHERITED(ctx, procDataManager, shader, matrix, tm), fFocalX(focalX) { 611 : INHERITED(ctx, shader, matrix, tm), fFocalX(focalX) {
618 this->initClassID<FocalInside2PtConicalEffect>(); 612 this->initClassID<FocalInside2PtConicalEffect>();
619 } 613 }
620 614
621 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 615 GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
622 616
623 SkScalar fFocalX; 617 SkScalar fFocalX;
624 618
625 typedef GrGradientEffect INHERITED; 619 typedef GrGradientEffect INHERITED;
626 }; 620 };
627 621
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 SkColor colors[kMaxRandomGradientColors]; 681 SkColor colors[kMaxRandomGradientColors];
688 SkScalar stopsArray[kMaxRandomGradientColors]; 682 SkScalar stopsArray[kMaxRandomGradientColors];
689 SkScalar* stops = stopsArray; 683 SkScalar* stops = stopsArray;
690 SkShader::TileMode tm; 684 SkShader::TileMode tm;
691 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); 685 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
692 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 686 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
693 center 2, radius2, 687 center 2, radius2,
694 colors , stops, colorCount, 688 colors , stops, colorCount,
695 tm)); 689 tm));
696 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, 690 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext,
697 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, d->fProcDat aManager); 691 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality);
698 GrAlwaysAssert(fp); 692 GrAlwaysAssert(fp);
699 return fp; 693 return fp;
700 } 694 }
701 695
702 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) 696 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&)
703 : fVSVaryingName(nullptr) 697 : fVSVaryingName(nullptr)
704 , fFSVaryingName(nullptr) 698 , fFSVaryingName(nullptr)
705 , fCachedFocal(SK_ScalarMax) {} 699 , fCachedFocal(SK_ScalarMax) {}
706 700
707 void GLFocalInside2PtConicalEffect::emitCode(EmitArgs& args) { 701 void GLFocalInside2PtConicalEffect::emitCode(EmitArgs& args) {
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 if (A < 0.f) { 801 if (A < 0.f) {
808 return kInside_ConicalType; 802 return kInside_ConicalType;
809 } 803 }
810 return kOutside_ConicalType; 804 return kOutside_ConicalType;
811 } 805 }
812 806
813 class CircleInside2PtConicalEffect : public GrGradientEffect { 807 class CircleInside2PtConicalEffect : public GrGradientEffect {
814 public: 808 public:
815 809
816 static GrFragmentProcessor* Create(GrContext* ctx, 810 static GrFragmentProcessor* Create(GrContext* ctx,
817 GrProcessorDataManager* procDataManager,
818 const SkTwoPointConicalGradient& shader, 811 const SkTwoPointConicalGradient& shader,
819 const SkMatrix& matrix, 812 const SkMatrix& matrix,
820 SkShader::TileMode tm, 813 SkShader::TileMode tm,
821 const CircleConicalInfo& info) { 814 const CircleConicalInfo& info) {
822 return new CircleInside2PtConicalEffect(ctx, procDataManager, shader, ma trix, tm, info); 815 return new CircleInside2PtConicalEffect(ctx, shader, matrix, tm, info);
823 } 816 }
824 817
825 virtual ~CircleInside2PtConicalEffect() {} 818 virtual ~CircleInside2PtConicalEffect() {}
826 819
827 const char* name() const override { return "Two-Point Conical Gradient Insid e"; } 820 const char* name() const override { return "Two-Point Conical Gradient Insid e"; }
828 821
829 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } 822 SkScalar centerX() const { return fInfo.fCenterEnd.fX; }
830 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } 823 SkScalar centerY() const { return fInfo.fCenterEnd.fY; }
831 SkScalar A() const { return fInfo.fA; } 824 SkScalar A() const { return fInfo.fA; }
832 SkScalar B() const { return fInfo.fB; } 825 SkScalar B() const { return fInfo.fB; }
833 SkScalar C() const { return fInfo.fC; } 826 SkScalar C() const { return fInfo.fC; }
834 827
835 private: 828 private:
836 GrGLFragmentProcessor* onCreateGLInstance() const override; 829 GrGLFragmentProcessor* onCreateGLInstance() const override;
837 830
838 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps, 831 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps,
839 GrProcessorKeyBuilder* b) const override; 832 GrProcessorKeyBuilder* b) const override;
840 833
841 bool onIsEqual(const GrFragmentProcessor& sBase) const override { 834 bool onIsEqual(const GrFragmentProcessor& sBase) const override {
842 const CircleInside2PtConicalEffect& s = sBase.cast<CircleInside2PtConica lEffect>(); 835 const CircleInside2PtConicalEffect& s = sBase.cast<CircleInside2PtConica lEffect>();
843 return (INHERITED::onIsEqual(sBase) && 836 return (INHERITED::onIsEqual(sBase) &&
844 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd && 837 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd &&
845 this->fInfo.fA == s.fInfo.fA && 838 this->fInfo.fA == s.fInfo.fA &&
846 this->fInfo.fB == s.fInfo.fB && 839 this->fInfo.fB == s.fInfo.fB &&
847 this->fInfo.fC == s.fInfo.fC); 840 this->fInfo.fC == s.fInfo.fC);
848 } 841 }
849 842
850 CircleInside2PtConicalEffect(GrContext* ctx, 843 CircleInside2PtConicalEffect(GrContext* ctx,
851 GrProcessorDataManager* procDataManager,
852 const SkTwoPointConicalGradient& shader, 844 const SkTwoPointConicalGradient& shader,
853 const SkMatrix& matrix, 845 const SkMatrix& matrix,
854 SkShader::TileMode tm, 846 SkShader::TileMode tm,
855 const CircleConicalInfo& info) 847 const CircleConicalInfo& info)
856 : INHERITED(ctx, procDataManager, shader, matrix, tm), fInfo(info) { 848 : INHERITED(ctx, shader, matrix, tm), fInfo(info) {
857 this->initClassID<CircleInside2PtConicalEffect>(); 849 this->initClassID<CircleInside2PtConicalEffect>();
858 } 850 }
859 851
860 GR_DECLARE_FRAGMENT_PROCESSOR_TEST; 852 GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
861 853
862 const CircleConicalInfo fInfo; 854 const CircleConicalInfo fInfo;
863 855
864 typedef GrGradientEffect INHERITED; 856 typedef GrGradientEffect INHERITED;
865 }; 857 };
866 858
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 SkColor colors[kMaxRandomGradientColors]; 922 SkColor colors[kMaxRandomGradientColors];
931 SkScalar stopsArray[kMaxRandomGradientColors]; 923 SkScalar stopsArray[kMaxRandomGradientColors];
932 SkScalar* stops = stopsArray; 924 SkScalar* stops = stopsArray;
933 SkShader::TileMode tm; 925 SkShader::TileMode tm;
934 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); 926 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
935 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 927 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
936 center 2, radius2, 928 center 2, radius2,
937 colors , stops, colorCount, 929 colors , stops, colorCount,
938 tm)); 930 tm));
939 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, 931 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext,
940 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, d->fProcDat aManager); 932 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality);
941 GrAlwaysAssert(fp); 933 GrAlwaysAssert(fp);
942 return fp; 934 return fp;
943 } 935 }
944 936
945 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor & processor) 937 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor & processor)
946 : fVSVaryingName(nullptr) 938 : fVSVaryingName(nullptr)
947 , fFSVaryingName(nullptr) 939 , fFSVaryingName(nullptr)
948 , fCachedCenterX(SK_ScalarMax) 940 , fCachedCenterX(SK_ScalarMax)
949 , fCachedCenterY(SK_ScalarMax) 941 , fCachedCenterY(SK_ScalarMax)
950 , fCachedA(SK_ScalarMax) 942 , fCachedA(SK_ScalarMax)
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 const GrGLSLCaps&, GrProcessorKeyBui lder* b) { 1011 const GrGLSLCaps&, GrProcessorKeyBui lder* b) {
1020 b->add32(GenBaseGradientKey(processor)); 1012 b->add32(GenBaseGradientKey(processor));
1021 } 1013 }
1022 1014
1023 ////////////////////////////////////////////////////////////////////////////// 1015 //////////////////////////////////////////////////////////////////////////////
1024 1016
1025 class CircleOutside2PtConicalEffect : public GrGradientEffect { 1017 class CircleOutside2PtConicalEffect : public GrGradientEffect {
1026 public: 1018 public:
1027 1019
1028 static GrFragmentProcessor* Create(GrContext* ctx, 1020 static GrFragmentProcessor* Create(GrContext* ctx,
1029 GrProcessorDataManager* procDataManager,
1030 const SkTwoPointConicalGradient& shader, 1021 const SkTwoPointConicalGradient& shader,
1031 const SkMatrix& matrix, 1022 const SkMatrix& matrix,
1032 SkShader::TileMode tm, 1023 SkShader::TileMode tm,
1033 const CircleConicalInfo& info) { 1024 const CircleConicalInfo& info) {
1034 return new CircleOutside2PtConicalEffect(ctx, procDataManager, shader, m atrix, tm, info); 1025 return new CircleOutside2PtConicalEffect(ctx, shader, matrix, tm, info);
1035 } 1026 }
1036 1027
1037 virtual ~CircleOutside2PtConicalEffect() {} 1028 virtual ~CircleOutside2PtConicalEffect() {}
1038 1029
1039 const char* name() const override { return "Two-Point Conical Gradient Outsi de"; } 1030 const char* name() const override { return "Two-Point Conical Gradient Outsi de"; }
1040 1031
1041 SkScalar centerX() const { return fInfo.fCenterEnd.fX; } 1032 SkScalar centerX() const { return fInfo.fCenterEnd.fX; }
1042 SkScalar centerY() const { return fInfo.fCenterEnd.fY; } 1033 SkScalar centerY() const { return fInfo.fCenterEnd.fY; }
1043 SkScalar A() const { return fInfo.fA; } 1034 SkScalar A() const { return fInfo.fA; }
1044 SkScalar B() const { return fInfo.fB; } 1035 SkScalar B() const { return fInfo.fB; }
(...skipping 11 matching lines...) Expand all
1056 return (INHERITED::onIsEqual(sBase) && 1047 return (INHERITED::onIsEqual(sBase) &&
1057 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd && 1048 this->fInfo.fCenterEnd == s.fInfo.fCenterEnd &&
1058 this->fInfo.fA == s.fInfo.fA && 1049 this->fInfo.fA == s.fInfo.fA &&
1059 this->fInfo.fB == s.fInfo.fB && 1050 this->fInfo.fB == s.fInfo.fB &&
1060 this->fInfo.fC == s.fInfo.fC && 1051 this->fInfo.fC == s.fInfo.fC &&
1061 this->fTLimit == s.fTLimit && 1052 this->fTLimit == s.fTLimit &&
1062 this->fIsFlipped == s.fIsFlipped); 1053 this->fIsFlipped == s.fIsFlipped);
1063 } 1054 }
1064 1055
1065 CircleOutside2PtConicalEffect(GrContext* ctx, 1056 CircleOutside2PtConicalEffect(GrContext* ctx,
1066 GrProcessorDataManager* procDataManager,
1067 const SkTwoPointConicalGradient& shader, 1057 const SkTwoPointConicalGradient& shader,
1068 const SkMatrix& matrix, 1058 const SkMatrix& matrix,
1069 SkShader::TileMode tm, 1059 SkShader::TileMode tm,
1070 const CircleConicalInfo& info) 1060 const CircleConicalInfo& info)
1071 : INHERITED(ctx, procDataManager, shader, matrix, tm), fInfo(info) { 1061 : INHERITED(ctx, shader, matrix, tm), fInfo(info) {
1072 this->initClassID<CircleOutside2PtConicalEffect>(); 1062 this->initClassID<CircleOutside2PtConicalEffect>();
1073 if (shader.getStartRadius() != shader.getEndRadius()) { 1063 if (shader.getStartRadius() != shader.getEndRadius()) {
1074 fTLimit = shader.getStartRadius() / (shader.getStartRadius() - shade r.getEndRadius()); 1064 fTLimit = shader.getStartRadius() / (shader.getStartRadius() - shade r.getEndRadius());
1075 } else { 1065 } else {
1076 fTLimit = SK_ScalarMin; 1066 fTLimit = SK_ScalarMin;
1077 } 1067 }
1078 1068
1079 fIsFlipped = shader.isFlippedGrad(); 1069 fIsFlipped = shader.isFlippedGrad();
1080 } 1070 }
1081 1071
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 SkColor colors[kMaxRandomGradientColors]; 1148 SkColor colors[kMaxRandomGradientColors];
1159 SkScalar stopsArray[kMaxRandomGradientColors]; 1149 SkScalar stopsArray[kMaxRandomGradientColors];
1160 SkScalar* stops = stopsArray; 1150 SkScalar* stops = stopsArray;
1161 SkShader::TileMode tm; 1151 SkShader::TileMode tm;
1162 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); 1152 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
1163 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 1153 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
1164 center 2, radius2, 1154 center 2, radius2,
1165 colors , stops, colorCount, 1155 colors , stops, colorCount,
1166 tm)); 1156 tm));
1167 const GrFragmentProcessor* fp = shader->asFragmentProcessor( 1157 const GrFragmentProcessor* fp = shader->asFragmentProcessor(
1168 d->fContext,GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality, 1158 d->fContext,GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality) ;
1169 d->fProcDataManager);
1170 GrAlwaysAssert(fp); 1159 GrAlwaysAssert(fp);
1171 return fp; 1160 return fp;
1172 } 1161 }
1173 1162
1174 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess or& processor) 1163 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess or& processor)
1175 : fVSVaryingName(nullptr) 1164 : fVSVaryingName(nullptr)
1176 , fFSVaryingName(nullptr) 1165 , fFSVaryingName(nullptr)
1177 , fCachedCenterX(SK_ScalarMax) 1166 , fCachedCenterX(SK_ScalarMax)
1178 , fCachedCenterY(SK_ScalarMax) 1167 , fCachedCenterY(SK_ScalarMax)
1179 , fCachedA(SK_ScalarMax) 1168 , fCachedA(SK_ScalarMax)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor, 1260 void GLCircleOutside2PtConicalEffect::GenKey(const GrProcessor& processor,
1272 const GrGLSLCaps&, GrProcessorKeyBu ilder* b) { 1261 const GrGLSLCaps&, GrProcessorKeyBu ilder* b) {
1273 uint32_t* key = b->add32n(2); 1262 uint32_t* key = b->add32n(2);
1274 key[0] = GenBaseGradientKey(processor); 1263 key[0] = GenBaseGradientKey(processor);
1275 key[1] = processor.cast<CircleOutside2PtConicalEffect>().isFlipped(); 1264 key[1] = processor.cast<CircleOutside2PtConicalEffect>().isFlipped();
1276 } 1265 }
1277 1266
1278 ////////////////////////////////////////////////////////////////////////////// 1267 //////////////////////////////////////////////////////////////////////////////
1279 1268
1280 GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx, 1269 GrFragmentProcessor* Gr2PtConicalGradientEffect::Create(GrContext* ctx,
1281 GrProcessorDataManager* procDataManager,
1282 const SkTwoPointConicalG radient& shader, 1270 const SkTwoPointConicalG radient& shader,
1283 SkShader::TileMode tm, 1271 SkShader::TileMode tm,
1284 const SkMatrix* localMat rix) { 1272 const SkMatrix* localMat rix) {
1285 SkMatrix matrix; 1273 SkMatrix matrix;
1286 if (!shader.getLocalMatrix().invert(&matrix)) { 1274 if (!shader.getLocalMatrix().invert(&matrix)) {
1287 return nullptr; 1275 return nullptr;
1288 } 1276 }
1289 if (localMatrix) { 1277 if (localMatrix) {
1290 SkMatrix inv; 1278 SkMatrix inv;
1291 if (!localMatrix->invert(&inv)) { 1279 if (!localMatrix->invert(&inv)) {
1292 return nullptr; 1280 return nullptr;
1293 } 1281 }
1294 matrix.postConcat(inv); 1282 matrix.postConcat(inv);
1295 } 1283 }
1296 1284
1297 if (shader.getStartRadius() < kErrorTol) { 1285 if (shader.getStartRadius() < kErrorTol) {
1298 SkScalar focalX; 1286 SkScalar focalX;
1299 ConicalType type = set_matrix_focal_conical(shader, &matrix, &focalX); 1287 ConicalType type = set_matrix_focal_conical(shader, &matrix, &focalX);
1300 if (type == kInside_ConicalType) { 1288 if (type == kInside_ConicalType) {
1301 return FocalInside2PtConicalEffect::Create(ctx, procDataManager, sha der, matrix, tm, 1289 return FocalInside2PtConicalEffect::Create(ctx, shader, matrix, tm, focalX);
1302 focalX);
1303 } else if(type == kEdge_ConicalType) { 1290 } else if(type == kEdge_ConicalType) {
1304 set_matrix_edge_conical(shader, &matrix); 1291 set_matrix_edge_conical(shader, &matrix);
1305 return Edge2PtConicalEffect::Create(ctx, procDataManager, shader, ma trix, tm); 1292 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm);
1306 } else { 1293 } else {
1307 return FocalOutside2PtConicalEffect::Create(ctx, procDataManager, sh ader, matrix, tm, 1294 return FocalOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, focalX);
1308 focalX);
1309 } 1295 }
1310 } 1296 }
1311 1297
1312 CircleConicalInfo info; 1298 CircleConicalInfo info;
1313 ConicalType type = set_matrix_circle_conical(shader, &matrix, &info); 1299 ConicalType type = set_matrix_circle_conical(shader, &matrix, &info);
1314 1300
1315 if (type == kInside_ConicalType) { 1301 if (type == kInside_ConicalType) {
1316 return CircleInside2PtConicalEffect::Create(ctx, procDataManager, shade r, matrix, tm, 1302 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf o);
1317 info);
1318 } else if (type == kEdge_ConicalType) { 1303 } else if (type == kEdge_ConicalType) {
1319 set_matrix_edge_conical(shader, &matrix); 1304 set_matrix_edge_conical(shader, &matrix);
1320 return Edge2PtConicalEffect::Create(ctx, procDataManager, shader, matrix , tm); 1305 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm);
1321 } else { 1306 } else {
1322 return CircleOutside2PtConicalEffect::Create(ctx, procDataManager, shade r, matrix, tm, 1307 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in fo);
1323 info);
1324 } 1308 }
1325 } 1309 }
1326 1310
1327 #endif 1311 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkTwoPointConicalGradient_gpu.h ('k') | src/gpu/GrBlurUtils.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698