blob: d989c4ccecda2c86529eef54e8a2df34f29e68a8 [file] [log] [blame]
tomhudsoncdf34cd2015-03-06 06:15:20 -08001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "gm.h"
9#include "SkBlurMask.h"
10#include "SkBlurMaskFilter.h"
11#include "SkCanvas.h"
12#include "SkDrawFilter.h"
13#include "SkPaint.h"
14
benjaminwagner1c2729c2016-01-22 09:45:14 -080015#ifdef SK_SUPPORT_LEGACY_DRAWFILTER
16
tomhudsoncdf34cd2015-03-06 06:15:20 -080017/**
18 * Initial test coverage for SkDrawFilter.
19 * Draws two rectangles; if draw filters are broken, they will match.
20 * If draw filters are working correctly, the first will be blue and blurred,
21 * the second red and sharp.
22 */
23
reedffab15f2015-04-11 19:29:31 -070024namespace {
tomhudsoncdf34cd2015-03-06 06:15:20 -080025class TestFilter : public SkDrawFilter {
26public:
mtklein36352bf2015-03-25 18:17:31 -070027 bool filter(SkPaint* p, Type) override {
tomhudsoncdf34cd2015-03-06 06:15:20 -080028 p->setColor(SK_ColorRED);
halcanary96fcdcc2015-08-27 07:41:13 -070029 p->setMaskFilter(nullptr);
tomhudsoncdf34cd2015-03-06 06:15:20 -080030 return true;
31 }
32};
reedffab15f2015-04-11 19:29:31 -070033}
tomhudsoncdf34cd2015-03-06 06:15:20 -080034
35class DrawFilterGM : public skiagm::GM {
reedefdfd512016-04-04 10:02:58 -070036 sk_sp<SkMaskFilter> fBlur;
tomhudsoncdf34cd2015-03-06 06:15:20 -080037
38protected:
mtklein36352bf2015-03-25 18:17:31 -070039 SkISize onISize() override {
tomhudsoncdf34cd2015-03-06 06:15:20 -080040 return SkISize::Make(320, 240);
41 }
42
mtklein36352bf2015-03-25 18:17:31 -070043 SkString onShortName() override {
tomhudsoncdf34cd2015-03-06 06:15:20 -080044 return SkString("drawfilter");
45 }
46
mtklein36352bf2015-03-25 18:17:31 -070047 void onOnceBeforeDraw() override {
reedefdfd512016-04-04 10:02:58 -070048 fBlur = SkBlurMaskFilter::Make(kNormal_SkBlurStyle,
tomhudsoncdf34cd2015-03-06 06:15:20 -080049 SkBlurMask::ConvertRadiusToSigma(10.0f),
reedefdfd512016-04-04 10:02:58 -070050 kLow_SkBlurQuality);
tomhudsoncdf34cd2015-03-06 06:15:20 -080051 }
52
mtklein36352bf2015-03-25 18:17:31 -070053 void onDraw(SkCanvas* canvas) override {
tomhudsoncdf34cd2015-03-06 06:15:20 -080054 SkPaint p;
55 p.setColor(SK_ColorBLUE);
reedefdfd512016-04-04 10:02:58 -070056 p.setMaskFilter(fBlur);
tomhudsoncdf34cd2015-03-06 06:15:20 -080057 SkRect r = { 20, 20, 100, 100 };
halcanary96fcdcc2015-08-27 07:41:13 -070058 canvas->setDrawFilter(nullptr);
tomhudsoncdf34cd2015-03-06 06:15:20 -080059 canvas->drawRect(r, p);
reed6ae69692016-09-02 04:56:53 -070060 canvas->setDrawFilter(new TestFilter)->unref();
tomhudsoncdf34cd2015-03-06 06:15:20 -080061 canvas->translate(120.0f, 40.0f);
62 canvas->drawRect(r, p);
halcanary96fcdcc2015-08-27 07:41:13 -070063 canvas->setDrawFilter(nullptr);
tomhudsoncdf34cd2015-03-06 06:15:20 -080064 }
65
66private:
67 typedef GM INHERITED;
68};
69
scroggo96f16e82015-12-10 13:31:59 -080070DEF_GM( return new DrawFilterGM; )
tomhudsoncdf34cd2015-03-06 06:15:20 -080071
benjaminwagner1c2729c2016-01-22 09:45:14 -080072#endif