1a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com/* 2a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com * Copyright 2013 Google Inc. 3a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com * 4a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com * Use of this source code is governed by a BSD-style license that can be 5a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com * found in the LICENSE file. 6a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com */ 778dd91d1afab51dd7cae870d4864410ced839b4bcommit-bot@chromium.org 8f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina#include "Benchmark.h" 9a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#include "SkCanvas.h" 10a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#include "SkPaint.h" 11a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#include "SkRandom.h" 12a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#include "SkShader.h" 13a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#include "SkString.h" 14a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 15a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comenum Flags { 16a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com kBig_Flag = 1 << 0, 17a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com kAA_Flag = 1 << 1 18a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 19a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 20a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#define FLAGS00 Flags(0) 21a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#define FLAGS01 Flags(kBig_Flag) 22a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#define FLAGS10 Flags(kAA_Flag) 23a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com#define FLAGS11 Flags(kBig_Flag | kAA_Flag) 24a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 25a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comstatic const int points[] = { 26a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 10, 10, 15, 5, 20, 20, 27a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 30, 5, 25, 20, 15, 12, 28a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 21, 21, 30, 30, 12, 4, 29a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 32, 28, 20, 18, 12, 10 30a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 31a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 32a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comstatic const int kMaxPathSize = 10; 33a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 34f168b86d7fafc5c20c87bebc6fd393cb17e120catfarinaclass HairlinePathBench : public Benchmark { 35a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.compublic: 36410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com HairlinePathBench(Flags flags) : fFlags(flags) { 37a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com fPaint.setStyle(SkPaint::kStroke_Style); 38a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com fPaint.setStrokeWidth(SkIntToScalar(0)); 39a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 40a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 41a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com virtual void appendName(SkString*) = 0; 42a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com virtual void makePath(SkPath*) = 0; 43a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 44a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comprotected: 4536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const char* onGetName() override { 46a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com fName.printf("path_hairline_%s_%s_", 47a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com fFlags & kBig_Flag ? "big" : "small", 48a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com fFlags & kAA_Flag ? "AA" : "noAA"); 49a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com this->appendName(&fName); 50a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com return fName.c_str(); 51a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 52a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 5336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDraw(const int loops, SkCanvas* canvas) override { 54a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkPaint paint(fPaint); 55a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com this->setupPaint(&paint); 56a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 57a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com paint.setAntiAlias(fFlags & kAA_Flag ? true : false); 58f7d01ce1849aa029743e9e0b810a8f955ad99f28skia.committer@gmail.com 59a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkPath path; 60a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com this->makePath(&path); 61a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com if (fFlags & kBig_Flag) { 621d24b8dfe9aac9cadaf3914b8574a4ff6e9bc19drobertphillips const SkMatrix m = SkMatrix::MakeScale(SkIntToScalar(3), SkIntToScalar(3)); 63a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path.transform(m); 64a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 65a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 663361471a3504ecd0351ff70f4c42d8d6fee963d4commit-bot@chromium.org for (int i = 0; i < loops; i++) { 679645ce17cdc451435877e60693aa0ef22110eee2reed for (int j = 0; j < 100; ++j) { 689645ce17cdc451435877e60693aa0ef22110eee2reed canvas->drawPath(path, paint); 699645ce17cdc451435877e60693aa0ef22110eee2reed } 70a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 71a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 72a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 73a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comprivate: 74a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkPaint fPaint; 75a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkString fName; 76a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com Flags fFlags; 77f168b86d7fafc5c20c87bebc6fd393cb17e120catfarina typedef Benchmark INHERITED; 78a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 79a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 80a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comclass LinePathBench : public HairlinePathBench { 81a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.compublic: 82410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com LinePathBench(Flags flags) : INHERITED(flags) {} 83a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 8436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void appendName(SkString* name) override { 85a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com name->append("line"); 86a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 8736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void makePath(SkPath* path) override { 88e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 89a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int size = SK_ARRAY_COUNT(points); 90a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int hSize = size / 2; 91a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com for (int i = 0; i < kMaxPathSize; ++i) { 92a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int xTrans = 10 + 40 * (i%(kMaxPathSize/2)); 93a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int yTrans = 0; 94a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com if (i > kMaxPathSize/2 - 1) { 95a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com yTrans = 40; 96a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 97a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base1 = 2 * rand.nextULessThan(hSize); 98a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base2 = 2 * rand.nextULessThan(hSize); 99a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base3 = 2 * rand.nextULessThan(hSize); 100a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->moveTo(SkIntToScalar(points[base1] + xTrans), 101a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base1+1] + yTrans)); 102a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->lineTo(SkIntToScalar(points[base2] + xTrans), 103a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base2+1] + yTrans)); 104a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->lineTo(SkIntToScalar(points[base3] + xTrans), 105a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3+1] + yTrans)); 106a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 107a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 108a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comprivate: 109a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com typedef HairlinePathBench INHERITED; 110a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 111a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 112a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comclass QuadPathBench : public HairlinePathBench { 113a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.compublic: 114410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com QuadPathBench(Flags flags) : INHERITED(flags) {} 115a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 11636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void appendName(SkString* name) override { 117a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com name->append("quad"); 118a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 11936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void makePath(SkPath* path) override { 120e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 121a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int size = SK_ARRAY_COUNT(points); 122a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int hSize = size / 2; 123a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com for (int i = 0; i < kMaxPathSize; ++i) { 124a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int xTrans = 10 + 40 * (i%(kMaxPathSize/2)); 125a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int yTrans = 0; 126a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com if (i > kMaxPathSize/2 - 1) { 127a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com yTrans = 40; 128a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 129a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base1 = 2 * rand.nextULessThan(hSize); 130a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base2 = 2 * rand.nextULessThan(hSize); 131a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base3 = 2 * rand.nextULessThan(hSize); 132a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->moveTo(SkIntToScalar(points[base1] + xTrans), 133a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base1+1] + yTrans)); 134a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->quadTo(SkIntToScalar(points[base2] + xTrans), 135a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base2+1] + yTrans), 136a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3] + xTrans), 137a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3+1] + yTrans)); 138a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 139a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 140a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comprivate: 141a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com typedef HairlinePathBench INHERITED; 142a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 143a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 144a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comclass ConicPathBench : public HairlinePathBench { 145a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.compublic: 146410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com ConicPathBench(Flags flags) : INHERITED(flags) {} 147a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 14836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void appendName(SkString* name) override { 149a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com name->append("conic"); 150a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 15136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void makePath(SkPath* path) override { 152e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 153e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom randWeight; 154a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int size = SK_ARRAY_COUNT(points); 155a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int hSize = size / 2; 156a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com for (int i = 0; i < kMaxPathSize; ++i) { 157a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int xTrans = 10 + 40 * (i%(kMaxPathSize/2)); 158a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int yTrans = 0; 159a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com if (i > kMaxPathSize/2 - 1) { 160a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com yTrans = 40; 161a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 162a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base1 = 2 * rand.nextULessThan(hSize); 163a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base2 = 2 * rand.nextULessThan(hSize); 164a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base3 = 2 * rand.nextULessThan(hSize); 165a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com float weight = randWeight.nextRangeF(0.0f, 2.0f); 166a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->moveTo(SkIntToScalar(points[base1] + xTrans), 167a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base1+1] + yTrans)); 168a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->conicTo(SkIntToScalar(points[base2] + xTrans), 169a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base2+1] + yTrans), 170a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3] + xTrans), 171a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3+1] + yTrans), 172a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com weight); 173a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 174a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 17578dd91d1afab51dd7cae870d4864410ced839b4bcommit-bot@chromium.org 176a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comprivate: 177a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com typedef HairlinePathBench INHERITED; 178a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 179a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 180a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comclass CubicPathBench : public HairlinePathBench { 181a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.compublic: 182410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com CubicPathBench(Flags flags) : INHERITED(flags) {} 183a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 18436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void appendName(SkString* name) override { 185a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com name->append("cubic"); 186a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 18736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void makePath(SkPath* path) override { 188e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 189a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int size = SK_ARRAY_COUNT(points); 190a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int hSize = size / 2; 191a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com for (int i = 0; i < kMaxPathSize; ++i) { 192a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int xTrans = 10 + 40 * (i%(kMaxPathSize/2)); 193a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int yTrans = 0; 194a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com if (i > kMaxPathSize/2 - 1) { 195a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com yTrans = 40; 196a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 197a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base1 = 2 * rand.nextULessThan(hSize); 198a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base2 = 2 * rand.nextULessThan(hSize); 199a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base3 = 2 * rand.nextULessThan(hSize); 200a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com int base4 = 2 * rand.nextULessThan(hSize); 201a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->moveTo(SkIntToScalar(points[base1] + xTrans), 202a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base1+1] + yTrans)); 203a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com path->cubicTo(SkIntToScalar(points[base2] + xTrans), 204a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base2+1] + yTrans), 205a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3] + xTrans), 206a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base3+1] + yTrans), 207a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base4] + xTrans), 208a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com SkIntToScalar(points[base4+1] + yTrans)); 209a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 210a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com } 211a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.comprivate: 212a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com typedef HairlinePathBench INHERITED; 213a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com}; 214a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 215a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com// FLAG00 - no AA, small 216a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com// FLAG01 - no AA, small 217a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com// FLAG10 - AA, big 218a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com// FLAG11 - AA, big 219a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 220410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LinePathBench(FLAGS00); ) 221410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LinePathBench(FLAGS01); ) 222410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LinePathBench(FLAGS10); ) 223410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new LinePathBench(FLAGS11); ) 224a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 225410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new QuadPathBench(FLAGS00); ) 226410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new QuadPathBench(FLAGS01); ) 227410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new QuadPathBench(FLAGS10); ) 228410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new QuadPathBench(FLAGS11); ) 229a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com 230a308883003e36cbff4d1c4c2d2e7fceb3eea95b1egdaniel@google.com// Don't have default path renderer for conics yet on GPU, so must use AA 231410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com// DEF_BENCH( return new ConicPathBench(FLAGS00); ) 232410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com// DEF_BENCH( return new ConicPathBench(FLAGS01); ) 233410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new ConicPathBench(FLAGS10); ) 234410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new ConicPathBench(FLAGS11); ) 235410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.com 236410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new CubicPathBench(FLAGS00); ) 237410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new CubicPathBench(FLAGS01); ) 238410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new CubicPathBench(FLAGS10); ) 239410e6e80f00a6c660675c80904807a041c7b7d2amtklein@google.comDEF_BENCH( return new CubicPathBench(FLAGS11); ) 240