diff --git a/packages/examples/freesewing.js b/packages/examples/freesewing.js
new file mode 120000
index 00000000000..c0c149ab48d
--- /dev/null
+++ b/packages/examples/freesewing.js
@@ -0,0 +1 @@
+../freesewing/dist/browser.js
\ No newline at end of file
diff --git a/packages/examples/index.html b/packages/examples/index.html
index 0469ddfc44b..be646d40441 100644
--- a/packages/examples/index.html
+++ b/packages/examples/index.html
@@ -3,7 +3,8 @@
Examples
-
+
+
@@ -20,7 +21,7 @@
.with(freesewing.plugins.debug)
.with(freesewing.plugins.theme)
//.with(freesewing.plugins.designer)
- .with(freesewing.plugins.validate)
+ //.with(freesewing.plugins.validate)
;
pattern.settings.measurements = freesewing.models.men.manSize36;
@@ -30,7 +31,7 @@
pattern.settings.sa = 10;
pattern.settings.units = 'metric';
// console.log(pattern);
-pattern.settings.only = ['utilsLineIntersectsCircle', 'utilsPointOnLine'];
+pattern.settings.only = ['pathTranslate'];
//pattern.on('preRender', function(next) {
// this.style += 'g { border: 1px solid red; background: red;}';
// next();
diff --git a/packages/examples/package-lock.json b/packages/examples/package-lock.json
index 4bca9ddb7a3..7212b4a9b45 100644
--- a/packages/examples/package-lock.json
+++ b/packages/examples/package-lock.json
@@ -923,12 +923,12 @@
"dev": true
},
"@freesewing/plugin-bundle": {
- "version": "0.1.9",
- "resolved": "https://registry.npmjs.org/@freesewing/plugin-bundle/-/plugin-bundle-0.1.9.tgz",
- "integrity": "sha512-sD/RBtE5dXV0JWSrcpJhQwanJreppWQr+eQn3r2mrBBv5H1nLn9mmrb+/FMB9cPgNr8OxeKbNcf4MoYR+7rjKg==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@freesewing/plugin-bundle/-/plugin-bundle-0.2.0.tgz",
+ "integrity": "sha512-FQyKbgRo6Es87611EoNWmXur7vivE5ti5B8wVc+TSDIbVBWB/eRB0scRfC0sd/DB+gzg0XQhMF3/I7LNekvHLA==",
"requires": {
"@freesewing/plugin-cutonfold": "0.9.0",
- "@freesewing/plugin-dimension": "0.5.2",
+ "@freesewing/plugin-dimension": "0.6.0",
"@freesewing/plugin-grainline": "0.0.3",
"@freesewing/plugin-logo": "0.3.3",
"@freesewing/plugin-scalebox": "0.1.2",
@@ -953,9 +953,9 @@
"dev": true
},
"@freesewing/plugin-dimension": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@freesewing/plugin-dimension/-/plugin-dimension-0.5.2.tgz",
- "integrity": "sha512-84wqa905cwprdKw8vqs5/y8VvphXdkeUgCgzfY28Y6N1L1MhKOn/Dpux2C9AN5xUpFv/aopuId/9b8fGjTuZww=="
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@freesewing/plugin-dimension/-/plugin-dimension-0.6.0.tgz",
+ "integrity": "sha512-oSoL8eJOZDTvE9hj/4JxClo8h9W25Z1vbwGK36HEF+7keWNhJJiDUoisPa2cBJn6w3Gsr8iOZkT3lFyO3trzVw=="
},
"@freesewing/plugin-grainline": {
"version": "0.0.3",
diff --git a/packages/examples/src/index.js b/packages/examples/src/index.js
index c7fa1b03d4b..882d61019ee 100644
--- a/packages/examples/src/index.js
+++ b/packages/examples/src/index.js
@@ -17,6 +17,7 @@ import pointShift from "./point.shift";
import pointShiftTowards from "./point.shifttowards";
import pointShiftFractionTowards from "./point.shiftfractiontowards";
import pointShiftOutwards from "./point.shiftoutwards";
+import pointTranslate from "./point.translate";
import pointSitsOn from "./point.sitson";
import pointClone from "./point.clone";
@@ -38,6 +39,7 @@ import pathIntersectsY from "./path.intersectsy";
import pathIntersects from "./path.intersects";
import pathDivide from "./path.divide";
import pathSplit from "./path.split";
+import pathTranslate from "./path.translate";
import utilsLinesIntersect from "./utils.linesintersect";
import utilsBeamsIntersect from "./utils.beamsintersect";
@@ -79,6 +81,7 @@ pattern.draft = function() {
if (this.needs('pointShiftTowards')) this.parts.pointShiftTowards = this.draftPointShiftTowards(new pattern.Part());
if (this.needs('pointShiftFractionTowards')) this.parts.pointShiftFractionTowards = this.draftPointShiftFractionTowards(new pattern.Part());
if (this.needs('pointShiftOutwards')) this.parts.pointShiftOutwards = this.draftPointShiftOutwards(new pattern.Part());
+ if (this.needs('pointTranslate')) this.parts.pointTranslate = this.draftPointTranslate(new pattern.Part());
if (this.needs('pointSitsOn')) this.parts.pointSitsOn = this.draftPointSitsOn(new pattern.Part());
if (this.needs('pointClone')) this.parts.pointClone = this.draftPointClone(new pattern.Part());
@@ -100,6 +103,7 @@ pattern.draft = function() {
if (this.needs('pathIntersects')) this.parts.pathIntersects = this.draftPathIntersects(new pattern.Part());
if (this.needs('pathDivide')) this.parts.pathDivide = this.draftPathDivide(new pattern.Part());
if (this.needs('pathSplit')) this.parts.pathSplit = this.draftPathSplit(new pattern.Part());
+ if (this.needs('pathTranslate')) this.parts.pathTranslate = this.draftPathTranslate(new pattern.Part());
if (this.needs('utilsLinesIntersect')) this.parts.utilsLinesIntersect = this.draftUtilsLinesIntersect(new pattern.Part());
if (this.needs('utilsBeamsIntersect')) this.parts.utilsBeamsIntersect = this.draftUtilsBeamsIntersect(new pattern.Part());
@@ -138,6 +142,7 @@ pattern.draftPointShift = part => pointShift.draft(part);
pattern.draftPointShiftTowards = part => pointShiftTowards.draft(part);
pattern.draftPointShiftFractionTowards = part => pointShiftFractionTowards.draft(part);
pattern.draftPointShiftOutwards = part => pointShiftOutwards.draft(part);
+pattern.draftPointTranslate = part => pointTranslate.draft(part);
pattern.draftPointSitsOn = part => pointSitsOn.draft(part);
pattern.draftPointClone = part => pointClone.draft(part);
@@ -159,6 +164,7 @@ pattern.draftPathIntersectsY = part => pathIntersectsY.draft(part);
pattern.draftPathIntersects = part => pathIntersects.draft(part);
pattern.draftPathDivide = part => pathDivide.draft(part);
pattern.draftPathSplit = part => pathSplit.draft(part);
+pattern.draftPathTranslate = part => pathTranslate.draft(part);
pattern.draftUtilsLinesIntersect = part => utilsLinesIntersect.draft(part);
pattern.draftUtilsBeamsIntersect = part => utilsBeamsIntersect.draft(part);
diff --git a/packages/examples/src/path.translate.js b/packages/examples/src/path.translate.js
new file mode 100644
index 00000000000..fbc1cf5db0d
--- /dev/null
+++ b/packages/examples/src/path.translate.js
@@ -0,0 +1,39 @@
+var pathTranslate = {
+ draft: function(part) {
+ // prettier-ignore
+ let {Point, points, Path, paths, Snippet, snippets, macro} = part.shorthand();
+
+ points.A = new Point(45, 60);
+ points.B = new Point(10, 30);
+ points.BCp2 = new Point(40, 20);
+ points.C = new Point(90, 30);
+ points.CCp1 = new Point(50, -30);
+
+ paths.A = new Path()
+ .move(points.A)
+ .line(points.B)
+ .curve(points.BCp2, points.CCp1, points.C)
+ .attr('data-text', 'Path A')
+ .attr('data-text-class', 'center');
+
+ paths.B = paths.A.translate(60, 30)
+ .attr('data-text', 'with a translate(60,30) transform applied');
+
+ points.step1 = points.B.shift(0,60);
+ points.step2 = points.step1.shift(-90,30);
+ macro('ld', {
+ from: points.B,
+ to: points.step1,
+ noStartMarker: true
+ });
+ macro('ld', {
+ from: points.step1,
+ to: points.step2,
+ noStartMarker: true
+ });
+
+ return part;
+ }
+};
+
+export default pathTranslate;
diff --git a/packages/examples/src/point.translate.js b/packages/examples/src/point.translate.js
new file mode 100644
index 00000000000..ef15aac383e
--- /dev/null
+++ b/packages/examples/src/point.translate.js
@@ -0,0 +1,28 @@
+var pointTranslate = {
+ draft: function(part) {
+ // prettier-ignore
+ let {Point, points, Snippet, snippets, macro} = part.shorthand();
+
+ points.A = new Point(10, 10)
+ .attr('data-text', 'Point A')
+ points.B = points.A.translate(120, 60)
+ .attr('data-text', "Point B is point A with a\ntranslate(120, 60)\ntransform applied")
+ .attr('data-text-class', 'right')
+ .attr('data-text-dy', -6)
+ .attr('data-text-lineheight', 6);
+
+ snippets.A = new Snippet("x", points.A);
+ snippets.B = new Snippet("x", points.B);
+
+ macro('ld', {
+ from: points.A,
+ to: points.B,
+ text: 'translate(120,60)',
+ noStartMarker: true
+ });
+
+ return part;
+ }
+};
+
+export default pointTranslate;