1 /*
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 
8 #ifndef RecordingBench_DEFINED
9 #define RecordingBench_DEFINED
10 
11 #include "Benchmark.h"
12 #include "SkPicture.h"
13 #include "SkLiteDL.h"
14 
15 class PictureCentricBench : public Benchmark {
16 public:
17     PictureCentricBench(const char* name, const SkPicture*);
18 
19 protected:
20     const char* onGetName() override;
21     bool isSuitableFor(Backend) override;
22     SkIPoint onGetSize() override;
23 
24 protected:
25     sk_sp<const SkPicture> fSrc;
26     SkString fName;
27 
28     typedef Benchmark INHERITED;
29 };
30 
31 class RecordingBench : public PictureCentricBench {
32 public:
33     RecordingBench(const char* name, const SkPicture*, bool useBBH, bool lite);
34 
35 protected:
36     void onDraw(int loops, SkCanvas*) override;
37 
38 private:
39     std::unique_ptr<SkLiteDL> fDL;
40     bool fUseBBH;
41 
42     typedef PictureCentricBench INHERITED;
43 };
44 
45 class DeserializePictureBench : public Benchmark {
46 public:
47     DeserializePictureBench(const char* name, sk_sp<SkData> encodedPicture);
48 
49 protected:
50     const char* onGetName() override;
51     bool isSuitableFor(Backend) override;
52     SkIPoint onGetSize() override;
53     void onDraw(int loops, SkCanvas*) override;
54 
55 private:
56     SkString      fName;
57     sk_sp<SkData> fEncodedPicture;
58 
59     typedef Benchmark INHERITED;
60 };
61 
62 #endif//RecordingBench_DEFINED
63