blob: 36d7dfd4cf5f7eb8aa36eb59e236e4730ed06038 [file] [log] [blame]
mtklein92007582014-08-01 07:46:52 -07001/*
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 SKPBench_DEFINED
9#define SKPBench_DEFINED
10
11#include "Benchmark.h"
12#include "SkCanvas.h"
13#include "SkPicture.h"
14
15/**
16 * Runs an SkPicture as a benchmark by repeatedly drawing it scaled inside a device clip.
17 */
18class SKPBench : public Benchmark {
19public:
robertphillips5b693772014-11-21 06:19:36 -080020 SKPBench(const char* name, const SkPicture*, const SkIRect& devClip, SkScalar scale,
21 bool useMultiPictureDraw);
22 ~SKPBench() SK_OVERRIDE;
mtklein92007582014-08-01 07:46:52 -070023
24protected:
robertphillips5b693772014-11-21 06:19:36 -080025 const char* onGetName() SK_OVERRIDE;
26 const char* onGetUniqueName() SK_OVERRIDE;
27 void onPerCanvasPreDraw(SkCanvas*) SK_OVERRIDE;
28 void onPerCanvasPostDraw(SkCanvas*) SK_OVERRIDE;
29 bool isSuitableFor(Backend backend) SK_OVERRIDE;
30 void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE;
31 SkIPoint onGetSize() SK_OVERRIDE;
mtklein92007582014-08-01 07:46:52 -070032
33private:
34 SkAutoTUnref<const SkPicture> fPic;
35 const SkIRect fClip;
36 const SkScalar fScale;
37 SkString fName;
mtklein96289052014-09-10 12:05:59 -070038 SkString fUniqueName;
mtklein92007582014-08-01 07:46:52 -070039
robertphillips5b693772014-11-21 06:19:36 -080040 const bool fUseMultiPictureDraw;
41 SkTDArray<SkSurface*> fSurfaces; // for MultiPictureDraw
42 SkTDArray<SkIRect> fTileRects; // for MultiPictureDraw
43
mtklein92007582014-08-01 07:46:52 -070044 typedef Benchmark INHERITED;
45};
46
47#endif