Home | History | Annotate | Download | only in bench
      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