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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 // and both circles are touching on an edge | 200 // and both circles are touching on an edge |
201 SkPoint diff = center2 - center1; | 201 SkPoint diff = center2 - center1; |
202 SkScalar diffLen = diff.length(); | 202 SkScalar diffLen = diff.length(); |
203 radius2 = radius1 + diffLen; | 203 radius2 = radius1 + diffLen; |
204 | 204 |
205 SkColor colors[kMaxRandomGradientColors]; | 205 SkColor colors[kMaxRandomGradientColors]; |
206 SkScalar stopsArray[kMaxRandomGradientColors]; | 206 SkScalar stopsArray[kMaxRandomGradientColors]; |
207 SkScalar* stops = stopsArray; | 207 SkScalar* stops = stopsArray; |
208 SkShader::TileMode tm; | 208 SkShader::TileMode tm; |
209 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 209 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); |
210 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
1, radius1, | 210 auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center
2, radius2, |
211 center
2, radius2, | 211 colors, stops, colorCoun
t, tm); |
212 colors
, stops, colorCount, | |
213 tm)); | |
214 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, | 212 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, |
215 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); | 213 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); |
216 GrAlwaysAssert(fp); | 214 GrAlwaysAssert(fp); |
217 return fp; | 215 return fp; |
218 } | 216 } |
219 | 217 |
220 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) | 218 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) |
221 : fVSVaryingName(nullptr) | 219 : fVSVaryingName(nullptr) |
222 , fFSVaryingName(nullptr) | 220 , fFSVaryingName(nullptr) |
223 , fCachedRadius(-SK_ScalarMax) | 221 , fCachedRadius(-SK_ScalarMax) |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 SkPoint diff = center2 - center1; | 475 SkPoint diff = center2 - center1; |
478 SkScalar diffLen = diff.length(); | 476 SkScalar diffLen = diff.length(); |
479 // Below makes sure that the focal point is not contained within circle
two | 477 // Below makes sure that the focal point is not contained within circle
two |
480 radius2 = d->fRandom->nextRangeF(0.f, diffLen); | 478 radius2 = d->fRandom->nextRangeF(0.f, diffLen); |
481 | 479 |
482 SkColor colors[kMaxRandomGradientColors]; | 480 SkColor colors[kMaxRandomGradientColors]; |
483 SkScalar stopsArray[kMaxRandomGradientColors]; | 481 SkScalar stopsArray[kMaxRandomGradientColors]; |
484 SkScalar* stops = stopsArray; | 482 SkScalar* stops = stopsArray; |
485 SkShader::TileMode tm; | 483 SkShader::TileMode tm; |
486 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 484 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); |
487 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
1, radius1, | 485 auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center
2, radius2, |
488 center
2, radius2, | 486 colors, stops, colorCoun
t, tm); |
489 colors
, stops, colorCount, | |
490 tm)); | |
491 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, | 487 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, |
492 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); | 488 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); |
493 GrAlwaysAssert(fp); | 489 GrAlwaysAssert(fp); |
494 return fp; | 490 return fp; |
495 } | 491 } |
496 | 492 |
497 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor
& processor) | 493 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor
& processor) |
498 : fVSVaryingName(nullptr) | 494 : fVSVaryingName(nullptr) |
499 , fFSVaryingName(nullptr) | 495 , fFSVaryingName(nullptr) |
500 , fCachedFocal(SK_ScalarMax) { | 496 , fCachedFocal(SK_ScalarMax) { |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 SkScalar diffLen = diff.length(); | 681 SkScalar diffLen = diff.length(); |
686 radius2 = diffLen + increase; | 682 radius2 = diffLen + increase; |
687 // If the circles are identical the factory will give us an empty shader
. | 683 // If the circles are identical the factory will give us an empty shader
. |
688 } while (radius1 == radius2 && center1 == center2); | 684 } while (radius1 == radius2 && center1 == center2); |
689 | 685 |
690 SkColor colors[kMaxRandomGradientColors]; | 686 SkColor colors[kMaxRandomGradientColors]; |
691 SkScalar stopsArray[kMaxRandomGradientColors]; | 687 SkScalar stopsArray[kMaxRandomGradientColors]; |
692 SkScalar* stops = stopsArray; | 688 SkScalar* stops = stopsArray; |
693 SkShader::TileMode tm; | 689 SkShader::TileMode tm; |
694 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 690 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); |
695 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
1, radius1, | 691 auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center
2, radius2, |
696 center
2, radius2, | 692 colors, stops, colorCoun
t, tm); |
697 colors
, stops, colorCount, | |
698 tm)); | |
699 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, | 693 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, |
700 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); | 694 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); |
701 GrAlwaysAssert(fp); | 695 GrAlwaysAssert(fp); |
702 return fp; | 696 return fp; |
703 } | 697 } |
704 | 698 |
705 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) | 699 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) |
706 : fVSVaryingName(nullptr) | 700 : fVSVaryingName(nullptr) |
707 , fFSVaryingName(nullptr) | 701 , fFSVaryingName(nullptr) |
708 , fCachedFocal(SK_ScalarMax) {} | 702 , fCachedFocal(SK_ScalarMax) {} |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 SkScalar diffLen = diff.length(); | 927 SkScalar diffLen = diff.length(); |
934 radius2 = radius1 + diffLen + increase; | 928 radius2 = radius1 + diffLen + increase; |
935 // If the circles are identical the factory will give us an empty shader
. | 929 // If the circles are identical the factory will give us an empty shader
. |
936 } while (radius1 == radius2 && center1 == center2); | 930 } while (radius1 == radius2 && center1 == center2); |
937 | 931 |
938 SkColor colors[kMaxRandomGradientColors]; | 932 SkColor colors[kMaxRandomGradientColors]; |
939 SkScalar stopsArray[kMaxRandomGradientColors]; | 933 SkScalar stopsArray[kMaxRandomGradientColors]; |
940 SkScalar* stops = stopsArray; | 934 SkScalar* stops = stopsArray; |
941 SkShader::TileMode tm; | 935 SkShader::TileMode tm; |
942 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 936 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); |
943 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
1, radius1, | 937 auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center
2, radius2, |
944 center
2, radius2, | 938 colors, stops, colorCoun
t, tm); |
945 colors
, stops, colorCount, | |
946 tm)); | |
947 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, | 939 const GrFragmentProcessor* fp = shader->asFragmentProcessor(d->fContext, |
948 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); | 940 GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality); |
949 GrAlwaysAssert(fp); | 941 GrAlwaysAssert(fp); |
950 return fp; | 942 return fp; |
951 } | 943 } |
952 | 944 |
953 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor
& processor) | 945 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor
& processor) |
954 : fVSVaryingName(nullptr) | 946 : fVSVaryingName(nullptr) |
955 , fFSVaryingName(nullptr) | 947 , fFSVaryingName(nullptr) |
956 , fCachedCenterX(SK_ScalarMax) | 948 , fCachedCenterX(SK_ScalarMax) |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1166 diffLen = diff.length(); | 1158 diffLen = diff.length(); |
1167 // Below makes sure that circle one is not contained within circle two | 1159 // Below makes sure that circle one is not contained within circle two |
1168 // and have radius2 >= radius to match sorting on cpu side | 1160 // and have radius2 >= radius to match sorting on cpu side |
1169 radius2 = radius1 + d->fRandom->nextRangeF(0.f, diffLen); | 1161 radius2 = radius1 + d->fRandom->nextRangeF(0.f, diffLen); |
1170 | 1162 |
1171 SkColor colors[kMaxRandomGradientColors]; | 1163 SkColor colors[kMaxRandomGradientColors]; |
1172 SkScalar stopsArray[kMaxRandomGradientColors]; | 1164 SkScalar stopsArray[kMaxRandomGradientColors]; |
1173 SkScalar* stops = stopsArray; | 1165 SkScalar* stops = stopsArray; |
1174 SkShader::TileMode tm; | 1166 SkShader::TileMode tm; |
1175 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); | 1167 int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm); |
1176 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center
1, radius1, | 1168 auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center
2, radius2, |
1177 center
2, radius2, | 1169 colors, stops, colorCoun
t, tm); |
1178 colors
, stops, colorCount, | |
1179 tm)); | |
1180 const GrFragmentProcessor* fp = shader->asFragmentProcessor( | 1170 const GrFragmentProcessor* fp = shader->asFragmentProcessor( |
1181 d->fContext,GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality)
; | 1171 d->fContext,GrTest::TestMatrix(d->fRandom), NULL, kNone_SkFilterQuality)
; |
1182 GrAlwaysAssert(fp); | 1172 GrAlwaysAssert(fp); |
1183 return fp; | 1173 return fp; |
1184 } | 1174 } |
1185 | 1175 |
1186 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess
or& processor) | 1176 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess
or& processor) |
1187 : fVSVaryingName(nullptr) | 1177 : fVSVaryingName(nullptr) |
1188 , fFSVaryingName(nullptr) | 1178 , fFSVaryingName(nullptr) |
1189 , fCachedCenterX(SK_ScalarMax) | 1179 , fCachedCenterX(SK_ScalarMax) |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1333 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); | 1323 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf
o); |
1334 } else if (type == kEdge_ConicalType) { | 1324 } else if (type == kEdge_ConicalType) { |
1335 set_matrix_edge_conical(shader, &matrix); | 1325 set_matrix_edge_conical(shader, &matrix); |
1336 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); | 1326 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); |
1337 } else { | 1327 } else { |
1338 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); | 1328 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in
fo); |
1339 } | 1329 } |
1340 } | 1330 } |
1341 | 1331 |
1342 #endif | 1332 #endif |
OLD | NEW |