aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-01-10 23:10:13 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-01-10 23:10:13 +0000
commit7cced56550caf1607f7058e229e06465b641482b (patch)
tree71b174c61d0a4e07602c04c1492ce5775d14788d
parent4ee16bfaedb14aff8cf102f1f0722ff2529a9699 (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.cpp73
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;