LineBench.cpp revision e0e7cfe44bb9d66d76120a79e5275c294bacaa22
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 81ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com#include "SkBenchmark.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 191ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comclass LineBench : public SkBenchmark { 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 N = SkBENCHLOOP(10) 261ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com }; 271ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com SkPoint fPts[PTS]; 281ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 291ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.compublic: 301ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com LineBench(void* param, SkScalar width, bool doAA) : INHERITED(param) { 311ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fStrokeWidth = width; 321ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fDoAA = doAA; 331ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fName.printf("lines_%g_%s", width, doAA ? "AA" : "BW"); 341ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 35e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 361ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com for (int i = 0; i < PTS; ++i) { 371ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com fPts[i].set(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); 381ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 391ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 401ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 411ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comprotected: 421ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com virtual const char* onGetName() SK_OVERRIDE { 431ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com return fName.c_str(); 441ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 451ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 461ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 471ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com SkPaint paint; 481ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com this->setupPaint(&paint); 491ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 501ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com paint.setStyle(SkPaint::kStroke_Style); 511ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com paint.setAntiAlias(fDoAA); 521ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com paint.setStrokeWidth(fStrokeWidth); 531ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 541ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com for (int i = 0; i < N; i++) { 551ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com canvas->drawPoints(SkCanvas::kLines_PointMode, PTS, fPts, paint); 561ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 571ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com } 581ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 591ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comprivate: 601ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com typedef SkBenchmark INHERITED; 611ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com}; 621ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.com 631ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comDEF_BENCH(return new LineBench(p, 0, false);) 641ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comDEF_BENCH(return new LineBench(p, SK_Scalar1, false);) 651ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comDEF_BENCH(return new LineBench(p, 0, true);) 661ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comDEF_BENCH(return new LineBench(p, SK_Scalar1/2, true);) 671ca015bd5911987ab10fa81f168a5cf3b582f2ddreed@google.comDEF_BENCH(return new LineBench(p, SK_Scalar1, true);) 68