Index: gm/gradients_no_texture.cpp |
diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp |
index 726a14fd26937171a6a35726b739f5a7d128bab9..00c865c1781186117ded3b83db6a339f8df5722d 100644 |
--- a/gm/gradients_no_texture.cpp |
+++ b/gm/gradients_no_texture.cpp |
@@ -203,6 +203,16 @@ static void make2(ColorPos* rec) { |
rec->construct(colors, pos, N); |
} |
+static void make3(ColorPos* rec) { |
+ const SkColor colors[] = { |
+ SK_ColorRED, SK_ColorBLUE, SK_ColorBLUE, SK_ColorGREEN, SK_ColorGREEN, SK_ColorBLACK, |
+ }; |
+ const SkScalar pos[] = { |
+ 0, 0, 0.5f, 0.5, 1, 1, |
+ }; |
+ rec->construct(colors, pos, SK_ARRAY_COUNT(colors)); |
+} |
+ |
class GradientsManyColorsGM : public GM { |
enum { |
W = 800, |
@@ -219,11 +229,11 @@ protected: |
return SkString(fDither ? "gradients_many" : "gradients_many_nodither"); |
} |
- SkISize onISize() override { return SkISize::Make(850, 100); } |
+ SkISize onISize() override { return SkISize::Make(880, 400); } |
void onDraw(SkCanvas* canvas) override { |
const Proc procs[] = { |
- make0, make1, make2, |
+ make0, make1, make2, make3, |
}; |
const SkPoint pts[] = { |
{ 0, 0 }, |
@@ -234,21 +244,31 @@ protected: |
SkPaint paint; |
paint.setDither(fDither); |
- canvas->translate(20, 20); |
+ canvas->translate(40, 20); |
for (int i = 0; i <= 8; ++i) { |
SkScalar x = r.width() * i / 8; |
canvas->drawLine(x, 0, x, 10000, paint); |
} |
+ // expand the drawing rect so we exercise clampping in the gradients |
+ const SkRect drawR = r.makeOutset(20, 0); |
for (size_t i = 0; i < SK_ARRAY_COUNT(procs); ++i) { |
ColorPos rec; |
procs[i](&rec); |
SkShader* s = SkGradientShader::CreateLinear(pts, rec.fColors, rec.fPos, rec.fCount, |
SkShader::kClamp_TileMode); |
paint.setShader(s)->unref(); |
- canvas->drawRect(r, paint); |
- canvas->translate(0, r.height() + 20); |
+ canvas->drawRect(drawR, paint); |
+ |
+ canvas->save(); |
+ canvas->translate(r.centerX(), r.height() + 4); |
+ canvas->scale(-1, 1); |
+ canvas->translate(-r.centerX(), 0); |
+ canvas->drawRect(drawR, paint); |
+ canvas->restore(); |
+ |
+ canvas->translate(0, r.height() + 2*r.height() + 8); |
} |
} |