2 * Copyright 2014 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #ifndef SKPBench_DEFINED
9 #define SKPBench_DEFINED
11 #include "Benchmark.h"
13 #include "SkPicture.h"
16 * Runs an SkPicture as a benchmark by repeatedly drawing it scaled inside a device clip.
18 class SKPBench : public Benchmark {
20 SKPBench(const char* name, const SkPicture*, const SkIRect& devClip, SkScalar scale,
21 bool useMultiPictureDraw);
22 ~SKPBench() SK_OVERRIDE;
25 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;
34 SkAutoTUnref<const SkPicture> fPic;
36 const SkScalar fScale;
40 const bool fUseMultiPictureDraw;
41 SkTDArray<SkSurface*> fSurfaces; // for MultiPictureDraw
42 SkTDArray<SkIRect> fTileRects; // for MultiPictureDraw
44 typedef Benchmark INHERITED;