abcjs
Version:
Renderer for abc music notation
47 lines (40 loc) • 1.52 kB
JavaScript
var sprintf = require('./sprintf');
var renderText = require('./text');
var printPath = require('./print-path');
var roundNumber = require("./round-number");
function drawEnding(renderer, params, linestartx, lineendx, selectables) {
if (params.pitch === undefined)
window.console.error("Ending Element y-coordinate not set.");
var y = roundNumber(renderer.calcY(params.pitch));
var height = 20;
var pathString = '';
if (params.anchor1) {
linestartx = roundNumber(params.anchor1.x + params.anchor1.w);
pathString += sprintf("M %f %f L %f %f ",
linestartx, y, linestartx, roundNumber(y + height));
}
if (params.anchor2) {
lineendx = roundNumber(params.anchor2.x);
pathString += sprintf("M %f %f L %f %f ",
lineendx, y, lineendx, roundNumber(y + height));
}
pathString += sprintf("M %f %f L %f %f ",
linestartx, y, lineendx, y);
renderer.paper.openGroup({ klass: renderer.controller.classes.generate("ending"), "data-name": "ending" });
printPath(renderer, { path: pathString, stroke: renderer.foregroundColor, fill: renderer.foregroundColor, "data-name": "line" });
if (params.anchor1)
renderText(renderer, {
x: roundNumber(linestartx + 5),
y: roundNumber(renderer.calcY(params.pitch - 0.5)),
text: params.text,
type: 'repeatfont',
klass: 'ending',
anchor: "start",
noClass: true,
name: params.text
});
var g = renderer.paper.closeGroup();
selectables.wrapSvgEl({ el_type: "ending", startChar: -1, endChar: -1 }, g);
return [g];
}
module.exports = drawEnding;