blob: 1d6fb418665b7ec2c1ea917e7fd9e5fc6e87a555 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
reed@android.combd700c32009-01-05 03:34:50 +00008#ifndef SkBenchmark_DEFINED
9#define SkBenchmark_DEFINED
10
11#include "SkRefCnt.h"
12#include "SkPoint.h"
reed@android.come9d00602009-09-02 21:12:42 +000013#include "SkTDict.h"
reed@android.comf523e252009-01-26 23:15:37 +000014#include "SkTRegistry.h"
reed@android.combd700c32009-01-05 03:34:50 +000015
tomhudson@google.comca529d32011-10-28 15:34:49 +000016#ifdef SK_DEBUG
17 #define SkBENCHLOOP(n) 1
18#else
19 #define SkBENCHLOOP(n) n
20#endif
21
reed@android.combd700c32009-01-05 03:34:50 +000022class SkCanvas;
reed@android.com4bc19832009-01-19 20:08:35 +000023class SkPaint;
reed@android.combd700c32009-01-05 03:34:50 +000024
reed@android.com4e635f92009-10-19 17:39:46 +000025class SkTriState {
26public:
27 enum State {
28 kDefault,
29 kTrue,
30 kFalse
31 };
32};
33
reed@android.combd700c32009-01-05 03:34:50 +000034class SkBenchmark : public SkRefCnt {
35public:
robertphillips@google.com15e9d3e2012-06-21 20:25:03 +000036 SK_DECLARE_INST_COUNT(SkBenchmark)
37
reed@android.come9d00602009-09-02 21:12:42 +000038 SkBenchmark(void* defineDict);
reed@android.com4bc19832009-01-19 20:08:35 +000039
reed@android.combd700c32009-01-05 03:34:50 +000040 const char* getName();
41 SkIPoint getSize();
42 void draw(SkCanvas*);
reed@android.com4bc19832009-01-19 20:08:35 +000043
44 void setForceAlpha(int alpha) {
45 fForceAlpha = alpha;
46 }
47
48 void setForceAA(bool aa) {
49 fForceAA = aa;
50 }
reed@android.com29348cb2009-08-04 18:17:15 +000051
52 void setForceFilter(bool filter) {
53 fForceFilter = filter;
54 }
reed@android.com4e635f92009-10-19 17:39:46 +000055
56 void setDither(SkTriState::State state) {
57 fDither = state;
58 }
reed@android.come9d00602009-09-02 21:12:42 +000059
agl@chromium.org652807b2010-04-27 15:47:34 +000060 void setStrokeWidth(SkScalar width) {
61 strokeWidth = width;
62 fHasStrokeWidth = true;
63 }
64
65 SkScalar getStrokeWidth() {
66 return strokeWidth;
67 }
68
69 bool hasStrokeWidth() {
70 return fHasStrokeWidth;
71 }
72
reed@android.come9d00602009-09-02 21:12:42 +000073 const char* findDefine(const char* key) const;
reed@android.com0c9da392010-02-22 19:50:13 +000074 bool findDefine32(const char* key, int32_t* value) const;
75 bool findDefineScalar(const char* key, SkScalar* value) const;
reed@android.come9d00602009-09-02 21:12:42 +000076
reed@android.combd700c32009-01-05 03:34:50 +000077protected:
reed@android.com4bc19832009-01-19 20:08:35 +000078 void setupPaint(SkPaint* paint);
79
reed@android.combd700c32009-01-05 03:34:50 +000080 virtual const char* onGetName() = 0;
reed@android.combd700c32009-01-05 03:34:50 +000081 virtual void onDraw(SkCanvas*) = 0;
reed@android.comf523e252009-01-26 23:15:37 +000082
83 virtual SkIPoint onGetSize();
84
reed@android.com4bc19832009-01-19 20:08:35 +000085private:
reed@android.come9d00602009-09-02 21:12:42 +000086 const SkTDict<const char*>* fDict;
reed@android.com4bc19832009-01-19 20:08:35 +000087 int fForceAlpha;
88 bool fForceAA;
reed@android.com29348cb2009-08-04 18:17:15 +000089 bool fForceFilter;
reed@android.com4e635f92009-10-19 17:39:46 +000090 SkTriState::State fDither;
agl@chromium.org652807b2010-04-27 15:47:34 +000091 bool fHasStrokeWidth;
92 SkScalar strokeWidth;
robertphillips@google.com15e9d3e2012-06-21 20:25:03 +000093
94 typedef SkRefCnt INHERITED;
reed@android.combd700c32009-01-05 03:34:50 +000095};
96
reed@android.comf523e252009-01-26 23:15:37 +000097typedef SkTRegistry<SkBenchmark*, void*> BenchRegistry;
98
reed@android.combd700c32009-01-05 03:34:50 +000099#endif