11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 87cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#include "SkBenchmark.h" 97cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed#include "SkPaint.h" 1032a0e74681142badb9efd90be3558bd9a943755eMike Reed#include "SkParse.h" 117cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 127cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedtemplate BenchRegistry* BenchRegistry::gHead; 137cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 1457382d688c1d6928b1d9bbbaf27188d54dd9e002Mike ReedSkBenchmark::SkBenchmark(void* defineDict) { 1557382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed fDict = reinterpret_cast<const SkTDict<const char*>*>(defineDict); 167cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed fForceAlpha = 0xFF; 177cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed fForceAA = true; 1854e0f955c21365271661cd92a29d06a847a18554Mike Reed fDither = SkTriState::kDefault; 194c1037238c8ebcef8c75b5d43730ed308a11102cMike Reed fHasStrokeWidth = false; 207cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed} 217cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 227cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedconst char* SkBenchmark::getName() { 237cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed return this->onGetName(); 247cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed} 257cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 267cc0a6ac7b817b217dd614cba96fc533b32d505dMike ReedSkIPoint SkBenchmark::getSize() { 277cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed return this->onGetSize(); 287cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed} 297cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 307cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedvoid SkBenchmark::draw(SkCanvas* canvas) { 317cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed this->onDraw(canvas); 327cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed} 337cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 347cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reedvoid SkBenchmark::setupPaint(SkPaint* paint) { 357cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed paint->setAlpha(fForceAlpha); 367cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed paint->setAntiAlias(fForceAA); 377cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed paint->setFilterBitmap(fForceFilter); 3854e0f955c21365271661cd92a29d06a847a18554Mike Reed 3954e0f955c21365271661cd92a29d06a847a18554Mike Reed if (SkTriState::kDefault != fDither) { 4054e0f955c21365271661cd92a29d06a847a18554Mike Reed paint->setDither(SkTriState::kTrue == fDither); 4154e0f955c21365271661cd92a29d06a847a18554Mike Reed } 427cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed} 437cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 4457382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reedconst char* SkBenchmark::findDefine(const char* key) const { 4557382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed if (fDict) { 4657382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed const char* value; 4757382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed if (fDict->find(key, &value)) { 4857382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed return value; 4957382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed } 5057382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed } 5157382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed return NULL; 5257382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed} 5357382d688c1d6928b1d9bbbaf27188d54dd9e002Mike Reed 5432a0e74681142badb9efd90be3558bd9a943755eMike Reedbool SkBenchmark::findDefine32(const char* key, int32_t* value) const { 5532a0e74681142badb9efd90be3558bd9a943755eMike Reed const char* valueStr = this->findDefine(key); 5632a0e74681142badb9efd90be3558bd9a943755eMike Reed if (valueStr) { 5732a0e74681142badb9efd90be3558bd9a943755eMike Reed SkParse::FindS32(valueStr, value); 5832a0e74681142badb9efd90be3558bd9a943755eMike Reed return true; 5932a0e74681142badb9efd90be3558bd9a943755eMike Reed } 6032a0e74681142badb9efd90be3558bd9a943755eMike Reed return false; 6132a0e74681142badb9efd90be3558bd9a943755eMike Reed} 6232a0e74681142badb9efd90be3558bd9a943755eMike Reed 6332a0e74681142badb9efd90be3558bd9a943755eMike Reedbool SkBenchmark::findDefineScalar(const char* key, SkScalar* value) const { 6432a0e74681142badb9efd90be3558bd9a943755eMike Reed const char* valueStr = this->findDefine(key); 6532a0e74681142badb9efd90be3558bd9a943755eMike Reed if (valueStr) { 6632a0e74681142badb9efd90be3558bd9a943755eMike Reed SkParse::FindScalar(valueStr, value); 6732a0e74681142badb9efd90be3558bd9a943755eMike Reed return true; 6832a0e74681142badb9efd90be3558bd9a943755eMike Reed } 6932a0e74681142badb9efd90be3558bd9a943755eMike Reed return false; 7032a0e74681142badb9efd90be3558bd9a943755eMike Reed} 7132a0e74681142badb9efd90be3558bd9a943755eMike Reed 727cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed/////////////////////////////////////////////////////////////////////////////// 737cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed 747cc0a6ac7b817b217dd614cba96fc533b32d505dMike ReedSkIPoint SkBenchmark::onGetSize() { 7532a0e74681142badb9efd90be3558bd9a943755eMike Reed return SkIPoint::Make(640, 480); 767cc0a6ac7b817b217dd614cba96fc533b32d505dMike Reed} 77