blob: 945db8082f458d1838df2e48a77355ab0587f9e7 [file] [log] [blame]
reed@android.combd700c32009-01-05 03:34:50 +00001#ifndef SkBenchmark_DEFINED
2#define SkBenchmark_DEFINED
3
4#include "SkRefCnt.h"
5#include "SkPoint.h"
reed@android.come9d00602009-09-02 21:12:42 +00006#include "SkTDict.h"
reed@android.comf523e252009-01-26 23:15:37 +00007#include "SkTRegistry.h"
reed@android.combd700c32009-01-05 03:34:50 +00008
9class SkCanvas;
reed@android.com4bc19832009-01-19 20:08:35 +000010class SkPaint;
reed@android.combd700c32009-01-05 03:34:50 +000011
reed@android.com4e635f92009-10-19 17:39:46 +000012class SkTriState {
13public:
14 enum State {
15 kDefault,
16 kTrue,
17 kFalse
18 };
19};
20
reed@android.combd700c32009-01-05 03:34:50 +000021class SkBenchmark : public SkRefCnt {
22public:
reed@android.come9d00602009-09-02 21:12:42 +000023 SkBenchmark(void* defineDict);
reed@android.com4bc19832009-01-19 20:08:35 +000024
reed@android.combd700c32009-01-05 03:34:50 +000025 const char* getName();
26 SkIPoint getSize();
27 void draw(SkCanvas*);
reed@android.com4bc19832009-01-19 20:08:35 +000028
29 void setForceAlpha(int alpha) {
30 fForceAlpha = alpha;
31 }
32
33 void setForceAA(bool aa) {
34 fForceAA = aa;
35 }
reed@android.com29348cb2009-08-04 18:17:15 +000036
37 void setForceFilter(bool filter) {
38 fForceFilter = filter;
39 }
reed@android.com4e635f92009-10-19 17:39:46 +000040
41 void setDither(SkTriState::State state) {
42 fDither = state;
43 }
reed@android.come9d00602009-09-02 21:12:42 +000044
agl@chromium.org652807b2010-04-27 15:47:34 +000045 void setStrokeWidth(SkScalar width) {
46 strokeWidth = width;
47 fHasStrokeWidth = true;
48 }
49
50 SkScalar getStrokeWidth() {
51 return strokeWidth;
52 }
53
54 bool hasStrokeWidth() {
55 return fHasStrokeWidth;
56 }
57
reed@android.come9d00602009-09-02 21:12:42 +000058 const char* findDefine(const char* key) const;
reed@android.com0c9da392010-02-22 19:50:13 +000059 bool findDefine32(const char* key, int32_t* value) const;
60 bool findDefineScalar(const char* key, SkScalar* value) const;
reed@android.come9d00602009-09-02 21:12:42 +000061
reed@android.combd700c32009-01-05 03:34:50 +000062protected:
reed@android.com4bc19832009-01-19 20:08:35 +000063 void setupPaint(SkPaint* paint);
64
reed@android.combd700c32009-01-05 03:34:50 +000065 virtual const char* onGetName() = 0;
reed@android.combd700c32009-01-05 03:34:50 +000066 virtual void onDraw(SkCanvas*) = 0;
reed@android.comf523e252009-01-26 23:15:37 +000067
68 virtual SkIPoint onGetSize();
69
reed@android.com4bc19832009-01-19 20:08:35 +000070private:
reed@android.come9d00602009-09-02 21:12:42 +000071 const SkTDict<const char*>* fDict;
reed@android.com4bc19832009-01-19 20:08:35 +000072 int fForceAlpha;
73 bool fForceAA;
reed@android.com29348cb2009-08-04 18:17:15 +000074 bool fForceFilter;
reed@android.com4e635f92009-10-19 17:39:46 +000075 SkTriState::State fDither;
agl@chromium.org652807b2010-04-27 15:47:34 +000076 bool fHasStrokeWidth;
77 SkScalar strokeWidth;
reed@android.combd700c32009-01-05 03:34:50 +000078};
79
reed@android.comf523e252009-01-26 23:15:37 +000080typedef SkTRegistry<SkBenchmark*, void*> BenchRegistry;
81
reed@android.combd700c32009-01-05 03:34:50 +000082#endif