UNPKG

abcjs

Version:

Renderer for abc music notation

47 lines (40 loc) 1.52 kB
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;