Add bench to measure drawing a dashed grid
BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/310083005
This commit is contained in:
parent
9b14f26d0f
commit
05bb6f136d
@ -373,6 +373,72 @@ private:
|
||||
typedef SkBenchmark INHERITED;
|
||||
};
|
||||
|
||||
// Want to test how we draw a dashed grid (like what is used in spreadsheets) of many
|
||||
// small dashed lines switching back and forth between horizontal and vertical
|
||||
class DashGridBench : public SkBenchmark {
|
||||
SkString fName;
|
||||
int fStrokeWidth;
|
||||
bool fDoAA;
|
||||
|
||||
SkAutoTUnref<SkPathEffect> fPathEffect;
|
||||
|
||||
public:
|
||||
DashGridBench(int dashLength, int strokeWidth, bool doAA) {
|
||||
fName.printf("dashgrid_%d_%d%s", dashLength, strokeWidth, doAA ? "_aa" : "_bw");
|
||||
fStrokeWidth = strokeWidth;
|
||||
fDoAA = doAA;
|
||||
|
||||
SkScalar vals[] = { SkIntToScalar(dashLength), SkIntToScalar(dashLength) };
|
||||
fPathEffect.reset(SkDashPathEffect::Create(vals, 2, SK_Scalar1));
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual const char* onGetName() SK_OVERRIDE {
|
||||
return fName.c_str();
|
||||
}
|
||||
|
||||
virtual void onDraw(const int loops, SkCanvas* canvas) SK_OVERRIDE {
|
||||
SkPaint p;
|
||||
this->setupPaint(&p);
|
||||
p.setColor(SK_ColorBLACK);
|
||||
p.setStyle(SkPaint::kStroke_Style);
|
||||
p.setStrokeWidth(SkIntToScalar(fStrokeWidth));
|
||||
p.setPathEffect(fPathEffect);
|
||||
p.setAntiAlias(fDoAA);
|
||||
|
||||
SkPoint pts[4] = {
|
||||
{ SkIntToScalar(0), 20.5f },
|
||||
{ SkIntToScalar(20), 20.5f },
|
||||
{ 20.5f, SkIntToScalar(0) },
|
||||
{ 20.5f, SkIntToScalar(20) }
|
||||
};
|
||||
|
||||
for (int i = 0; i < loops; ++i) {
|
||||
for (int j = 0; j < 10; ++j) {
|
||||
for (int k = 0; k < 10; ++k) {
|
||||
// Horizontal line
|
||||
SkPoint horPts[2];
|
||||
horPts[0].fX = pts[0].fX + k * 22.f;
|
||||
horPts[0].fY = pts[0].fY + j * 22.f;
|
||||
horPts[1].fX = pts[1].fX + k * 22.f;
|
||||
horPts[1].fY = pts[1].fY + j * 22.f;
|
||||
canvas->drawPoints(SkCanvas::kLines_PointMode, 2, horPts, p);
|
||||
|
||||
// Vertical line
|
||||
SkPoint vertPts[2];
|
||||
vertPts[0].fX = pts[2].fX + k * 22.f;
|
||||
vertPts[0].fY = pts[2].fY + j * 22.f;
|
||||
vertPts[1].fX = pts[3].fX + k * 22.f;
|
||||
vertPts[1].fY = pts[3].fY + j * 22.f;
|
||||
canvas->drawPoints(SkCanvas::kLines_PointMode, 2, vertPts, p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
typedef SkBenchmark INHERITED;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -415,4 +481,9 @@ DEF_BENCH( return new GiantDashBench(GiantDashBench::kDiag_LineType, 0); )
|
||||
DEF_BENCH( return new GiantDashBench(GiantDashBench::kHori_LineType, 2); )
|
||||
DEF_BENCH( return new GiantDashBench(GiantDashBench::kVert_LineType, 2); )
|
||||
DEF_BENCH( return new GiantDashBench(GiantDashBench::kDiag_LineType, 2); )
|
||||
|
||||
DEF_BENCH( return new DashGridBench(1, 1, true); )
|
||||
DEF_BENCH( return new DashGridBench(1, 1, false); )
|
||||
DEF_BENCH( return new DashGridBench(3, 1, true); )
|
||||
DEF_BENCH( return new DashGridBench(3, 1, false); )
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user