|
|
var sprintf = require('./sprintf'); |
|
|
var printPath = require('./print-path'); |
|
|
var roundNumber = require("./round-number"); |
|
|
|
|
|
function drawCrescendo(renderer, params, selectables) { |
|
|
if (params.pitch === undefined) |
|
|
window.console.error("Crescendo Element y-coordinate not set."); |
|
|
var y = renderer.calcY(params.pitch) + 4; |
|
|
var height = 8; |
|
|
|
|
|
|
|
|
var left = params.anchor1 ? params.anchor1.x : 0; |
|
|
var right = params.anchor2 ? params.anchor2.x : 800; |
|
|
|
|
|
var el; |
|
|
if (params.dir === "<") { |
|
|
el = drawLine(renderer, y + height / 2, y, y + height / 2, y + height, left, right); |
|
|
} else { |
|
|
el = drawLine(renderer, y, y + height / 2, y + height, y + height / 2, left, right); |
|
|
} |
|
|
selectables.wrapSvgEl({ el_type: "dynamicDecoration", startChar: -1, endChar: -1 }, el); |
|
|
return [el]; |
|
|
} |
|
|
|
|
|
var drawLine = function (renderer, y1, y2, y3, y4, left, right) { |
|
|
y1 = roundNumber(y1); |
|
|
y2 = roundNumber(y2); |
|
|
y3 = roundNumber(y3); |
|
|
y4 = roundNumber(y4); |
|
|
left = roundNumber(left); |
|
|
right = roundNumber(right); |
|
|
|
|
|
var pathString = sprintf("M %f %f L %f %f M %f %f L %f %f", |
|
|
left, y1, right, y2, left, y3, right, y4); |
|
|
return printPath(renderer, { path: pathString, highlight: "stroke", stroke: renderer.foregroundColor, 'class': renderer.controller.classes.generate('dynamics decoration'), "data-name": "dynamics" }); |
|
|
}; |
|
|
|
|
|
module.exports = drawCrescendo; |
|
|
|