diff --git a/packages/carlton/index.html b/packages/carlton/index.html index ea9f644e87c..5e23036e122 100644 --- a/packages/carlton/index.html +++ b/packages/carlton/index.html @@ -55,7 +55,7 @@ "naturalWaistToSeat": 280, "seatCircumference": 1130 }, - only: ["pocket", "pocketLining"] + only: ["chestPocketBag"] }; var pattern = new freesewing.patterns.carlton(settings); pattern.use(freesewing.plugins.theme); diff --git a/packages/carlton/src/chestpocketbag.js b/packages/carlton/src/chestpocketbag.js new file mode 100644 index 00000000000..d540de8ed0b --- /dev/null +++ b/packages/carlton/src/chestpocketbag.js @@ -0,0 +1,73 @@ +export default function(part) { + let { units, paperless, sa, store, complete, points, options, macro, Point, paths, Path } = part.shorthand(); + + points.topLeft = new Point(0, 0); + points.bottomRight = new Point( + store.get("chestPocketHeight"), + store.get("chestPocketBagDepth") / 2 + ); + points.bottomLeft = new Point( + points.topLeft.x, + points.bottomRight.y + ); + points.topRight = new Point( + points.bottomRight.x, + points.topLeft.y + ); + points.startLeft = points.topLeft.shiftFractionTowards(points.bottomLeft, 0.33); + points.endLeft = points.topLeft.shiftFractionTowards(points.bottomLeft, 0.66); + points.startRight = points.topRight.shiftFractionTowards(points.bottomRight, 0.33); + points.endRight = points.topRight.shiftFractionTowards(points.bottomRight, 0.66); + + paths.seam = new Path() + .move(points.startRight) + .line(points.topRight) + .line(points.topLeft) + .line(points.startLeft) + .move(points.endLeft) + .line(points.bottomLeft) + .line(points.bottomRight) + .line(points.endRight) + .attr("class", "lining"); + + paths.hint = new Path() + .move(points.startLeft) + .line(points.endLeft) + .move(points.endRight) + .line(points.startRight) + .attr("class", "lining dashed"); + + if (complete) { + points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5); + macro("title", { + at: points.title, + nr: 17, + title: "chestPocketBag" + }); + + macro("grainline", { + from: points.bottomLeft.shift(0, 10), + to: points.topLeft.shift(0, 10) + }); + + if (sa) { + paths.sa = paths.seam.offset(sa).attr("class", "lining sa"); + } + macro("ld", { + from: points.bottomRight.shift(180, 15), + to: points.topRight.shift(180, 15), + text: units(store.get("chestPocketBagDepth") * 2) + + }); + + if (paperless) { + macro("hd", { + from: points.bottomLeft, + to: points.bottomRight, + y: points.bottomLeft.y + sa + 15 + }); + } + } + + return part; +} diff --git a/packages/carlton/src/front.js b/packages/carlton/src/front.js index 7b908f2d46f..292e83855a8 100644 --- a/packages/carlton/src/front.js +++ b/packages/carlton/src/front.js @@ -133,7 +133,7 @@ export default function(part) { "chestPocketBottomLeft", "chestPocketTopRight", "chestPocketBottomRight"]) points[i] = points[i].rotate(options.chestPocketAngle, points.chestPocketAnchor); - + store.set("chestPocketBagDepth", points.button3Left.dx(points.chestPocketBottomLeft)); // Inner pocket points.innerPocketAnchor = new Point( diff --git a/packages/carlton/src/index.js b/packages/carlton/src/index.js index 41f39041597..deae7fd5b45 100644 --- a/packages/carlton/src/index.js +++ b/packages/carlton/src/index.js @@ -17,6 +17,7 @@ import draftPocket from "./pocket"; import draftPocketFlap from "./pocketflap"; import draftPocketLining from "./pocketlining"; import draftChestPocketWelt from "./chestpocketwelt"; +import draftChestPocketBag from "./chestpocketbag"; import draftInnerPocketWelt from "./innerpocketwelt"; import draftInnerPocketBag from "./innerpocketbag"; import draftInnerPocketTab from "./innerpockettab"; @@ -61,6 +62,7 @@ Carlton.prototype.draftPocket = draftPocket; Carlton.prototype.draftPocketFlap = draftPocketFlap; Carlton.prototype.draftPocketLining = draftPocketLining; Carlton.prototype.draftChestPocketWelt = draftChestPocketWelt; +Carlton.prototype.draftChestPocketBag = draftChestPocketBag; Carlton.prototype.draftInnerPocketWelt = draftInnerPocketWelt; Carlton.prototype.draftInnerPocketBag = draftInnerPocketBag; Carlton.prototype.draftInnerPocketTab = draftInnerPocketTab;