aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/strokes.cpp
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2017-12-20 08:50:37 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-20 14:38:04 +0000
commit4ad0c592ce830f17ff07052f20392caa700e9a53 (patch)
tree2b4f3c44bd0b5dfc2e8df67551555388c61190e5 /gm/strokes.cpp
parentdca92e8a622cec7579dd2d44b8b7121603850b93 (diff)
long rect dash with guards
check dash fix back in with guards against changing chrome layout test results original CL: skia-review.googlesource.com/c/skia/+/84862 efficiently dash very large rectangles and very long lines Speed up dashing when lines and rects are absurdly large. Prior to this CL, only horizontal lines were detected. Also folded in a change to handle dashing of zero length lines. TBR=egdaniel@google.com Bug: skia:7311 Change-Id: I139b10f676e7ae06ad83aaf2a35d49cf06280a67 Reviewed-on: https://skia-review.googlesource.com/87760 Commit-Queue: Cary Clark <caryclark@skia.org> Reviewed-by: Cary Clark <caryclark@skia.org>
Diffstat (limited to 'gm/strokes.cpp')
-rw-r--r--gm/strokes.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index ed13d090ff..df632dc269 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -533,3 +533,34 @@ DEF_SIMPLE_GM(zerolinedash, canvas, 256, 256) {
canvas->drawLine(100, 100, 100, 100, paint);
}
+
+#define PDF_IS_FIXED_SO_THIS_DOESNT_BREAK_IT
+#ifdef PDF_IS_FIXED_SO_THIS_DOESNT_BREAK_IT
+DEF_SIMPLE_GM(longrect_dash, canvas, 250, 250) {
+ canvas->clear(SK_ColorWHITE);
+
+ SkPaint paint;
+ paint.setColor(SkColorSetARGB(255, 0, 0, 0));
+ paint.setStrokeWidth(5);
+ paint.setStrokeCap(SkPaint::kRound_Cap);
+ paint.setStrokeJoin(SkPaint::kBevel_Join);
+ paint.setStyle(SkPaint::kStroke_Style);
+ SkScalar dash_pattern[] = {1, 5};
+ paint.setPathEffect(SkDashPathEffect::Make(dash_pattern, 2, 0));
+ // try all combinations of stretching bounds
+ for (auto left : { 20.f, -100001.f } ) {
+ for (auto top : { 20.f, -100001.f } ) {
+ for (auto right : { 40.f, 100001.f } ) {
+ for (auto bottom : { 40.f, 100001.f } ) {
+ canvas->save();
+ canvas->clipRect({10, 10, 50, 50});
+ canvas->drawRect({left, top, right, bottom}, paint);
+ canvas->restore();
+ canvas->translate(60, 0);
+ }
+ }
+ canvas->translate(-60 * 4, 60);
+ }
+ }
+}
+#endif