11ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com/* 21ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com * Copyright 2012 Google Inc. 31ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com * 41ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com * Use of this source code is governed by a BSD-style license that can be 51ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com * found in the LICENSE file. 61ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com */ 71ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 91ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkBitmap.h" 101ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkCanvas.h" 111ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkColorPriv.h" 121ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkPaint.h" 131ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkRandom.h" 141ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkShader.h" 151ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkString.h" 161ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkTArray.h" 171ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 181ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 19f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass LineBench : public Benchmark { 201ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com SkScalar fStrokeWidth; 211ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com bool fDoAA; 221ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com SkString fName; 231ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com enum { 241ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com PTS = 500, 251ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com }; 261ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com SkPoint fPts[PTS]; 271ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 281ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.compublic: 29410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com LineBench(SkScalar width, bool doAA) { 301ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fStrokeWidth = width; 311ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fDoAA = doAA; 321ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fName.printf("lines_%g_%s", width, doAA ? "AA" : "BW"); 331ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 34e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 351ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com for (int i = 0; i < PTS; ++i) { 361ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fPts[i].set(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); 371ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 381ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 391ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 401ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comprotected: 411ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com virtual const char* onGetName() SK_OVERRIDE { 421ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com return fName.c_str(); 431ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 441ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 453361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE { 461ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com SkPaint paint; 471ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com this->setupPaint(&paint); 481ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 491ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com paint.setStyle(SkPaint::kStroke_Style); 501ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com paint.setAntiAlias(fDoAA); 511ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com paint.setStrokeWidth(fStrokeWidth); 521ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 533361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; i++) { 541ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com canvas->drawPoints(SkCanvas::kLines_PointMode, PTS, fPts, paint); 551ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 561ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 571ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 581ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comprivate: 59f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 601ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com}; 611ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 62410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH(return new LineBench(0, false);) 63410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH(return new LineBench(SK_Scalar1, false);) 64410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH(return new LineBench(0, true);) 65410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH(return new LineBench(SK_Scalar1/2, true);) 66410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH(return new LineBench(SK_Scalar1, true);) 67