diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-01-10 23:10:13 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-01-10 23:10:13 +0000 |
commit | 7cced56550caf1607f7058e229e06465b641482b (patch) | |
tree | 71b174c61d0a4e07602c04c1492ce5775d14788d | |
parent | 4ee16bfaedb14aff8cf102f1f0722ff2529a9699 (diff) |
merge multiple blurrect GMs into one GM and add versions
BUG=skia:1998
R=reed@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/134533006
git-svn-id: http://skia.googlecode.com/svn/trunk@13034 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | gm/blurrect.cpp | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp index 6b50fe1a13..3197eb6fc6 100644 --- a/gm/blurrect.cpp +++ b/gm/blurrect.cpp @@ -57,58 +57,62 @@ static void draw_donut_skewed(SkCanvas* canvas, const SkRect& r, const SkPaint& typedef void (*PaintProc)(SkPaint*, SkScalar width); -static const char* gBlurStyle2Name[] = { - "normal", - "solid", - "outer", - "inner" -}; - class BlurRectGM : public skiagm::GM { - SkAutoTUnref<SkMaskFilter> fMaskFilter; + SkAutoTUnref<SkMaskFilter> fMaskFilters[SkBlurMaskFilter::kBlurStyleCount]; SkString fName; - PaintProc fPProc; SkAlpha fAlpha; public: - BlurRectGM(const char name[], PaintProc pproc, U8CPU alpha, - SkBlurMaskFilter::BlurStyle bs) - : fMaskFilter(SkBlurMaskFilter::Create(bs, - SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(STROKE_WIDTH/2)), - SkBlurMaskFilter::kHighQuality_BlurFlag)) - , fName(name) - , fPProc(pproc) - , fAlpha(SkToU8(alpha)) { - fName.appendf("_%s", gBlurStyle2Name[bs]); + BlurRectGM(const char name[], U8CPU alpha) + : fName(name) + , fAlpha(SkToU8(alpha)) { } protected: + virtual void onOnceBeforeDraw() SK_OVERRIDE { + for (int i = 0; i < SkBlurMaskFilter::kBlurStyleCount; ++i) { + fMaskFilters[i].reset(SkBlurMaskFilter::Create((SkBlurMaskFilter::BlurStyle) i, + SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(STROKE_WIDTH/2)), + SkBlurMaskFilter::kHighQuality_BlurFlag)); + } + } + virtual SkString onShortName() { return fName; } virtual SkISize onISize() { - return SkISize::Make(640, 480); + return SkISize::Make(440, 820); } virtual void onDraw(SkCanvas* canvas) { canvas->translate(STROKE_WIDTH*3/2, STROKE_WIDTH*3/2); - SkRect r = { 0, 0, 250, 120 }; + SkRect r = { 0, 0, 100, 50 }; + SkScalar scales[] = { SK_Scalar1, 0.6f }; - SkPaint paint; - paint.setMaskFilter(fMaskFilter); - if (fPProc) { - fPProc(&paint, r.width()); - } - paint.setAlpha(fAlpha); + for (size_t s = 0; s < SK_ARRAY_COUNT(scales); ++s) { + canvas->save(); + for (size_t f = 0; f < SK_ARRAY_COUNT(fMaskFilters); ++f) { + SkPaint paint; + paint.setMaskFilter(fMaskFilters[f]); + paint.setAlpha(fAlpha); + + static const Proc procs[] = { + fill_rect, draw_donut, draw_donut_skewed + }; - static const Proc procs[] = { - fill_rect, draw_donut, draw_donut_skewed - }; + canvas->save(); + canvas->scale(scales[s], scales[s]); + this->drawProcs(canvas, r, paint, false, procs, SK_ARRAY_COUNT(procs)); + canvas->translate(r.width() * 4/3, 0); + this->drawProcs(canvas, r, paint, true, procs, SK_ARRAY_COUNT(procs)); + canvas->restore(); - this->drawProcs(canvas, r, paint, false, procs, SK_ARRAY_COUNT(procs)); - canvas->translate(r.width() * 4/3, 0); - this->drawProcs(canvas, r, paint, true, procs, SK_ARRAY_COUNT(procs)); + canvas->translate(0, SK_ARRAY_COUNT(procs) * r.height() * 4/3 * scales[s]); + } + canvas->restore(); + canvas->translate(2 * r.width() * 4/3 * scales[s], 0); + } } virtual uint32_t onGetFlags() const { return kSkipPipe_Flag; } @@ -304,10 +308,7 @@ private: ////////////////////////////////////////////////////////////////////////////// -DEF_GM(return new BlurRectGM("blurrect", NULL, 0xFF, SkBlurMaskFilter::kNormal_BlurStyle);) -DEF_GM(return new BlurRectGM("blurrect", NULL, 0xFF, SkBlurMaskFilter::kSolid_BlurStyle);) -DEF_GM(return new BlurRectGM("blurrect", NULL, 0xFF, SkBlurMaskFilter::kOuter_BlurStyle);) -DEF_GM(return new BlurRectGM("blurrect", NULL, 0xFF, SkBlurMaskFilter::kInner_BlurStyle);) +DEF_GM(return new BlurRectGM("blurrects", 0xFF);) static const SkScalar kBig = 20; static const SkScalar kSmall = 2; |