X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fligature-engraver.cc;h=08d3b419962ab833b4ead2389083662d0a87f0a0;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=ed346a14805504e7cf68374e005bf83340ce51a8;hpb=f93e4199873c91ae32f0e84a610d14853dc379df;p=lilypond.git diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc index ed346a1480..08d3b41996 100644 --- a/lily/ligature-engraver.cc +++ b/lily/ligature-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2002--2011 Juergen Reuter + Copyright (C) 2002--2015 Juergen Reuter LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,9 +44,14 @@ * produce a single connected graphical object of fixed width, * consisting of noteheads and other primitives. Space may be * inserted only after each ligature, if necessary, but in no case - * between the primitives of the ligature. Accidentals have to be put + * between the primitives of the ligature. The same approach is + * used for Kievan notation ligatures, or, rather melismas. + * Though these are not single connected objects, they behave much + * in the same way and have a fixed, small amount of space between + * noteheads. Except in Kievan "ligatures", accidentals have to be put * to the left of the ligature, and not to the left of individual - * noteheads. Class Coherent_ligature_engraver is the common + * noteheads. In Kievan ligatures, the B-flat may be part of the + * ligature itself. Class Coherent_ligature_engraver is the common * superclass for all of these engravers. * * The second category is for engravers that are relaxed in the sense @@ -77,7 +82,8 @@ * would require to have a single, complicated Ligature_engraver that * consists of all the code... This needs further thoughts. */ -Ligature_engraver::Ligature_engraver () +Ligature_engraver::Ligature_engraver (Context *c) + : Engraver (c) { ligature_ = 0; finished_ligature_ = 0; @@ -116,7 +122,7 @@ Ligature_engraver::process_music () primitives_.clear (); ligature_ = 0; } - last_bound_ = unsmob_grob (get_property ("currentMusicalColumn")); + last_bound_ = unsmob (get_property ("currentMusicalColumn")); if (ligature_) { @@ -135,7 +141,7 @@ Ligature_engraver::process_music () prev_start_event_ = events_drul_[START]; ligature_ = create_ligature_spanner (); - Grob *bound = unsmob_grob (get_property ("currentMusicalColumn")); + Grob *bound = unsmob (get_property ("currentMusicalColumn")); if (!bound) events_drul_[START]->origin ()->warning (_ ("no left bound")); else @@ -198,7 +204,7 @@ Ligature_engraver::acknowledge_ligature_head (Grob_info info) if (ligature_) { primitives_.push_back (info); - if (info.grob () && brew_ligature_primitive_proc != SCM_EOL) + if (info.grob () && !scm_is_null (brew_ligature_primitive_proc)) info.grob ()->set_property ("stencil", brew_ligature_primitive_proc); } }