diff options
author | 2013-08-19 18:43:34 +0000 | |
---|---|---|
committer | 2013-08-19 18:43:34 +0000 | |
commit | 361a72fc4579ce04d112f2894eaa74139f6488c4 (patch) | |
tree | 2dfee81505a2b1d732656a9dd04984a99b6d3ad8 /gm | |
parent | 8b71ef16ece9ec7f1250f2dc093d9a2282f4c2cc (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.cpp | 53 |
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); } |