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

63 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-07-26 07:18:21 +00:00
import style from "./lib/style";
import { version, name } from "../package.json";
2018-07-22 18:54:58 +02:00
2018-07-26 07:18:21 +00:00
export default {
name: name,
version: version,
2018-07-22 18:54:58 +02:00
hooks: {
preRender: function(svg) {
if (svg.attributes.get("freesewing:plugin-title") === false) {
svg.attributes.set("freesewing:plugin-title", version);
svg.style += style;
}
2018-07-22 18:54:58 +02:00
}
2018-07-26 07:18:21 +00:00
},
macros: {
title: function(so) {
const transform = function(anchor) {
let cx = anchor.x - so.scale * anchor.x;
let cy = anchor.y - so.scale * anchor.y;
return `matrix(${so.scale}, 0, 0, ${so.scale}, ${cx}, ${cy}) rotate(${
so.rotation
} ${anchor.x} ${anchor.y})`;
};
let defaults = {
scale: 1,
rotation: 0
};
so = { ...defaults, ...so };
let overwrite = true;
if (so.append) overwrite = false;
let prefix = "";
if (so.prefix) prefix = so.prefix;
this.points[`_${prefix}_titleNr`] = so.at
.clone()
.attr("data-text", so.nr, overwrite)
.attr("data-text-class", "title-nr note fill-note")
.attr("data-text-transform", transform(so.at));
let shift = 10;
if (so.title) {
this.points[`_${prefix}_titleName`] = so.at
.shift(-90 - so.rotation, 13 * so.scale)
.attr("data-text", so.title)
.attr("data-text-class", "title-name")
.attr(
"data-text-transform",
transform(so.at.shift(-90 - so.rotation, 13 * so.scale))
);
shift += 10;
}
this.points[`_${prefix}_titlePattern`] = so.at
.shift(-90 - so.rotation, shift * so.scale)
.attr("data-text", this.context.config.name)
.attr("data-text", "v" + this.context.config.version)
.attr("data-text-class", "title-pattern fill-note")
.attr(
"data-text-transform",
transform(so.at.shift(-90 - so.rotation, shift * so.scale))
);
2018-07-22 18:54:58 +02:00
}
}
2018-07-26 07:18:21 +00:00
};