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