blob: 1a2a7dc15f1aea4b29af7f5ced9c464799792ea3 [file] [log] [blame]
caryclark1a7eb262016-01-21 07:07:02 -08001/*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "gm/gm.h"
Ben Wagner6a34f3a2019-05-01 10:59:30 -04009#include "include/core/SkCanvas.h"
10#include "include/core/SkColor.h"
11#include "include/core/SkPaint.h"
Mike Kleinc0bd9f92019-04-23 12:05:21 -050012#include "include/core/SkPath.h"
Ben Wagner6a34f3a2019-05-01 10:59:30 -040013#include "include/core/SkPathEffect.h"
14#include "include/core/SkScalar.h"
15#include "include/core/SkTypes.h"
Mike Kleinc0bd9f92019-04-23 12:05:21 -050016#include "include/effects/SkDashPathEffect.h"
caryclark1a7eb262016-01-21 07:07:02 -080017
18DEF_SIMPLE_GM(bug530095, canvas, 900, 1200) {
Mike Reed92f6eb12020-08-25 11:48:41 -040019 SkPath path1 = SkPath::Circle(200, 200, 124),
20 path2 = SkPath::Circle(2, 2, 1.24f);
caryclark1a7eb262016-01-21 07:07:02 -080021
22 SkPaint paint;
23 paint.setAntiAlias(true);
24 paint.setStyle(SkPaint::kStroke_Style);
25 paint.setStrokeWidth(26);
26 SkScalar intervals[] = {700, 700 };
27 int intervalCount = (int) SK_ARRAY_COUNT(intervals);
reeda4393342016-03-18 11:22:57 -070028 paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, -40));
caryclark1a7eb262016-01-21 07:07:02 -080029 canvas->drawPath(path1, paint);
30
31 paint.setStrokeWidth(0.26f);
32 SkScalar smIntervals[] = {7, 7 };
33 int smIntervalCount = (int) SK_ARRAY_COUNT(smIntervals);
reeda4393342016-03-18 11:22:57 -070034 paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, -0.40f));
caryclark1a7eb262016-01-21 07:07:02 -080035 canvas->save();
36 canvas->scale(100, 100);
37 canvas->translate(4, 0);
38 canvas->drawPath(path2, paint);
39 canvas->restore();
40
41 paint.setStrokeWidth(26);
reeda4393342016-03-18 11:22:57 -070042 paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, 0));
caryclark1a7eb262016-01-21 07:07:02 -080043 canvas->save();
44 canvas->translate(0, 400);
45 canvas->drawPath(path1, paint);
46 canvas->restore();
47
48 paint.setStrokeWidth(0.26f);
reeda4393342016-03-18 11:22:57 -070049 paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, 0));
caryclark1a7eb262016-01-21 07:07:02 -080050 canvas->scale(100, 100);
51 canvas->translate(4, 4);
52 canvas->drawPath(path2, paint);
53}
caryclarkd3cfd942016-03-17 05:33:28 -070054
55DEF_SIMPLE_GM(bug591993, canvas, 40, 140) {
56 SkPaint p;
57 p.setColor(SK_ColorRED);
58 p.setAntiAlias(true);
59 p.setStyle(SkPaint::kStroke_Style);
60 p.setStrokeCap(SkPaint::kRound_Cap);
61 p.setStrokeWidth(10);
reeda4393342016-03-18 11:22:57 -070062 const SkScalar intervals[] = { 100, 100 };
63 p.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 100));
caryclarkd3cfd942016-03-17 05:33:28 -070064 canvas->drawLine(20, 20, 120, 20, p);
65}