| OLD | NEW | 
|---|
| 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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 180 | 180 | 
| 181 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const { | 181 GrGLFragmentProcessor* Edge2PtConicalEffect::createGLInstance() const { | 
| 182     return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this)); | 182     return SkNEW_ARGS(GLEdge2PtConicalEffect, (*this)); | 
| 183 } | 183 } | 
| 184 | 184 | 
| 185 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); | 185 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(Edge2PtConicalEffect); | 
| 186 | 186 | 
| 187 /* | 187 /* | 
| 188  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 188  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 
| 189  */ | 189  */ | 
| 190 GrFragmentProcessor* Edge2PtConicalEffect::TestCreate(SkRandom* random, | 190 GrFragmentProcessor* Edge2PtConicalEffect::TestCreate(GrProcessorTestData* d) { | 
| 191                                                       GrContext* context, | 191     SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; | 
| 192                                                       const GrCaps&, | 192     SkScalar radius1 = d->fRandom->nextUScalar1(); | 
| 193                                                       GrTexture**) { |  | 
| 194     SkPoint center1 = {random->nextUScalar1(), random->nextUScalar1()}; |  | 
| 195     SkScalar radius1 = random->nextUScalar1(); |  | 
| 196     SkPoint center2; | 193     SkPoint center2; | 
| 197     SkScalar radius2; | 194     SkScalar radius2; | 
| 198     do { | 195     do { | 
| 199         center2.set(random->nextUScalar1(), random->nextUScalar1()); | 196         center2.set(d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()); | 
| 200         // If the circles are identical the factory will give us an empty shader
      . | 197         // If the circles are identical the factory will give us an empty shader
      . | 
| 201         // This will happen if we pick identical centers | 198         // This will happen if we pick identical centers | 
| 202     } while (center1 == center2); | 199     } while (center1 == center2); | 
| 203 | 200 | 
| 204     // Below makes sure that circle one is contained within circle two | 201     // Below makes sure that circle one is contained within circle two | 
| 205     // and both circles are touching on an edge | 202     // and both circles are touching on an edge | 
| 206     SkPoint diff = center2 - center1; | 203     SkPoint diff = center2 - center1; | 
| 207     SkScalar diffLen = diff.length(); | 204     SkScalar diffLen = diff.length(); | 
| 208     radius2 = radius1 + diffLen; | 205     radius2 = radius1 + diffLen; | 
| 209 | 206 | 
| 210     SkColor colors[kMaxRandomGradientColors]; | 207     SkColor colors[kMaxRandomGradientColors]; | 
| 211     SkScalar stopsArray[kMaxRandomGradientColors]; | 208     SkScalar stopsArray[kMaxRandomGradientColors]; | 
| 212     SkScalar* stops = stopsArray; | 209     SkScalar* stops = stopsArray; | 
| 213     SkShader::TileMode tm; | 210     SkShader::TileMode tm; | 
| 214     int colorCount = RandomGradientParams(random, colors, &stops, &tm); | 211     int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 
| 215     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 212     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 
| 216                                                                           center
      2, radius2, | 213                                                                           center
      2, radius2, | 
| 217                                                                           colors
      , stops, colorCount, | 214                                                                           colors
      , stops, colorCount, | 
| 218                                                                           tm)); | 215                                                                           tm)); | 
| 219     SkPaint paint; | 216     SkPaint paint; | 
| 220     GrFragmentProcessor* fp; | 217     GrFragmentProcessor* fp; | 
| 221     GrColor paintColor; | 218     GrColor paintColor; | 
| 222     GrPaint grPaint; | 219     SkAssertResult(shader->asFragmentProcessor(d->fContext, paint, | 
| 223     SkAssertResult(shader->asFragmentProcessor(context, paint, | 220                                                GrTest::TestMatrix(d->fRandom), N
      ULL, | 
| 224                                                GrTest::TestMatrix(random), NULL, | 221                                                &paintColor, d->fShaderDataManage
      r, &fp)); | 
| 225                                                &paintColor, grPaint.getShaderDat
      aManager(), &fp)); |  | 
| 226     return fp; | 222     return fp; | 
| 227 } | 223 } | 
| 228 | 224 | 
| 229 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) | 225 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) | 
| 230     : fVSVaryingName(NULL) | 226     : fVSVaryingName(NULL) | 
| 231     , fFSVaryingName(NULL) | 227     , fFSVaryingName(NULL) | 
| 232     , fCachedRadius(-SK_ScalarMax) | 228     , fCachedRadius(-SK_ScalarMax) | 
| 233     , fCachedDiffRadius(-SK_ScalarMax) {} | 229     , fCachedDiffRadius(-SK_ScalarMax) {} | 
| 234 | 230 | 
| 235 void GLEdge2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 231 void GLEdge2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 475 | 471 | 
| 476 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const { | 472 GrGLFragmentProcessor* FocalOutside2PtConicalEffect::createGLInstance() const { | 
| 477     return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this)); | 473     return SkNEW_ARGS(GLFocalOutside2PtConicalEffect, (*this)); | 
| 478 } | 474 } | 
| 479 | 475 | 
| 480 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); | 476 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalOutside2PtConicalEffect); | 
| 481 | 477 | 
| 482 /* | 478 /* | 
| 483  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 479  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 
| 484  */ | 480  */ | 
| 485 GrFragmentProcessor* FocalOutside2PtConicalEffect::TestCreate(SkRandom* random, | 481 GrFragmentProcessor* FocalOutside2PtConicalEffect::TestCreate(GrProcessorTestDat
      a* d) { | 
| 486                                                               GrContext* context
      , | 482     SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; | 
| 487                                                               const GrCaps&, |  | 
| 488                                                               GrTexture**) { |  | 
| 489     SkPoint center1 = {random->nextUScalar1(), random->nextUScalar1()}; |  | 
| 490     SkScalar radius1 = 0.f; | 483     SkScalar radius1 = 0.f; | 
| 491     SkPoint center2; | 484     SkPoint center2; | 
| 492     SkScalar radius2; | 485     SkScalar radius2; | 
| 493     do { | 486     do { | 
| 494         center2.set(random->nextUScalar1(), random->nextUScalar1()); | 487         center2.set(d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()); | 
| 495         // Need to make sure the centers are not the same or else focal point wi
      ll be inside | 488         // Need to make sure the centers are not the same or else focal point wi
      ll be inside | 
| 496     } while (center1 == center2); | 489     } while (center1 == center2); | 
| 497         SkPoint diff = center2 - center1; | 490         SkPoint diff = center2 - center1; | 
| 498         SkScalar diffLen = diff.length(); | 491         SkScalar diffLen = diff.length(); | 
| 499         // Below makes sure that the focal point is not contained within circle 
      two | 492         // Below makes sure that the focal point is not contained within circle 
      two | 
| 500         radius2 = random->nextRangeF(0.f, diffLen); | 493         radius2 = d->fRandom->nextRangeF(0.f, diffLen); | 
| 501 | 494 | 
| 502     SkColor colors[kMaxRandomGradientColors]; | 495     SkColor colors[kMaxRandomGradientColors]; | 
| 503     SkScalar stopsArray[kMaxRandomGradientColors]; | 496     SkScalar stopsArray[kMaxRandomGradientColors]; | 
| 504     SkScalar* stops = stopsArray; | 497     SkScalar* stops = stopsArray; | 
| 505     SkShader::TileMode tm; | 498     SkShader::TileMode tm; | 
| 506     int colorCount = RandomGradientParams(random, colors, &stops, &tm); | 499     int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 
| 507     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 500     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 
| 508                                                                           center
      2, radius2, | 501                                                                           center
      2, radius2, | 
| 509                                                                           colors
      , stops, colorCount, | 502                                                                           colors
      , stops, colorCount, | 
| 510                                                                           tm)); | 503                                                                           tm)); | 
| 511     SkPaint paint; | 504     SkPaint paint; | 
| 512     GrFragmentProcessor* effect; | 505     GrFragmentProcessor* effect; | 
| 513     GrColor paintColor; | 506     GrColor paintColor; | 
| 514     GrPaint grPaint; | 507     GrPaint grPaint; | 
| 515     SkAssertResult(shader->asFragmentProcessor(context, paint, | 508     SkAssertResult(shader->asFragmentProcessor(d->fContext, paint, | 
| 516                                                GrTest::TestMatrix(random), NULL, | 509                                                GrTest::TestMatrix(d->fRandom), N
      ULL, | 
| 517                                                &paintColor, grPaint.getShaderDat
      aManager(), | 510                                                &paintColor, d->fShaderDataManage
      r, | 
| 518                                                &effect)); | 511                                                &effect)); | 
| 519     return effect; | 512     return effect; | 
| 520 } | 513 } | 
| 521 | 514 | 
| 522 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor
      & processor) | 515 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor
      & processor) | 
| 523     : fVSVaryingName(NULL) | 516     : fVSVaryingName(NULL) | 
| 524     , fFSVaryingName(NULL) | 517     , fFSVaryingName(NULL) | 
| 525     , fCachedFocal(SK_ScalarMax) { | 518     , fCachedFocal(SK_ScalarMax) { | 
| 526     const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon
      icalEffect>(); | 519     const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon
      icalEffect>(); | 
| 527     fIsFlipped = data.isFlipped(); | 520     fIsFlipped = data.isFlipped(); | 
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 698 | 691 | 
| 699 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const { | 692 GrGLFragmentProcessor* FocalInside2PtConicalEffect::createGLInstance() const { | 
| 700     return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this)); | 693     return SkNEW_ARGS(GLFocalInside2PtConicalEffect, (*this)); | 
| 701 } | 694 } | 
| 702 | 695 | 
| 703 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); | 696 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(FocalInside2PtConicalEffect); | 
| 704 | 697 | 
| 705 /* | 698 /* | 
| 706  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 699  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 
| 707  */ | 700  */ | 
| 708 GrFragmentProcessor* FocalInside2PtConicalEffect::TestCreate(SkRandom* random, | 701 GrFragmentProcessor* FocalInside2PtConicalEffect::TestCreate(GrProcessorTestData
      * d) { | 
| 709                                                              GrContext* context, | 702     SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; | 
| 710                                                              const GrCaps&, |  | 
| 711                                                              GrTexture**) { |  | 
| 712     SkPoint center1 = {random->nextUScalar1(), random->nextUScalar1()}; |  | 
| 713     SkScalar radius1 = 0.f; | 703     SkScalar radius1 = 0.f; | 
| 714     SkPoint center2; | 704     SkPoint center2; | 
| 715     SkScalar radius2; | 705     SkScalar radius2; | 
| 716     do { | 706     do { | 
| 717         center2.set(random->nextUScalar1(), random->nextUScalar1()); | 707         center2.set(d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()); | 
| 718         // Below makes sure radius2 is larger enouch such that the focal point | 708         // Below makes sure radius2 is larger enouch such that the focal point | 
| 719         // is inside the end circle | 709         // is inside the end circle | 
| 720         SkScalar increase = random->nextUScalar1(); | 710         SkScalar increase = d->fRandom->nextUScalar1(); | 
| 721         SkPoint diff = center2 - center1; | 711         SkPoint diff = center2 - center1; | 
| 722         SkScalar diffLen = diff.length(); | 712         SkScalar diffLen = diff.length(); | 
| 723         radius2 = diffLen + increase; | 713         radius2 = diffLen + increase; | 
| 724         // If the circles are identical the factory will give us an empty shader
      . | 714         // If the circles are identical the factory will give us an empty shader
      . | 
| 725     } while (radius1 == radius2 && center1 == center2); | 715     } while (radius1 == radius2 && center1 == center2); | 
| 726 | 716 | 
| 727     SkColor colors[kMaxRandomGradientColors]; | 717     SkColor colors[kMaxRandomGradientColors]; | 
| 728     SkScalar stopsArray[kMaxRandomGradientColors]; | 718     SkScalar stopsArray[kMaxRandomGradientColors]; | 
| 729     SkScalar* stops = stopsArray; | 719     SkScalar* stops = stopsArray; | 
| 730     SkShader::TileMode tm; | 720     SkShader::TileMode tm; | 
| 731     int colorCount = RandomGradientParams(random, colors, &stops, &tm); | 721     int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 
| 732     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 722     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 
| 733                                                                           center
      2, radius2, | 723                                                                           center
      2, radius2, | 
| 734                                                                           colors
      , stops, colorCount, | 724                                                                           colors
      , stops, colorCount, | 
| 735                                                                           tm)); | 725                                                                           tm)); | 
| 736     SkPaint paint; | 726     SkPaint paint; | 
| 737     GrColor paintColor; | 727     GrColor paintColor; | 
| 738     GrFragmentProcessor* fp; | 728     GrFragmentProcessor* fp; | 
| 739     GrPaint grPaint; | 729     SkAssertResult(shader->asFragmentProcessor(d->fContext, paint, | 
| 740     SkAssertResult(shader->asFragmentProcessor(context, paint, | 730                                                GrTest::TestMatrix(d->fRandom), N
      ULL, | 
| 741                                                GrTest::TestMatrix(random), NULL, | 731                                                &paintColor, d->fShaderDataManage
      r, &fp)); | 
| 742                                                &paintColor, grPaint.getShaderDat
      aManager(), &fp)); |  | 
| 743     return fp; | 732     return fp; | 
| 744 } | 733 } | 
| 745 | 734 | 
| 746 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) | 735 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) | 
| 747     : fVSVaryingName(NULL) | 736     : fVSVaryingName(NULL) | 
| 748     , fFSVaryingName(NULL) | 737     , fFSVaryingName(NULL) | 
| 749     , fCachedFocal(SK_ScalarMax) {} | 738     , fCachedFocal(SK_ScalarMax) {} | 
| 750 | 739 | 
| 751 void GLFocalInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 740 void GLFocalInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, | 
| 752                                              const GrFragmentProcessor& fp, | 741                                              const GrFragmentProcessor& fp, | 
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 958 | 947 | 
| 959 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const { | 948 GrGLFragmentProcessor* CircleInside2PtConicalEffect::createGLInstance() const { | 
| 960     return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this)); | 949     return SkNEW_ARGS(GLCircleInside2PtConicalEffect, (*this)); | 
| 961 } | 950 } | 
| 962 | 951 | 
| 963 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); | 952 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleInside2PtConicalEffect); | 
| 964 | 953 | 
| 965 /* | 954 /* | 
| 966  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 955  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 
| 967  */ | 956  */ | 
| 968 GrFragmentProcessor* CircleInside2PtConicalEffect::TestCreate(SkRandom* random, | 957 GrFragmentProcessor* | 
| 969                                                               GrContext* context
      , | 958 CircleInside2PtConicalEffect::TestCreate(GrProcessorTestData* d) { | 
| 970                                                               const GrCaps&, | 959     SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; | 
| 971                                                               GrTexture**) { | 960     SkScalar radius1 = d->fRandom->nextUScalar1() + 0.0001f; // make sure radius
      1 != 0 | 
| 972     SkPoint center1 = {random->nextUScalar1(), random->nextUScalar1()}; |  | 
| 973     SkScalar radius1 = random->nextUScalar1() + 0.0001f; // make sure radius1 !=
       0 |  | 
| 974     SkPoint center2; | 961     SkPoint center2; | 
| 975     SkScalar radius2; | 962     SkScalar radius2; | 
| 976     do { | 963     do { | 
| 977         center2.set(random->nextUScalar1(), random->nextUScalar1()); | 964         center2.set(d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()); | 
| 978         // Below makes sure that circle one is contained within circle two | 965         // Below makes sure that circle one is contained within circle two | 
| 979         SkScalar increase = random->nextUScalar1(); | 966         SkScalar increase = d->fRandom->nextUScalar1(); | 
| 980         SkPoint diff = center2 - center1; | 967         SkPoint diff = center2 - center1; | 
| 981         SkScalar diffLen = diff.length(); | 968         SkScalar diffLen = diff.length(); | 
| 982         radius2 = radius1 + diffLen + increase; | 969         radius2 = radius1 + diffLen + increase; | 
| 983         // If the circles are identical the factory will give us an empty shader
      . | 970         // If the circles are identical the factory will give us an empty shader
      . | 
| 984     } while (radius1 == radius2 && center1 == center2); | 971     } while (radius1 == radius2 && center1 == center2); | 
| 985 | 972 | 
| 986     SkColor colors[kMaxRandomGradientColors]; | 973     SkColor colors[kMaxRandomGradientColors]; | 
| 987     SkScalar stopsArray[kMaxRandomGradientColors]; | 974     SkScalar stopsArray[kMaxRandomGradientColors]; | 
| 988     SkScalar* stops = stopsArray; | 975     SkScalar* stops = stopsArray; | 
| 989     SkShader::TileMode tm; | 976     SkShader::TileMode tm; | 
| 990     int colorCount = RandomGradientParams(random, colors, &stops, &tm); | 977     int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 
| 991     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 978     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 
| 992                                                                           center
      2, radius2, | 979                                                                           center
      2, radius2, | 
| 993                                                                           colors
      , stops, colorCount, | 980                                                                           colors
      , stops, colorCount, | 
| 994                                                                           tm)); | 981                                                                           tm)); | 
| 995     SkPaint paint; | 982     SkPaint paint; | 
| 996     GrColor paintColor; | 983     GrColor paintColor; | 
| 997     GrFragmentProcessor* fp; | 984     GrFragmentProcessor* fp; | 
| 998     GrPaint grPaint; | 985     SkAssertResult(shader->asFragmentProcessor(d->fContext, paint, | 
| 999     SkAssertResult(shader->asFragmentProcessor(context, paint, | 986                                                GrTest::TestMatrix(d->fRandom), N
      ULL, | 
| 1000                                                GrTest::TestMatrix(random), NULL, | 987                                                &paintColor, d->fShaderDataManage
      r, &fp)); | 
| 1001                                                &paintColor, grPaint.getShaderDat
      aManager(), &fp)); |  | 
| 1002     return fp; | 988     return fp; | 
| 1003 } | 989 } | 
| 1004 | 990 | 
| 1005 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor
      & processor) | 991 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor
      & processor) | 
| 1006     : fVSVaryingName(NULL) | 992     : fVSVaryingName(NULL) | 
| 1007     , fFSVaryingName(NULL) | 993     , fFSVaryingName(NULL) | 
| 1008     , fCachedCenterX(SK_ScalarMax) | 994     , fCachedCenterX(SK_ScalarMax) | 
| 1009     , fCachedCenterY(SK_ScalarMax) | 995     , fCachedCenterY(SK_ScalarMax) | 
| 1010     , fCachedA(SK_ScalarMax) | 996     , fCachedA(SK_ScalarMax) | 
| 1011     , fCachedB(SK_ScalarMax) | 997     , fCachedB(SK_ScalarMax) | 
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1201 | 1187 | 
| 1202 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const { | 1188 GrGLFragmentProcessor* CircleOutside2PtConicalEffect::createGLInstance() const { | 
| 1203     return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this)); | 1189     return SkNEW_ARGS(GLCircleOutside2PtConicalEffect, (*this)); | 
| 1204 } | 1190 } | 
| 1205 | 1191 | 
| 1206 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); | 1192 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(CircleOutside2PtConicalEffect); | 
| 1207 | 1193 | 
| 1208 /* | 1194 /* | 
| 1209  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 1195  * All Two point conical gradient test create functions may occasionally create 
      edge case shaders | 
| 1210  */ | 1196  */ | 
| 1211 GrFragmentProcessor* CircleOutside2PtConicalEffect::TestCreate(SkRandom* random, | 1197 GrFragmentProcessor* CircleOutside2PtConicalEffect::TestCreate(GrProcessorTestDa
      ta* d) { | 
| 1212                                                                GrContext* contex
      t, | 1198     SkPoint center1 = {d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()}; | 
| 1213                                                                const GrCaps&, | 1199     SkScalar radius1 = d->fRandom->nextUScalar1() + 0.0001f; // make sure radius
      1 != 0 | 
| 1214                                                                GrTexture**) { |  | 
| 1215     SkPoint center1 = {random->nextUScalar1(), random->nextUScalar1()}; |  | 
| 1216     SkScalar radius1 = random->nextUScalar1() + 0.0001f; // make sure radius1 !=
       0 |  | 
| 1217     SkPoint center2; | 1200     SkPoint center2; | 
| 1218     SkScalar radius2; | 1201     SkScalar radius2; | 
| 1219     SkScalar diffLen; | 1202     SkScalar diffLen; | 
| 1220     do { | 1203     do { | 
| 1221         center2.set(random->nextUScalar1(), random->nextUScalar1()); | 1204         center2.set(d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1()); | 
| 1222         // If the circles share a center than we can't be in the outside case | 1205         // If the circles share a center than we can't be in the outside case | 
| 1223     } while (center1 == center2); | 1206     } while (center1 == center2); | 
| 1224     SkPoint diff = center2 - center1; | 1207     SkPoint diff = center2 - center1; | 
| 1225     diffLen = diff.length(); | 1208     diffLen = diff.length(); | 
| 1226     // Below makes sure that circle one is not contained within circle two | 1209     // Below makes sure that circle one is not contained within circle two | 
| 1227     // and have radius2 >= radius to match sorting on cpu side | 1210     // and have radius2 >= radius to match sorting on cpu side | 
| 1228     radius2 = radius1 + random->nextRangeF(0.f, diffLen); | 1211     radius2 = radius1 + d->fRandom->nextRangeF(0.f, diffLen); | 
| 1229 | 1212 | 
| 1230     SkColor colors[kMaxRandomGradientColors]; | 1213     SkColor colors[kMaxRandomGradientColors]; | 
| 1231     SkScalar stopsArray[kMaxRandomGradientColors]; | 1214     SkScalar stopsArray[kMaxRandomGradientColors]; | 
| 1232     SkScalar* stops = stopsArray; | 1215     SkScalar* stops = stopsArray; | 
| 1233     SkShader::TileMode tm; | 1216     SkShader::TileMode tm; | 
| 1234     int colorCount = RandomGradientParams(random, colors, &stops, &tm); | 1217     int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 
| 1235     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 1218     SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
      1, radius1, | 
| 1236                                                                           center
      2, radius2, | 1219                                                                           center
      2, radius2, | 
| 1237                                                                           colors
      , stops, colorCount, | 1220                                                                           colors
      , stops, colorCount, | 
| 1238                                                                           tm)); | 1221                                                                           tm)); | 
| 1239     SkPaint paint; | 1222     SkPaint paint; | 
| 1240     GrColor paintColor; | 1223     GrColor paintColor; | 
| 1241     GrFragmentProcessor* fp; | 1224     GrFragmentProcessor* fp; | 
| 1242     GrPaint grPaint; | 1225     SkAssertResult(shader->asFragmentProcessor(d->fContext, paint, | 
| 1243     SkAssertResult(shader->asFragmentProcessor(context, paint, | 1226                                                GrTest::TestMatrix(d->fRandom), N
      ULL, | 
| 1244                                                GrTest::TestMatrix(random), NULL, | 1227                                                &paintColor, d->fShaderDataManage
      r, &fp)); | 
| 1245                                                &paintColor, grPaint.getShaderDat
      aManager(), &fp)); |  | 
| 1246     return fp; | 1228     return fp; | 
| 1247 } | 1229 } | 
| 1248 | 1230 | 
| 1249 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess
      or& processor) | 1231 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess
      or& processor) | 
| 1250     : fVSVaryingName(NULL) | 1232     : fVSVaryingName(NULL) | 
| 1251     , fFSVaryingName(NULL) | 1233     , fFSVaryingName(NULL) | 
| 1252     , fCachedCenterX(SK_ScalarMax) | 1234     , fCachedCenterX(SK_ScalarMax) | 
| 1253     , fCachedCenterY(SK_ScalarMax) | 1235     , fCachedCenterY(SK_ScalarMax) | 
| 1254     , fCachedA(SK_ScalarMax) | 1236     , fCachedA(SK_ScalarMax) | 
| 1255     , fCachedB(SK_ScalarMax) | 1237     , fCachedB(SK_ScalarMax) | 
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1397     } else if (type == kEdge_ConicalType) { | 1379     } else if (type == kEdge_ConicalType) { | 
| 1398         set_matrix_edge_conical(shader, &matrix); | 1380         set_matrix_edge_conical(shader, &matrix); | 
| 1399         return Edge2PtConicalEffect::Create(ctx, shaderDataManager, shader, matr
      ix, tm); | 1381         return Edge2PtConicalEffect::Create(ctx, shaderDataManager, shader, matr
      ix, tm); | 
| 1400     } else { | 1382     } else { | 
| 1401         return CircleOutside2PtConicalEffect::Create(ctx, shaderDataManager, sha
      der, matrix, tm, | 1383         return CircleOutside2PtConicalEffect::Create(ctx, shaderDataManager, sha
      der, matrix, tm, | 
| 1402                                                      info); | 1384                                                      info); | 
| 1403     } | 1385     } | 
| 1404 } | 1386 } | 
| 1405 | 1387 | 
| 1406 #endif | 1388 #endif | 
| OLD | NEW | 
|---|