|  | 
 | /* | 
 |  * Copyright 2011 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 | #include "SkBenchmark.h" | 
 | #include "SkPaint.h" | 
 | #include "SkParse.h" | 
 |  | 
 | SK_DEFINE_INST_COUNT(SkBenchmark) | 
 |  | 
 | template BenchRegistry* BenchRegistry::gHead; | 
 |  | 
 | SkBenchmark::SkBenchmark(void* defineDict) { | 
 |     fDict = reinterpret_cast<const SkTDict<const char*>*>(defineDict); | 
 |     fForceAlpha = 0xFF; | 
 |     fForceAA = true; | 
 |     fDither = SkTriState::kDefault; | 
 |     fHasStrokeWidth = false; | 
 |     fIsRendering = true; | 
 | } | 
 |  | 
 | const char* SkBenchmark::getName() { | 
 |     return this->onGetName(); | 
 | } | 
 |  | 
 | SkIPoint SkBenchmark::getSize() { | 
 |     return this->onGetSize(); | 
 | } | 
 |  | 
 | void SkBenchmark::preDraw() { | 
 |     this->onPreDraw(); | 
 | } | 
 |  | 
 | void SkBenchmark::draw(SkCanvas* canvas) { | 
 |     this->onDraw(canvas); | 
 | } | 
 |  | 
 | void SkBenchmark::postDraw() { | 
 |     this->onPostDraw(); | 
 | } | 
 |  | 
 | void SkBenchmark::setupPaint(SkPaint* paint) { | 
 |     paint->setAlpha(fForceAlpha); | 
 |     paint->setAntiAlias(fForceAA); | 
 |     paint->setFilterBitmap(fForceFilter); | 
 |  | 
 |     if (SkTriState::kDefault != fDither) { | 
 |         paint->setDither(SkTriState::kTrue == fDither); | 
 |     } | 
 | } | 
 |  | 
 | const char* SkBenchmark::findDefine(const char* key) const { | 
 |     if (fDict) { | 
 |         const char* value; | 
 |         if (fDict->find(key, &value)) { | 
 |             return value; | 
 |         } | 
 |     } | 
 |     return NULL; | 
 | } | 
 |  | 
 | bool SkBenchmark::findDefine32(const char* key, int32_t* value) const { | 
 |     const char* valueStr = this->findDefine(key); | 
 |     if (valueStr) { | 
 |         SkParse::FindS32(valueStr, value); | 
 |         return true; | 
 |     } | 
 |     return false; | 
 | } | 
 |  | 
 | bool SkBenchmark::findDefineScalar(const char* key, SkScalar* value) const { | 
 |     const char* valueStr = this->findDefine(key); | 
 |     if (valueStr) { | 
 |         SkParse::FindScalar(valueStr, value); | 
 |         return true; | 
 |     } | 
 |     return false; | 
 | } | 
 |  | 
 | /////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | SkIPoint SkBenchmark::onGetSize() { | 
 |     return SkIPoint::Make(640, 480); | 
 | } |