Benchmark.h revision ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976e
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc.
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#ifndef SkBenchmark_DEFINED
9bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#define SkBenchmark_DEFINED
10bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
11bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#include "SkRefCnt.h"
12bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#include "SkPoint.h"
13e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com#include "SkTDict.h"
14f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.com#include "SkTRegistry.h"
15bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
16bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comclass SkCanvas;
174bc1983e01d756ae9c91fd380758457f579d26eareed@android.comclass SkPaint;
18bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
194e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.comclass SkTriState {
204e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.compublic:
214e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com    enum State {
224e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com        kDefault,
234e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com        kTrue,
244e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com        kFalse
254e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com    };
264e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com};
274e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com
28bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comclass SkBenchmark : public SkRefCnt {
29bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.compublic:
30e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    SkBenchmark(void* defineDict);
314bc1983e01d756ae9c91fd380758457f579d26eareed@android.com
32bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    const char* getName();
33bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    SkIPoint getSize();
34bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    void draw(SkCanvas*);
354bc1983e01d756ae9c91fd380758457f579d26eareed@android.com
364bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    void setForceAlpha(int alpha) {
374bc1983e01d756ae9c91fd380758457f579d26eareed@android.com        fForceAlpha = alpha;
384bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    }
394bc1983e01d756ae9c91fd380758457f579d26eareed@android.com
404bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    void setForceAA(bool aa) {
414bc1983e01d756ae9c91fd380758457f579d26eareed@android.com        fForceAA = aa;
424bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    }
4329348cb0612e19030d979156860946241e2ff4bdreed@android.com
4429348cb0612e19030d979156860946241e2ff4bdreed@android.com    void setForceFilter(bool filter) {
4529348cb0612e19030d979156860946241e2ff4bdreed@android.com        fForceFilter = filter;
4629348cb0612e19030d979156860946241e2ff4bdreed@android.com    }
474e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com
484e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com    void setDither(SkTriState::State state) {
494e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com        fDither = state;
504e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com    }
51e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com
52652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    void setStrokeWidth(SkScalar width) {
53652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org      strokeWidth = width;
54652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org      fHasStrokeWidth = true;
55652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    }
56652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org
57652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    SkScalar getStrokeWidth() {
58652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org      return strokeWidth;
59652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    }
60652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org
61652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    bool hasStrokeWidth() {
62652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org      return fHasStrokeWidth;
63652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    }
64652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org
65e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    const char* findDefine(const char* key) const;
660c9da393d9974877f53e8785082f40e1d1c4c833reed@android.com    bool findDefine32(const char* key, int32_t* value) const;
670c9da393d9974877f53e8785082f40e1d1c4c833reed@android.com    bool findDefineScalar(const char* key, SkScalar* value) const;
68e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com
69bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.comprotected:
704bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    void setupPaint(SkPaint* paint);
714bc1983e01d756ae9c91fd380758457f579d26eareed@android.com
72bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual const char* onGetName() = 0;
73bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com    virtual void onDraw(SkCanvas*) = 0;
74f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.com
75f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.com    virtual SkIPoint onGetSize();
76f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.com
774bc1983e01d756ae9c91fd380758457f579d26eareed@android.comprivate:
78e9d0060f4d7b5a07a220182d83aae3a140784c4breed@android.com    const SkTDict<const char*>* fDict;
794bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    int     fForceAlpha;
804bc1983e01d756ae9c91fd380758457f579d26eareed@android.com    bool    fForceAA;
8129348cb0612e19030d979156860946241e2ff4bdreed@android.com    bool    fForceFilter;
824e635f9eb218b15f656a02e71c60d4f787fe9306reed@android.com    SkTriState::State  fDither;
83652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    bool    fHasStrokeWidth;
84652807bbc8c57e5fa9622126b51fd369f5c67935agl@chromium.org    SkScalar strokeWidth;
85bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com};
86bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com
87f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.comtypedef SkTRegistry<SkBenchmark*, void*> BenchRegistry;
88f523e25da069e3e1af2cb73d37073a34f3bb9ea2reed@android.com
89bd700c391dd45acd8ea1a40321789c9d92a14bb8reed@android.com#endif
90