[4fGradient] Relax interval checks for SkGradientShaderBase also
Similar to https://skia-review.googlesource.com/8270, treat intervals
as closed at both extremities in the 4f gradient fallback impl also.
BUG=skia:6212
Change-Id: I7f164868202ae6a0f76cbcdbcbf8e62db12a1bd4
Reviewed-on: https://skia-review.googlesource.com/8277
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
diff --git a/tests/GradientTest.cpp b/tests/GradientTest.cpp
index dc8a2bd..4cdd0c9 100644
--- a/tests/GradientTest.cpp
+++ b/tests/GradientTest.cpp
@@ -370,8 +370,18 @@
// "Interesting" fuzzer values.
static void test_linear_fuzzer(skiatest::Reporter*) {
static const SkColor gColors0[] = { 0x30303030, 0x30303030 };
+ static const SkColor gColors1[] = { 0x30303030, 0x30303030, 0x30303030 };
+
+ static const SkScalar gPos1[] = { 0, 0, 1 };
+
static const SkScalar gMatrix0[9] =
- { 6.40969056e-10f, 0, 6.40969056e-10f, 0, 4.42539023e-39f, 6.40969056e-10f, 0, 0, 1 };
+ { 6.40969056e-10f, 0 , 6.40969056e-10f,
+ 0 , 4.42539023e-39f, 6.40969056e-10f,
+ 0 , 0 , 1 };
+ static const SkScalar gMatrix1[9] =
+ { -2.75294113f , 6.40969056e-10f, 6.40969056e-10f,
+ 6.40969056e-10f, 6.40969056e-10f, -3.32810161e+24f,
+ 6.40969056e-10f, 6.40969056e-10f, 0 };
static const struct {
SkPoint fPts[2];
@@ -384,14 +394,24 @@
const SkScalar* fGlobalMatrix;
} gConfigs[] = {
{
- {{0, -2.752941f}, {0, 0}},
- gColors0,
- nullptr,
- SK_ARRAY_COUNT(gColors0),
- SkShader::kClamp_TileMode,
- 0,
- gMatrix0,
- nullptr
+ {{0, -2.752941f}, {0, 0}},
+ gColors0,
+ nullptr,
+ SK_ARRAY_COUNT(gColors0),
+ SkShader::kClamp_TileMode,
+ 0,
+ gMatrix0,
+ nullptr
+ },
+ {
+ {{4.42539023e-39f, -4.42539023e-39f}, {9.78041162e-15f, 4.42539023e-39f}},
+ gColors1,
+ gPos1,
+ SK_ARRAY_COUNT(gColors1),
+ SkShader::kClamp_TileMode,
+ 0,
+ nullptr,
+ gMatrix1
},
};
@@ -417,6 +437,13 @@
config.fTileMode,
config.fFlags | forceFlags,
localMatrix.getMaybeNull()));
+ if (config.fGlobalMatrix) {
+ SkMatrix m;
+ m.set9(config.fGlobalMatrix);
+ canvas->save();
+ canvas->concat(m);
+ }
+
canvas->drawPaint(paint);
}
}