1 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 */ 8 #include "SkBenchmark.h" 9 #include "SkPaint.h" 10 #include "SkParse.h" 11 12 SK_DEFINE_INST_COUNT(SkBenchmark) 13 14 template BenchRegistry* BenchRegistry::gHead; 15 16 SkBenchmark::SkBenchmark(void* defineDict) { 17 fDict = reinterpret_cast<const SkTDict<const char*>*>(defineDict); 18 fForceAlpha = 0xFF; 19 fForceAA = true; 20 fDither = SkTriState::kDefault; 21 fHasStrokeWidth = false; 22 fIsRendering = true; 23 fOrMask = fClearMask = 0; 24 } 25 26 const char* SkBenchmark::getName() { 27 return this->onGetName(); 28 } 29 30 SkIPoint SkBenchmark::getSize() { 31 return this->onGetSize(); 32 } 33 34 void SkBenchmark::preDraw() { 35 this->onPreDraw(); 36 } 37 38 void SkBenchmark::draw(SkCanvas* canvas) { 39 this->onDraw(canvas); 40 } 41 42 void SkBenchmark::postDraw() { 43 this->onPostDraw(); 44 } 45 46 void SkBenchmark::setupPaint(SkPaint* paint) { 47 paint->setAlpha(fForceAlpha); 48 paint->setAntiAlias(fForceAA); 49 paint->setFilterBitmap(fForceFilter); 50 51 paint->setFlags((paint->getFlags() & ~fClearMask) | fOrMask); 52 53 if (SkTriState::kDefault != fDither) { 54 paint->setDither(SkTriState::kTrue == fDither); 55 } 56 } 57 58 const 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 68 bool 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 77 bool 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 86 /////////////////////////////////////////////////////////////////////////////// 87 88 SkIPoint SkBenchmark::onGetSize() { 89 return SkIPoint::Make(640, 480); 90 } 91