source file of the GNU LilyPond music typesetter
- (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
*/
last_text_->set_property ("self-alignment-X", scm_from_int (LEFT));
}
else
- {
- text_ = make_item ("LyricText", event_->self_scm ());
- }
+ text_ = make_item ("LyricText", event_->self_scm ());
}
}
if (scm_is_string (voice_name))
nm = ly_scm2string (voice_name);
+ else if (nm == "")
+ return 0;
else
{
ssize idx = nm.rfind ('-');
Grob *
get_current_note_head (Context *voice)
{
+ Moment now = voice->now_mom ();
for (SCM s = voice->get_property ("busyGrobs");
scm_is_pair (s); s = scm_cdr (s))
{
- Item *g = dynamic_cast<Item *> (unsmob_grob (scm_cdar (s)));
+ Grob *g = unsmob_grob (scm_cdar (s));;
+ Moment *end_mom = unsmob_moment (scm_caar (s));
+ if (!end_mom || !g)
+ {
+ programming_error ("busyGrobs invalid");
+ continue;
+ }
- if (g && !g->get_column ()
+ if (end_mom->main_part_ > now.main_part_
+ && dynamic_cast<Item *> (g)
&& Note_head::has_interface (g))
return g;
}
if (head)
{
text_->set_parent (head, X_AXIS);
- if (melisma_busy (voice))
- text_->set_property ("self-alignment-X", scm_from_int (LEFT));
+ if (melisma_busy (voice)
+ && !to_boolean (get_property ("ignoreMelismata")))
+ text_->set_property ("self-alignment-X",
+ get_property("lyricMelismaAlignment"));
}
else
{
}
ADD_TRANSLATOR (Lyric_engraver,
- /* doc */ "",
- /* create */ "LyricText",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Engrave text for lyrics.",
+
+ /* create */
+ "LyricText ",
+
+ /* read */
+ "ignoreMelismata "
+ "lyricMelismaAlignment ",
+
+ /* write */
+ ""
+ );