1
0
Fork 0
freesewing/packages/plugin-cutonfold/src/index.js

45 lines
1.4 KiB
JavaScript
Raw Normal View History

import markers from "./lib/markers";
import { version, name } from "../package.json";
2018-07-23 17:44:52 +00:00
export default {
name: name,
version: version,
2018-07-21 15:34:46 +02:00
hooks: {
preRender: function(svg) {
if (svg.attributes.get("freesewing:plugin-cutonfold") === false) {
svg.attributes.set("freesewing:plugin-cutonfold", version);
svg.defs += markers;
}
2018-07-21 15:34:46 +02:00
}
},
macros: {
2018-08-05 13:04:23 +02:00
cutonfold: function(so) {
2018-07-21 15:34:46 +02:00
let points = this.points;
so = {
offset: 50,
margin: 0.05,
...so
};
points.cutonfoldFrom = so.to.shiftFractionTowards(so.from, so.margin);
points.cutonfoldTo = so.from.shiftFractionTowards(so.to, so.margin);
points.cutonfoldVia1 = so.to
.shiftTowards(so.from, so.offset)
.rotate(-90, points.cutonfoldFrom);
points.cutonfoldVia2 = so.from
.shiftTowards(so.to, so.offset)
.rotate(90, points.cutonfoldTo);
let text = so.grainline ? "cutOnFoldAndGrainline" : "cutOnFold";
this.paths.cutonfold = new this.Path()
.move(points.cutonfoldFrom)
.line(points.cutonfoldVia1)
.line(points.cutonfoldVia2)
.line(points.cutonfoldTo)
.attr("class", "note")
.attr("marker-start", "url(#cutonfoldFrom)")
.attr("marker-end", "url(#cutonfoldTo)")
.attr("data-text", text)
.attr("data-text-class", "center fill-note");
2018-07-21 15:34:46 +02:00
}
}
};