1d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org/*
2d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org* Copyright 2014 Google Inc.
3d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org*
4d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org* Use of this source code is governed by a BSD-style license that can be
5d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org* found in the LICENSE file.
6d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org*/
7d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
8d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org#include "gm.h"
9d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org#include "SkBlurMask.h"
10d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org#include "SkBlurMaskFilter.h"
11d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org#include "SkCanvas.h"
12d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org#include "SkPaint.h"
13d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org#include "SkString.h"
14d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
15d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.orgclass BlurCirclesGM : public skiagm::GM {
16d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.orgpublic:
17d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    BlurCirclesGM()
18d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        : fName("blurcircles") {
19d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    }
20d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
21d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.orgprotected:
22d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    virtual uint32_t onGetFlags() const SK_OVERRIDE {
23d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        return kSkipTiled_Flag;
24d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    }
25d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
26d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    virtual SkString onShortName() SK_OVERRIDE {
27d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        return fName;
28d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    }
29d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
30d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    virtual SkISize onISize() SK_OVERRIDE {
31d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        return SkISize::Make(950, 950);
32d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    }
33d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
34d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
35d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        canvas->scale(1.5f, 1.5f);
36d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        canvas->translate(50,50);
37d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
38d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        const float blurRadii[] = { 1,5,10,20 };
39d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        const int circleRadii[] = { 5,10,25,50 };
40d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        for (size_t i = 0; i < SK_ARRAY_COUNT(blurRadii); ++i) {
41d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org            SkAutoCanvasRestore autoRestore(canvas, true);
42d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org            canvas->translate(0, SkIntToScalar(150*i));
43d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org            for (size_t j = 0; j < SK_ARRAY_COUNT(circleRadii); ++j) {
44d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                SkMaskFilter* filter = SkBlurMaskFilter::Create(
45d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                    kNormal_SkBlurStyle,
46d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                    SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i])),
47d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                    SkBlurMaskFilter::kHighQuality_BlurFlag);
48d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                SkPaint paint;
49d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                paint.setColor(SK_ColorBLACK);
50d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                paint.setMaskFilter(filter)->unref();
51d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
52d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                canvas->drawCircle(SkIntToScalar(50),SkIntToScalar(50),SkIntToScalar(circleRadii[j]),paint);
53d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org                canvas->translate(SkIntToScalar(150), 0);
54d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org            }
55d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org        }
56d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    }
57d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.orgprivate:
58d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    const SkString  fName;
59d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
60d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org    typedef         skiagm::GM INHERITED;
61d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org};
62d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.org
63d53b22754da8b15b494c53d6ad020cea6110c255commit-bot@chromium.orgDEF_GM(return new BlurCirclesGM();)
64