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