From 13ece051d7b73c4ea6416bf17a330ba8154b4cf4 Mon Sep 17 00:00:00 2001 From: Joost De Cock Date: Tue, 4 Sep 2018 15:23:40 +0200 Subject: [PATCH] sparkles: Added path.trim() example --- packages/examples/src/index.js | 3 +++ packages/examples/src/path.trim.js | 40 ++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 packages/examples/src/path.trim.js diff --git a/packages/examples/src/index.js b/packages/examples/src/index.js index 2ca95228207..c7fa1b03d4b 100644 --- a/packages/examples/src/index.js +++ b/packages/examples/src/index.js @@ -32,6 +32,7 @@ import pathReverse from "./path.reverse"; import pathShiftAlong from "./path.shiftalong"; import pathShiftFractionAlong from "./path.shiftfractionalong"; import pathEdge from "./path.edge"; +import pathTrim from "./path.trim"; import pathIntersectsX from "./path.intersectsx"; import pathIntersectsY from "./path.intersectsy"; import pathIntersects from "./path.intersects"; @@ -93,6 +94,7 @@ pattern.draft = function() { if (this.needs('pathShiftAlong')) this.parts.pathShiftAlong = this.draftPathShiftAlong(new pattern.Part()); if (this.needs('pathShiftFractionAlong')) this.parts.pathShiftFractionAlong = this.draftPathShiftFractionAlong(new pattern.Part()); if (this.needs('pathEdge')) this.parts.pathEdge = this.draftPathEdge(new pattern.Part()); + if (this.needs('pathTrim')) this.parts.pathTrim = this.draftPathTrim(new pattern.Part()); if (this.needs('pathIntersectsX')) this.parts.pathIntersectsX = this.draftPathIntersectsX(new pattern.Part()); if (this.needs('pathIntersectsY')) this.parts.pathIntersectsY = this.draftPathIntersectsY(new pattern.Part()); if (this.needs('pathIntersects')) this.parts.pathIntersects = this.draftPathIntersects(new pattern.Part()); @@ -151,6 +153,7 @@ pattern.draftPathReverse = part => pathReverse.draft(part); pattern.draftPathShiftAlong = part => pathShiftAlong.draft(part); pattern.draftPathShiftFractionAlong = part => pathShiftFractionAlong.draft(part); pattern.draftPathEdge = part => pathEdge.draft(part); +pattern.draftPathTrim = part => pathTrim.draft(part); pattern.draftPathIntersectsX = part => pathIntersectsX.draft(part); pattern.draftPathIntersectsY = part => pathIntersectsY.draft(part); pattern.draftPathIntersects = part => pathIntersects.draft(part); diff --git a/packages/examples/src/path.trim.js b/packages/examples/src/path.trim.js new file mode 100644 index 00000000000..60b3b493c82 --- /dev/null +++ b/packages/examples/src/path.trim.js @@ -0,0 +1,40 @@ +var pathTrim = { + draft: function(part) { + // prettier-ignore + let {Point, points, Path, paths, Snippet, snippets, macro} = part.shorthand(); + + points.center = new Point(0, 0); + points.base = new Point(0, 10); + points.tip = new Point(0, 50); + points.tipCpRight = new Point(30, 50); + points.tipCpLeft = new Point(-30, 50); + paths.example = new Path().move(points.base); + for(let i=0; i<4; i++) { + points['base'+i] = points.base.rotate(60*i, points.center); + points['tip'+i] = points.tip.rotate(60*i, points.center); + points['tipCpRight'+i] = points.tipCpRight.rotate(60*i, points.center); + points['tipCpLeft'+i] = points.tipCpLeft.rotate(60*i, points.center); + if(i<2) { + paths.example + .line(points['base'+i]) + .curve(points['base'+i], points['tipCpLeft'+i], points['tip'+i]) + .curve(points['tipCpRight'+i], points['base'+i], points['base'+i]); + } else { + paths.example + .line(points['base'+i]) + .line(points['tip'+i]) + .line(points['tipCpRight'+i]) + .line(points['base'+i]); + } + } + + paths.offset = paths.example.offset(10).attr('class', 'lining dotted stroke-sm'); + + paths.trimmed = paths.offset.trim() + .attr('class', 'various stroke-xl') + .attr('style', 'stroke-opacity: 0.5;'); + return part; + } +}; + +export default pathTrim;