blob: 20ae302db6441fdf17ffd30bad580e7b953fd68a [file] [log] [blame]
qiankun.miaoe18a5302014-12-09 17:47:05 -08001/*
2* Copyright 2014 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
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "bench/Benchmark.h"
9#include "include/core/SkCanvas.h"
10#include "include/core/SkMaskFilter.h"
11#include "include/core/SkPaint.h"
12#include "include/core/SkPath.h"
13#include "include/core/SkRect.h"
14#include "include/core/SkString.h"
qiankun.miaoe18a5302014-12-09 17:47:05 -080015
16class BlurRectsBench : public Benchmark {
17public:
18 BlurRectsBench(SkRect outer, SkRect inner, SkScalar radius) {
19 fRadius = radius;
20 fOuter = outer;
21 fInner = inner;
22 }
23
mtklein36352bf2015-03-25 18:17:31 -070024 const char* onGetName() override {
qiankun.miaoe18a5302014-12-09 17:47:05 -080025 return fName.c_str();
26 }
27
28 void setName(const SkString& name) {
29 fName = name;
30 }
31
mtkleina1ebeb22015-10-01 09:43:39 -070032 void onDraw(int loops, SkCanvas* canvas) override {
qiankun.miaoe18a5302014-12-09 17:47:05 -080033 SkPaint paint;
Mike Reed1be1f8d2018-03-14 13:01:17 -040034 paint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, fRadius));
qiankun.miaoe18a5302014-12-09 17:47:05 -080035
36 SkPath path;
Mike Reed30bc5272019-11-22 18:34:02 +000037 path.addRect(fOuter, SkPathDirection::kCW);
38 path.addRect(fInner, SkPathDirection::kCW);
qiankun.miaoe18a5302014-12-09 17:47:05 -080039
40 for (int i = 0; i < loops; i++) {
41 canvas->drawPath(path, paint);
42 }
43 }
44
45private:
46 SkString fName;
47 SkRect fOuter;
48 SkRect fInner;
49 SkScalar fRadius;
50
John Stiles7571f9e2020-09-02 22:42:33 -040051 using INHERITED = Benchmark;
qiankun.miaoe18a5302014-12-09 17:47:05 -080052};
53
54class BlurRectsNinePatchBench: public BlurRectsBench {
55public:
56 BlurRectsNinePatchBench(SkRect outer, SkRect inner, SkScalar radius)
57 : INHERITED(outer, inner, radius) {
58 this->setName(SkString("blurrectsninepatch"));
59 }
60private:
John Stiles7571f9e2020-09-02 22:42:33 -040061 using INHERITED = BlurRectsBench;
qiankun.miaoe18a5302014-12-09 17:47:05 -080062};
63
64class BlurRectsNonNinePatchBench: public BlurRectsBench {
65public:
66 BlurRectsNonNinePatchBench(SkRect outer, SkRect inner, SkScalar radius)
67 : INHERITED(outer, inner, radius) {
68 SkString name;
69 this->setName(SkString("blurrectsnonninepatch"));
70 }
71private:
John Stiles7571f9e2020-09-02 22:42:33 -040072 using INHERITED = BlurRectsBench;
qiankun.miaoe18a5302014-12-09 17:47:05 -080073};
74
75DEF_BENCH(return new BlurRectsNinePatchBench(SkRect::MakeXYWH(10, 10, 100, 100),
76 SkRect::MakeXYWH(20, 20, 60, 60),
77 2.3f);)
78DEF_BENCH(return new BlurRectsNonNinePatchBench(SkRect::MakeXYWH(10, 10, 100, 100),
79 SkRect::MakeXYWH(50, 50, 10, 10),
80 4.3f);)