1/*
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 "bench/Benchmark.h"
9#include "include/core/SkCanvas.h"
10#include "include/core/SkPictureRecorder.h"
11#include "include/core/SkRRect.h"
12
13class ClipOverheadRecordingBench : public Benchmark {
14public:
15    ClipOverheadRecordingBench() {}
16
17private:
18    const char* onGetName() override { return "clip_overhead_recording"; }
19    bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
20
21    void onDraw(int loops, SkCanvas*) override {
22        SkPictureRecorder rec;
23
24        for (int loop = 0; loop < loops; loop++) {
25            SkCanvas* canvas = rec.beginRecording({0,0, 2000,3000});
26
27            SkPaint paint;
28            SkRRect rrect;
29            rrect.setOval({0, 0, 1000, 1000});
30            for (int i = 0; i < 1000; i++) {
31                canvas->save();
32                    canvas->translate(10, 10);
33                    canvas->clipRect({10,10, 1000, 1000});
34                    canvas->drawRRect(rrect, paint);
35                canvas->restore();
36            }
37
38            (void)rec.finishRecordingAsPicture();
39        }
40    }
41};
42DEF_BENCH( return new ClipOverheadRecordingBench; )
43