diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-28 19:49:24 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-28 19:49:24 +0000 |
commit | 3d8bf232bd2e4903d2ee2bb575637e7555361604 (patch) | |
tree | d3620b39e192ef03c31f8b5ac260c2cb4415bcfb /gm | |
parent | 0974a618fe86ba84d9ba5f447bc0bcf76ae8595e (diff) |
Fast path for blurred round rects -- blur a small 9patch rect on the CPU
And nonlinearly stretch the resulting texture across proxy geometry.
BUG=
Committed: http://code.google.com/p/skia/source/detail?r=14392
Committed: http://code.google.com/p/skia/source/detail?r=14404
R=bsalomon@google.com, reed@google.com
Author: humper@google.com
Review URL: https://codereview.chromium.org/248613004
git-svn-id: http://skia.googlecode.com/svn/trunk@14420 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm')
-rw-r--r-- | gm/blurroundrect.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp index 15f3efc4a4..6221480d55 100644 --- a/gm/blurroundrect.cpp +++ b/gm/blurroundrect.cpp @@ -106,30 +106,32 @@ protected: } virtual SkISize onISize() SK_OVERRIDE { - return SkISize::Make(750, 750); + return SkISize::Make(950, 950); } virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { canvas->scale(1.5f, 1.5f); + canvas->translate(50,50); - const int blurRadii[] = { 1, 3, 6, 10 }; - const int cornerRadii[] = { 1, 3, 6, 10 }; + const float blurRadii[] = { 1,5,10,20 }; + const int cornerRadii[] = { 1,5,10,20 }; const SkRect r = SkRect::MakeWH(SkIntToScalar(100), SkIntToScalar(100)); for (size_t i = 0; i < SK_ARRAY_COUNT(blurRadii); ++i) { SkAutoCanvasRestore autoRestore(canvas, true); - canvas->translate(0, (r.height() + SkIntToScalar(20)) * i); + canvas->translate(0, (r.height() + SkIntToScalar(50)) * i); for (size_t j = 0; j < SK_ARRAY_COUNT(cornerRadii); ++j) { SkMaskFilter* filter = SkBlurMaskFilter::Create( kNormal_SkBlurStyle, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i]))); + SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i])), + SkBlurMaskFilter::kHighQuality_BlurFlag); SkPaint paint; - paint.setColor(SK_ColorBLUE); + paint.setColor(SK_ColorBLACK); paint.setMaskFilter(filter)->unref(); SkRRect rrect; rrect.setRectXY(r, SkIntToScalar(cornerRadii[j]), SkIntToScalar(cornerRadii[j])); canvas->drawRRect(rrect, paint); - canvas->translate(r.width() + SkIntToScalar(10), 0); + canvas->translate(r.width() + SkIntToScalar(50), 0); } } } |