Index: gm/gradients.cpp |
diff --git a/gm/gradients.cpp b/gm/gradients.cpp |
index 64da264ddc07f34cc471fe7fe1ab5929689f1a81..9438c33bdc166d38391bb4c1ddcc7a9aacdedc78 100644 |
--- a/gm/gradients.cpp |
+++ b/gm/gradients.cpp |
@@ -361,6 +361,56 @@ private: |
}; |
+class RadialGradient2GM : public GM { |
+public: |
+ RadialGradient2GM() {} |
+ |
+protected: |
+ SkString onShortName() { return SkString("radial_gradient2"); } |
+ virtual SkISize onISize() { return make_isize(400, 400); } |
+ void drawBG(SkCanvas* canvas) { |
+ canvas->drawColor(0xFF000000); |
+ } |
+ |
+ // Reproduces the example given in bug 7671058. |
+ virtual void onDraw(SkCanvas* canvas) { |
+ SkPaint paint1, paint2, paint3; |
+ paint1.setStyle(SkPaint::kFill_Style); |
+ paint2.setStyle(SkPaint::kFill_Style); |
+ paint3.setStyle(SkPaint::kFill_Style); |
+ |
+ const SkColor sweep_colors[] = |
+ { 0xFFFF0000, 0xFFFFFF00, 0xFF00FF00, 0xFF00FFFF, 0xFF0000FF, 0xFFFF00FF, 0xFFFF0000 }; |
+ const SkColor colors1[] = { 0xFFFFFFFF, 0x00000000 }; |
+ const SkColor colors2[] = { 0xFF000000, 0x00000000 }; |
+ |
+ const SkScalar cx = 200, cy = 200, radius = 150; |
+ SkPoint center; |
+ center.set(cx, cy); |
+ |
+ SkAutoTUnref<SkShader> sweep( |
+ SkGradientShader::CreateSweep(cx, cy, sweep_colors, |
+ NULL, SK_ARRAY_COUNT(sweep_colors))); |
+ SkAutoTUnref<SkShader> radial1( |
+ SkGradientShader::CreateRadial(center, radius, colors1, |
+ NULL, SK_ARRAY_COUNT(colors1), |
+ SkShader::kClamp_TileMode)); |
+ SkAutoTUnref<SkShader> radial2( |
+ SkGradientShader::CreateRadial(center, radius, colors2, |
+ NULL, SK_ARRAY_COUNT(colors2), |
+ SkShader::kClamp_TileMode)); |
+ paint1.setShader(sweep); |
+ paint2.setShader(radial1); |
+ paint3.setShader(radial2); |
+ |
+ canvas->drawCircle(cx, cy, radius, paint1); |
+ canvas->drawCircle(cx, cy, radius, paint3); |
+ canvas->drawCircle(cx, cy, radius, paint2); |
+ } |
+ |
+private: |
+ typedef GM INHERITED; |
+}; |
/////////////////////////////////////////////////////////////////////////////// |
@@ -381,4 +431,7 @@ static GMRegistry reg5(MyFactory5); |
static GM* MyFactory6(void*) { return new GradientsViewPerspectiveGM; } |
static GMRegistry reg6(MyFactory6); |
+ |
+static GM* MyFactory7(void*) { return new RadialGradient2GM; } |
+static GMRegistry reg7(MyFactory7); |
} |