1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2016 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "gm/gm.h" 9*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkCanvas.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkColor.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPaint.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPath.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPathEffect.h" 14*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkScalar.h" 15*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h" 16*c8dee2aaSAndroid Build Coastguard Worker #include "include/effects/SkDashPathEffect.h" 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker DEF_SIMPLE_GM(bug530095, canvas, 900, 1200) { 19*c8dee2aaSAndroid Build Coastguard Worker SkPath path1 = SkPath::Circle(200, 200, 124), 20*c8dee2aaSAndroid Build Coastguard Worker path2 = SkPath::Circle(2, 2, 1.24f); 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker SkPaint paint; 23*c8dee2aaSAndroid Build Coastguard Worker paint.setAntiAlias(true); 24*c8dee2aaSAndroid Build Coastguard Worker paint.setStyle(SkPaint::kStroke_Style); 25*c8dee2aaSAndroid Build Coastguard Worker paint.setStrokeWidth(26); 26*c8dee2aaSAndroid Build Coastguard Worker SkScalar intervals[] = {700, 700 }; 27*c8dee2aaSAndroid Build Coastguard Worker int intervalCount = (int) std::size(intervals); 28*c8dee2aaSAndroid Build Coastguard Worker paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, -40)); 29*c8dee2aaSAndroid Build Coastguard Worker canvas->drawPath(path1, paint); 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker paint.setStrokeWidth(0.26f); 32*c8dee2aaSAndroid Build Coastguard Worker SkScalar smIntervals[] = {7, 7 }; 33*c8dee2aaSAndroid Build Coastguard Worker int smIntervalCount = (int) std::size(smIntervals); 34*c8dee2aaSAndroid Build Coastguard Worker paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, -0.40f)); 35*c8dee2aaSAndroid Build Coastguard Worker canvas->save(); 36*c8dee2aaSAndroid Build Coastguard Worker canvas->scale(100, 100); 37*c8dee2aaSAndroid Build Coastguard Worker canvas->translate(4, 0); 38*c8dee2aaSAndroid Build Coastguard Worker canvas->drawPath(path2, paint); 39*c8dee2aaSAndroid Build Coastguard Worker canvas->restore(); 40*c8dee2aaSAndroid Build Coastguard Worker 41*c8dee2aaSAndroid Build Coastguard Worker paint.setStrokeWidth(26); 42*c8dee2aaSAndroid Build Coastguard Worker paint.setPathEffect(SkDashPathEffect::Make(intervals, intervalCount, 0)); 43*c8dee2aaSAndroid Build Coastguard Worker canvas->save(); 44*c8dee2aaSAndroid Build Coastguard Worker canvas->translate(0, 400); 45*c8dee2aaSAndroid Build Coastguard Worker canvas->drawPath(path1, paint); 46*c8dee2aaSAndroid Build Coastguard Worker canvas->restore(); 47*c8dee2aaSAndroid Build Coastguard Worker 48*c8dee2aaSAndroid Build Coastguard Worker paint.setStrokeWidth(0.26f); 49*c8dee2aaSAndroid Build Coastguard Worker paint.setPathEffect(SkDashPathEffect::Make(smIntervals, smIntervalCount, 0)); 50*c8dee2aaSAndroid Build Coastguard Worker canvas->scale(100, 100); 51*c8dee2aaSAndroid Build Coastguard Worker canvas->translate(4, 4); 52*c8dee2aaSAndroid Build Coastguard Worker canvas->drawPath(path2, paint); 53*c8dee2aaSAndroid Build Coastguard Worker } 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Worker DEF_SIMPLE_GM(bug591993, canvas, 40, 140) { 56*c8dee2aaSAndroid Build Coastguard Worker SkPaint p; 57*c8dee2aaSAndroid Build Coastguard Worker p.setColor(SK_ColorRED); 58*c8dee2aaSAndroid Build Coastguard Worker p.setAntiAlias(true); 59*c8dee2aaSAndroid Build Coastguard Worker p.setStyle(SkPaint::kStroke_Style); 60*c8dee2aaSAndroid Build Coastguard Worker p.setStrokeCap(SkPaint::kRound_Cap); 61*c8dee2aaSAndroid Build Coastguard Worker p.setStrokeWidth(10); 62*c8dee2aaSAndroid Build Coastguard Worker const SkScalar intervals[] = { 100, 100 }; 63*c8dee2aaSAndroid Build Coastguard Worker p.setPathEffect(SkDashPathEffect::Make(intervals, std::size(intervals), 100)); 64*c8dee2aaSAndroid Build Coastguard Worker canvas->drawLine(20, 20, 120, 20, p); 65*c8dee2aaSAndroid Build Coastguard Worker } 66