UNPKG

vexflow

Version:

A JavaScript library for rendering music notation and guitar tablature

168 lines (154 loc) 5.96 kB
/** * VexFlow - MultiMeasureRest Tests * Copyright Mohit Muthanna 2010 <mohit@muthanna.com> */ VF.Test.MultiMeasureRest = (function() { return { Start: function() { QUnit.module('MultiMeasureRest'); VF.Test.runTests('Simple Test', VF.Test.MultiMeasureRest.simple0); VF.Test.runTests('Stave with modifiers Test', VF.Test.MultiMeasureRest.staveWithModifiers); }, simple0: function(options) { const width = 910; const vf = VF.Test.makeFactory(options, width, 300); const params = [ { number_of_measures: 2, show_number: false }, { number_of_measures: 2 }, { number_of_measures: 2, line_thickness: 8, serif_thickness: 3 }, { number_of_measures: 1, use_symbols: true }, { number_of_measures: 2, use_symbols: true }, { number_of_measures: 3, use_symbols: true }, { number_of_measures: 4, use_symbols: true }, { number_of_measures: 5, use_symbols: true }, { number_of_measures: 6, use_symbols: true }, { number_of_measures: 7, use_symbols: true }, { number_of_measures: 8, use_symbols: true }, { number_of_measures: 9, use_symbols: true }, { number_of_measures: 10, use_symbols: true }, { number_of_measures: 11, use_symbols: true }, { number_of_measures: 11, use_symbols: false, padding_left: 20, padding_right: 20 }, { number_of_measures: 11, use_symbols: true, symbol_spacing: 5 }, { number_of_measures: 11, use_symbols: false, line: 3, number_line: 2 }, { number_of_measures: 11, use_symbols: true, line: 3, number_line: 2 }, [{ options: { spacing_between_lines_px: 15 } }, { number_of_measures: 12 }, ], [{ options: { spacing_between_lines_px: 15 } }, { number_of_measures: 9, use_symbols: true }, ], [{ options: { spacing_between_lines_px: 15 } }, { number_of_measures: 12, spacing_between_lines_px: 15, number_glyph_point: 40 * 1.5 }, ], [{ options: { spacing_between_lines_px: 15 } }, { number_of_measures: 9, spacing_between_lines_px: 15, use_symbols: true, number_glyph_point: 40 * 1.5 }, ], [{ options: { spacing_between_lines_px: 15 } }, { number_of_measures: 9, spacing_between_lines_px: 15, use_symbols: true, number_glyph_point: 40 * 1.5, semibrave_rest_glyph_scale: VF.DEFAULT_NOTATION_FONT_SCALE * 1.5 }, ], ]; const staveWidth = 100; var x = 0; var y = 0; const mmrests = params.map(function(param) { if ((x + (staveWidth * 2)) > width) { x = 0; y += 80; } var staveParams = {}; var mmrestParams = param; if (param.length) { staveParams = param[0]; mmrestParams = param[1]; } staveParams.x = x; x += staveWidth; staveParams.y = y; staveParams.width = staveWidth; const stave = vf.Stave(staveParams); return vf.MultiMeasureRest(mmrestParams).setStave(stave); }); vf.draw(); var xs = mmrests[0].getXs(); const strY = mmrests[0].getStave().getYForLine(-0.5); const str = 'TACET'; const context = vf.getContext(); context.save(); context.setFont('Times', 16, 'bold'); const metrics = context.measureText('TACET'); context.fillText(str, xs.left + ((xs.right - xs.left) * 0.5) - (metrics.width * 0.5), strY); context.restore(); ok(true, 'Simple Test'); }, staveWithModifiers: function(options) { const width = 910; const vf = VF.Test.makeFactory(options, width, 200); // const stave = vf.Stave({ y: 20, width: 270 }); var x = 0; var y = 0; const params = [ [{ clef: 'treble', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', timeSig: '4/4', keySig: 'G', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', endClef: 'bass', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', endKeySig: 'F', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5 }, ], [{ clef: 'treble', endClef: 'bass', endTimeSig: '2/4', params: { width: 150 } }, { number_of_measures: 5, use_symbols: true }, ], ]; params.map(function(param) { const staveOptions = param[0]; const staveParams = staveOptions.params; const mmrestParams = param[1]; if (x + staveParams.width > width) { x = 0; y += 80; } staveParams.x = x; x += staveParams.width; staveParams.y = y; const stave = vf.Stave(staveParams); if (staveOptions.clef) { stave.addClef(staveOptions.clef); } if (staveOptions.timeSig) { stave.addTimeSignature(staveOptions.timeSig); } if (staveOptions.keySig) { stave.addKeySignature(staveOptions.keySig); } if (staveOptions.endClef) { stave.addEndClef(staveOptions.endClef); } if (staveOptions.endKeySig) { stave.setEndKeySignature(staveOptions.endKeySig); } if (staveOptions.endTimeSig) { stave.setEndTimeSignature(staveOptions.endTimeSig); } return vf.MultiMeasureRest(mmrestParams).setStave(stave); }); vf.draw(); ok(true, 'Stave with modifiers Test'); }, }; }());