blob: 43f78b0f2ddc50eb15d8ebddd617e1fdfd9b319b [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#include "SkBenchmark.h"
reed@android.com4bc19832009-01-19 20:08:35 +00009#include "SkPaint.h"
reed@android.com0c9da392010-02-22 19:50:13 +000010#include "SkParse.h"
reed@android.com4bc19832009-01-19 20:08:35 +000011
robertphillips@google.com15e9d3e2012-06-21 20:25:03 +000012SK_DEFINE_INST_COUNT(SkBenchmark)
13
reed@android.comf523e252009-01-26 23:15:37 +000014template BenchRegistry* BenchRegistry::gHead;
15
reed@android.come9d00602009-09-02 21:12:42 +000016SkBenchmark::SkBenchmark(void* defineDict) {
17 fDict = reinterpret_cast<const SkTDict<const char*>*>(defineDict);
reed@android.com4bc19832009-01-19 20:08:35 +000018 fForceAlpha = 0xFF;
19 fForceAA = true;
reed@android.com4e635f92009-10-19 17:39:46 +000020 fDither = SkTriState::kDefault;
agl@chromium.org652807b2010-04-27 15:47:34 +000021 fHasStrokeWidth = false;
tomhudson@google.com9dc27132012-09-13 15:50:24 +000022 fIsRendering = true;
reed@google.comef77ec22013-05-29 15:39:54 +000023 fOrMask = fClearMask = 0;
reed@android.com4bc19832009-01-19 20:08:35 +000024}
reed@android.combd700c32009-01-05 03:34:50 +000025
26const char* SkBenchmark::getName() {
27 return this->onGetName();
28}
29
30SkIPoint SkBenchmark::getSize() {
31 return this->onGetSize();
32}
33
bsalomon@google.com30e6d2c2012-08-13 14:03:31 +000034void SkBenchmark::preDraw() {
35 this->onPreDraw();
36}
37
reed@android.combd700c32009-01-05 03:34:50 +000038void SkBenchmark::draw(SkCanvas* canvas) {
39 this->onDraw(canvas);
40}
41
bsalomon@google.com30e6d2c2012-08-13 14:03:31 +000042void SkBenchmark::postDraw() {
43 this->onPostDraw();
44}
45
reed@android.com4bc19832009-01-19 20:08:35 +000046void SkBenchmark::setupPaint(SkPaint* paint) {
47 paint->setAlpha(fForceAlpha);
48 paint->setAntiAlias(fForceAA);
reed@android.com29348cb2009-08-04 18:17:15 +000049 paint->setFilterBitmap(fForceFilter);
reed@android.com4e635f92009-10-19 17:39:46 +000050
reed@google.comef77ec22013-05-29 15:39:54 +000051 paint->setFlags((paint->getFlags() & ~fClearMask) | fOrMask);
52
reed@android.com4e635f92009-10-19 17:39:46 +000053 if (SkTriState::kDefault != fDither) {
54 paint->setDither(SkTriState::kTrue == fDither);
55 }
reed@android.com4bc19832009-01-19 20:08:35 +000056}
57
reed@android.come9d00602009-09-02 21:12:42 +000058const char* SkBenchmark::findDefine(const char* key) const {
59 if (fDict) {
60 const char* value;
61 if (fDict->find(key, &value)) {
62 return value;
63 }
64 }
65 return NULL;
66}
67
reed@android.com0c9da392010-02-22 19:50:13 +000068bool SkBenchmark::findDefine32(const char* key, int32_t* value) const {
69 const char* valueStr = this->findDefine(key);
70 if (valueStr) {
71 SkParse::FindS32(valueStr, value);
72 return true;
73 }
74 return false;
75}
76
77bool SkBenchmark::findDefineScalar(const char* key, SkScalar* value) const {
78 const char* valueStr = this->findDefine(key);
79 if (valueStr) {
80 SkParse::FindScalar(valueStr, value);
81 return true;
82 }
83 return false;
84}
85
reed@android.comf523e252009-01-26 23:15:37 +000086///////////////////////////////////////////////////////////////////////////////
reed@android.com4bc19832009-01-19 20:08:35 +000087
reed@android.comf523e252009-01-26 23:15:37 +000088SkIPoint SkBenchmark::onGetSize() {
reed@android.com0c9da392010-02-22 19:50:13 +000089 return SkIPoint::Make(640, 480);
reed@android.comf523e252009-01-26 23:15:37 +000090}