App-Music-ChordPro
view release on metacpan or search on metacpan
lib/ChordPro/res/abc/abc2svg/combine-1.js view on Meta::CPAN
s2 = null
break
}
//fixme: may have rests in beam
if (s2.beam_end)
break
do {
s2 = s2.next
} while (s2.type != C.NOTE && s2.type != C.REST)
}
if (!s2)
continue
s2 = s
while (1) {
s2 = do_combine(s2)
//fixme: may have rests in beam
if (s2.beam_end)
break
do {
s2 = s2.next
} while (s2.type != C.NOTE && s2.type != C.REST)
}
}
}, // comb_v()
do_pscom: function(of, text) {
if (text.slice(0, 13) == "voicecombine ")
this.set_v_param("combine", text.split(/[ \t]/)[1])
else
of(text)
},
new_note: function(of, gr, tp) {
var curvoice = this.get_curvoice()
var s = of(gr, tp)
if (s && s.notes && curvoice.combine != undefined)
s.combine = curvoice.combine
return s
},
set_stem_dir: function(of) {
of();
abc2svg.combine.comb_v.call(this)
},
// set the combine parameter in the current voice
set_vp: function(of, a) {
var i,
curvoice = this.get_curvoice()
for (i = 0; i < a.length; i++) {
if (a[i] == "combine=") { // %%voicecombine
curvoice.combine = a[i + 1]
break
}
}
of(a)
},
set_hooks: function(abc) {
abc.do_pscom = abc2svg.combine.do_pscom.bind(abc, abc.do_pscom);
abc.new_note = abc2svg.combine.new_note.bind(abc, abc.new_note);
abc.set_stem_dir = abc2svg.combine.set_stem_dir.bind(abc, abc.set_stem_dir);
abc.set_vp = abc2svg.combine.set_vp.bind(abc, abc.set_vp)
}
} // combine
if (!abc2svg.mhooks)
abc2svg.mhooks = {}
abc2svg.mhooks.combine = abc2svg.combine.set_hooks
( run in 1.079 second using v1.01-cache-2.11-cpan-2398b32b56e )