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 = SkPath::Circle(200, 200, 124), 20 path2 = SkPath::Circle(2, 2, 1.24f); 21 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); 28 paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, -40)); 29 canvas->drawPath(path1, paint); 30 31 paint.setStrokeWidth(0.26f); 32 SkScalar smIntervals[] = {7, 7 }; 33 int smIntervalCount = (int) SK_ARRAY_COUNT(smIntervals); 34 paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, -0.40f)); 35 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); 42 paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, 0)); 43 canvas->save(); 44 canvas->translate(0, 400); 45 canvas->drawPath(path1, paint); 46 canvas->restore(); 47 48 paint.setStrokeWidth(0.26f); 49 paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, 0)); 50 canvas->scale(100, 100); 51 canvas->translate(4, 4); 52 canvas->drawPath(path2, paint); 53 } 54 55 DEF_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); 62 const SkScalar intervals[] = { 100, 100 }; 63 p.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 100)); 64 canvas->drawLine(20, 20, 120, 20, p); 65 } 66