Convert gradient params test helper to a struct
Much less copy-pasted code, fewer implementation details leaking out,
and going to be easier to extend for 4f and color space testing.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2900
Change-Id: Icc468c606aa35fbe82c64bcc398e7e348e0faa20
Reviewed-on: https://skia-review.googlesource.com/2900
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
index a8df3b5..00d8fac 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
+++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
@@ -199,13 +199,10 @@
SkScalar diffLen = diff.length();
radius2 = radius1 + diffLen;
- SkColor colors[kMaxRandomGradientColors];
- SkScalar stopsArray[kMaxRandomGradientColors];
- SkScalar* stops = stopsArray;
- SkShader::TileMode tm;
- int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
+ RandomGradientParams params(d->fRandom);
auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2,
- colors, stops, colorCount, tm);
+ params.fColors, params.fStops,
+ params.fColorCount, params.fTileMode);
SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom);
auto dstColorSpace = GrTest::TestColorSpace(d->fRandom);
sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs(
@@ -470,18 +467,16 @@
center2.set(d->fRandom->nextUScalar1(), d->fRandom->nextUScalar1());
// Need to make sure the centers are not the same or else focal point will be inside
} while (center1 == center2);
- SkPoint diff = center2 - center1;
- SkScalar diffLen = diff.length();
- // Below makes sure that the focal point is not contained within circle two
- radius2 = d->fRandom->nextRangeF(0.f, diffLen);
- SkColor colors[kMaxRandomGradientColors];
- SkScalar stopsArray[kMaxRandomGradientColors];
- SkScalar* stops = stopsArray;
- SkShader::TileMode tm;
- int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
+ SkPoint diff = center2 - center1;
+ SkScalar diffLen = diff.length();
+ // Below makes sure that the focal point is not contained within circle two
+ radius2 = d->fRandom->nextRangeF(0.f, diffLen);
+
+ RandomGradientParams params(d->fRandom);
auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2,
- colors, stops, colorCount, tm);
+ params.fColors, params.fStops,
+ params.fColorCount, params.fTileMode);
SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom);
auto dstColorSpace = GrTest::TestColorSpace(d->fRandom);
sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs(
@@ -680,13 +675,10 @@
// If the circles are identical the factory will give us an empty shader.
} while (radius1 == radius2 && center1 == center2);
- SkColor colors[kMaxRandomGradientColors];
- SkScalar stopsArray[kMaxRandomGradientColors];
- SkScalar* stops = stopsArray;
- SkShader::TileMode tm;
- int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
+ RandomGradientParams params(d->fRandom);
auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2,
- colors, stops, colorCount, tm);
+ params.fColors, params.fStops,
+ params.fColorCount, params.fTileMode);
SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom);
auto dstColorSpace = GrTest::TestColorSpace(d->fRandom);
sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs(
@@ -927,13 +919,10 @@
// If the circles are identical the factory will give us an empty shader.
} while (radius1 == radius2 && center1 == center2);
- SkColor colors[kMaxRandomGradientColors];
- SkScalar stopsArray[kMaxRandomGradientColors];
- SkScalar* stops = stopsArray;
- SkShader::TileMode tm;
- int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
+ RandomGradientParams params(d->fRandom);
auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2,
- colors, stops, colorCount, tm);
+ params.fColors, params.fStops,
+ params.fColorCount, params.fTileMode);
SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom);
auto dstColorSpace = GrTest::TestColorSpace(d->fRandom);
sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs(
@@ -1161,13 +1150,10 @@
// and have radius2 >= radius to match sorting on cpu side
radius2 = radius1 + d->fRandom->nextRangeF(0.f, diffLen);
- SkColor colors[kMaxRandomGradientColors];
- SkScalar stopsArray[kMaxRandomGradientColors];
- SkScalar* stops = stopsArray;
- SkShader::TileMode tm;
- int colorCount = RandomGradientParams(d->fRandom, colors, &stops, &tm);
+ RandomGradientParams params(d->fRandom);
auto shader = SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2,
- colors, stops, colorCount, tm);
+ params.fColors, params.fStops,
+ params.fColorCount, params.fTileMode);
SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom);
auto dstColorSpace = GrTest::TestColorSpace(d->fRandom);
sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs(