• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
8 #include "gm/gm.h"
9 #include "include/core/SkCanvas.h"
10 #include "include/core/SkColor.h"
11 #include "include/core/SkPaint.h"
12 #include "include/core/SkPath.h"
13 #include "include/core/SkPathEffect.h"
14 #include "include/core/SkScalar.h"
15 #include "include/core/SkTypes.h"
16 #include "include/effects/SkDashPathEffect.h"
17 
18 DEF_SIMPLE_GM(bug530095, canvas, 900, 1200) {
19     SkPath path1, path2;
20     path1.addCircle(200, 200, 124);
21     path2.addCircle(2, 2, 1.24f);
22 
23     SkPaint paint;
24     paint.setAntiAlias(true);
25     paint.setStyle(SkPaint::kStroke_Style);
26     paint.setStrokeWidth(26);
27     SkScalar intervals[] = {700, 700 };
28     int intervalCount = (int) SK_ARRAY_COUNT(intervals);
29     paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, -40));
30     canvas->drawPath(path1, paint);
31 
32     paint.setStrokeWidth(0.26f);
33     SkScalar smIntervals[] = {7, 7 };
34     int smIntervalCount = (int) SK_ARRAY_COUNT(smIntervals);
35     paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, -0.40f));
36     canvas->save();
37     canvas->scale(100, 100);
38     canvas->translate(4, 0);
39     canvas->drawPath(path2, paint);
40     canvas->restore();
41 
42     paint.setStrokeWidth(26);
43     paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, 0));
44     canvas->save();
45     canvas->translate(0, 400);
46     canvas->drawPath(path1, paint);
47     canvas->restore();
48 
49     paint.setStrokeWidth(0.26f);
50     paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, 0));
51     canvas->scale(100, 100);
52     canvas->translate(4, 4);
53     canvas->drawPath(path2, paint);
54 }
55 
56 DEF_SIMPLE_GM(bug591993, canvas, 40, 140) {
57     SkPaint p;
58     p.setColor(SK_ColorRED);
59     p.setAntiAlias(true);
60     p.setStyle(SkPaint::kStroke_Style);
61     p.setStrokeCap(SkPaint::kRound_Cap);
62     p.setStrokeWidth(10);
63     const SkScalar intervals[] = { 100, 100 };
64     p.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 100));
65     canvas->drawLine(20, 20, 120, 20, p);
66 }
67