aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar mtklein@google.com <mtklein@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-19 18:43:34 +0000
committerGravatar mtklein@google.com <mtklein@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-19 18:43:34 +0000
commit361a72fc4579ce04d112f2894eaa74139f6488c4 (patch)
tree2dfee81505a2b1d732656a9dd04984a99b6d3ad8 /gm
parent8b71ef16ece9ec7f1250f2dc093d9a2282f4c2cc (diff)
add new GM to try to reproduce a bug
BUG=7671058 R=djsollen@google.com Review URL: https://codereview.chromium.org/23299004 git-svn-id: http://skia.googlecode.com/svn/trunk@10798 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm')
-rw-r--r--gm/gradients.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 64da264ddc..9438c33bdc 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);
}