(Canvas canvas, Paint paint)
| 27 | } |
| 28 | |
| 29 | public void drawPaths(Canvas canvas, Paint paint) { |
| 30 | try (var tangentStroke = new Paint().setColor(0xFFFAA6B2).setMode(PaintMode.STROKE).setStrokeWidth(1f); |
| 31 | var pathBuilder = new PathBuilder();) |
| 32 | { |
| 33 | canvas.save(); |
| 34 | |
| 35 | // moveTo, lineTo, close |
| 36 | try (var path = pathBuilder.setFillMode(PathFillMode.WINDING) |
| 37 | .moveTo(20, 1.6f) |
| 38 | .lineTo(31.7f, 37.8f) |
| 39 | .lineTo(0.9f, 15.4f) |
| 40 | .lineTo(39f, 15.4f) |
| 41 | .lineTo(8.2f, 37.8f) |
| 42 | .closePath() |
| 43 | .detach();) |
| 44 | { |
| 45 | for (var fillMode: PathFillMode.values()) { |
| 46 | canvas.save(); |
| 47 | canvas.clipRect(Rect.makeLTRB(0, 0, 40, 40)); |
| 48 | canvas.drawPathOnce(path.makeWithFillMode(fillMode), paint); |
| 49 | canvas.restore(); |
| 50 | canvas.translate(50, 0); |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | // rMoveTo, rLineTo |
| 55 | pathBuilder.setFillMode(PathFillMode.EVEN_ODD); |
| 56 | pathBuilder.rMoveTo(20, 1.6f).rLineTo(11.7f, 36.2f).rLineTo(-30.8f, -22.4f).rLineTo(38.1f, 0f).rLineTo(-30.8f, 22.4f); |
| 57 | canvas.drawPathOnce(pathBuilder.snapshot(), paint); |
| 58 | pathBuilder.reset(); |
| 59 | canvas.translate(50, 0); |
| 60 | |
| 61 | // quadTo, rQuadTo |
| 62 | canvas.drawLine(0, 20, 20, 0, tangentStroke); |
| 63 | canvas.drawLine(20, 0, 40, 20, tangentStroke); |
| 64 | canvas.drawLine(0, 20, 20, 40, tangentStroke); |
| 65 | canvas.drawLine(20, 40, 40, 20, tangentStroke); |
| 66 | |
| 67 | pathBuilder.rMoveTo(0, 20).quadTo(20, 0, 40, 20).rQuadTo(-20, 20, -40, 0); |
| 68 | canvas.drawPathOnce(pathBuilder.detach(), paint); |
| 69 | canvas.translate(50, 0); |
| 70 | |
| 71 | // conicTo, rConicTo |
| 72 | canvas.drawLine(0, 20, 20, 0, tangentStroke); |
| 73 | canvas.drawLine(20, 0, 40, 20, tangentStroke); |
| 74 | canvas.drawLine(0, 20, 20, 40, tangentStroke); |
| 75 | canvas.drawLine(20, 40, 40, 20, tangentStroke); |
| 76 | |
| 77 | pathBuilder.rMoveTo(0, 20).conicTo(20, 0, 40, 20, 0.5f).rConicTo(-20, 20, -40, 0, 2); |
| 78 | canvas.drawPathOnce(pathBuilder.detach(), paint); |
| 79 | canvas.translate(50, 0); |
| 80 | |
| 81 | // cubicTo, rCubicTo |
| 82 | canvas.drawLine(0, 20, 0, 0, tangentStroke); |
| 83 | canvas.drawLine(40, 0, 40, 20, tangentStroke); |
| 84 | canvas.drawLine(0, 20, 10, 30, tangentStroke); |
| 85 | canvas.drawLine(40, 20, 30, 30, tangentStroke); |
| 86 |
no test coverage detected