aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/DashBench.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-04 20:19:35 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-04 20:19:35 +0000
commit5125d84433599b6103127cd1aaaa0e4e2f5c4e66 (patch)
tree7430c16e61b6ac6e997e0564e80e5fdee2fc3039 /bench/DashBench.cpp
parent31e9d64cb1a1fe07cdb2e4a5cd64c817a9373a86 (diff)
add more cases to dashline: circle-vs-square, 0,1,2 stroke_width
git-svn-id: http://skia.googlecode.com/svn/trunk@5397 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/DashBench.cpp')
-rw-r--r--bench/DashBench.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/bench/DashBench.cpp b/bench/DashBench.cpp
index f6c1399cfa..a1fc12cc3e 100644
--- a/bench/DashBench.cpp
+++ b/bench/DashBench.cpp
@@ -215,9 +215,14 @@ private:
typedef SkBenchmark INHERITED;
};
+/*
+ * We try to special case square dashes (intervals are equal to strokewidth).
+ */
class DashLineBench : public SkBenchmark {
SkString fName;
SkPath fPath;
+ SkScalar fStrokeWidth;
+ bool fIsRound;
SkAutoTUnref<SkPathEffect> fPE;
enum {
@@ -225,10 +230,12 @@ class DashLineBench : public SkBenchmark {
};
public:
- DashLineBench(void* param) : INHERITED(param) {
- fName.printf("dashline");
+ DashLineBench(void* param, SkScalar width, bool isRound) : INHERITED(param) {
+ fName.printf("dashline_%g_%s", SkScalarToFloat(width), isRound ? "circle" : "square");
+ fStrokeWidth = width;
+ fIsRound = isRound;
- SkScalar vals[] = { SkIntToScalar(1), SkIntToScalar(1) };
+ SkScalar vals[] = { SK_Scalar1, SK_Scalar1 };
fPE.reset(new SkDashPathEffect(vals, 2, 0));
}
@@ -240,10 +247,12 @@ protected:
virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
SkPaint paint;
this->setupPaint(&paint);
- paint.setStrokeWidth(1);
+ paint.setStrokeWidth(fStrokeWidth);
+ paint.setStrokeCap(fIsRound ? SkPaint::kRound_Cap : SkPaint::kSquare_Cap);
paint.setPathEffect(fPE);
for (int i = 0; i < N; ++i) {
- canvas->drawLine(10, 10, 640, 10, paint);
+ canvas->drawLine(10 * SK_Scalar1, 10 * SK_Scalar1,
+ 640 * SK_Scalar1, 10 * SK_Scalar1, paint);
}
}
@@ -264,7 +273,12 @@ static SkBenchmark* gF3(void* p) { return new DashBench(p, PARAM(gDots), 4); }
static SkBenchmark* gF4(void* p) { return new MakeDashBench(p, make_poly, "poly"); }
static SkBenchmark* gF5(void* p) { return new MakeDashBench(p, make_quad, "quad"); }
static SkBenchmark* gF6(void* p) { return new MakeDashBench(p, make_cubic, "cubic"); }
-static SkBenchmark* gF7(void* p) { return new DashLineBench(p); }
+static SkBenchmark* gF700(void* p) { return new DashLineBench(p, 0, false); }
+static SkBenchmark* gF710(void* p) { return new DashLineBench(p, SK_Scalar1, false); }
+static SkBenchmark* gF720(void* p) { return new DashLineBench(p, 2 * SK_Scalar1, false); }
+static SkBenchmark* gF701(void* p) { return new DashLineBench(p, 0, true); }
+static SkBenchmark* gF711(void* p) { return new DashLineBench(p, SK_Scalar1, true); }
+static SkBenchmark* gF721(void* p) { return new DashLineBench(p, 2 * SK_Scalar1, true); }
static BenchRegistry gR0(gF0);
static BenchRegistry gR1(gF1);
@@ -273,4 +287,9 @@ static BenchRegistry gR3(gF3);
static BenchRegistry gR4(gF4);
static BenchRegistry gR5(gF5);
static BenchRegistry gR6(gF6);
-static BenchRegistry gR7(gF7);
+static BenchRegistry gR700(gF700);
+static BenchRegistry gR710(gF710);
+static BenchRegistry gR720(gF720);
+static BenchRegistry gR701(gF701);
+static BenchRegistry gR711(gF711);
+static BenchRegistry gR721(gF721);