• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
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  */
8 #ifndef SkBenchmark_DEFINED
9 #define SkBenchmark_DEFINED
10 
11 #include "SkRefCnt.h"
12 #include "SkPoint.h"
13 #include "SkTDict.h"
14 #include "SkTRegistry.h"
15 
16 #ifdef SK_DEBUG
17     #define SkBENCHLOOP(n) 1
18 #else
19     #define SkBENCHLOOP(n) n
20 #endif
21 
22 class SkCanvas;
23 class SkPaint;
24 
25 class SkTriState {
26 public:
27     enum State {
28         kDefault,
29         kTrue,
30         kFalse
31     };
32 };
33 
34 class SkBenchmark : public SkRefCnt {
35 public:
36     SkBenchmark(void* defineDict);
37 
38     const char* getName();
39     SkIPoint getSize();
40     void draw(SkCanvas*);
41 
setForceAlpha(int alpha)42     void setForceAlpha(int alpha) {
43         fForceAlpha = alpha;
44     }
45 
setForceAA(bool aa)46     void setForceAA(bool aa) {
47         fForceAA = aa;
48     }
49 
setForceFilter(bool filter)50     void setForceFilter(bool filter) {
51         fForceFilter = filter;
52     }
53 
setDither(SkTriState::State state)54     void setDither(SkTriState::State state) {
55         fDither = state;
56     }
57 
setStrokeWidth(SkScalar width)58     void setStrokeWidth(SkScalar width) {
59       strokeWidth = width;
60       fHasStrokeWidth = true;
61     }
62 
getStrokeWidth()63     SkScalar getStrokeWidth() {
64       return strokeWidth;
65     }
66 
hasStrokeWidth()67     bool hasStrokeWidth() {
68       return fHasStrokeWidth;
69     }
70 
71     const char* findDefine(const char* key) const;
72     bool findDefine32(const char* key, int32_t* value) const;
73     bool findDefineScalar(const char* key, SkScalar* value) const;
74 
75 protected:
76     void setupPaint(SkPaint* paint);
77 
78     virtual const char* onGetName() = 0;
79     virtual void onDraw(SkCanvas*) = 0;
80 
81     virtual SkIPoint onGetSize();
82 
83 private:
84     const SkTDict<const char*>* fDict;
85     int     fForceAlpha;
86     bool    fForceAA;
87     bool    fForceFilter;
88     SkTriState::State  fDither;
89     bool    fHasStrokeWidth;
90     SkScalar strokeWidth;
91 };
92 
93 typedef SkTRegistry<SkBenchmark*, void*> BenchRegistry;
94 
95 #endif
96