From: Han-Wen Nienhuys <hanwen@xs4all.nl> Date: Sat, 26 Apr 2008 02:00:06 +0000 (-0300) Subject: Document and regtest merge solfa fa-head feature. X-Git-Tag: release/2.11.45-1~2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c5bfffbcfa3b78c88be90e422435f8f1fa959004;p=lilypond.git Document and regtest merge solfa fa-head feature. --- diff --git a/input/regression/collision-head-solfa-fa.ly b/input/regression/collision-head-solfa-fa.ly new file mode 100644 index 0000000000..1e06782f1e --- /dev/null +++ b/input/regression/collision-head-solfa-fa.ly @@ -0,0 +1,18 @@ + +\header { + texidoc = "The FA note (a triangle) is merged to avoid creating a + block-shaped note." +} + +\version "2.11.44" + +<< + \key c \major + \set Staff.shapeNoteStyles = ##(do re mi fa #f la ti) + + { f'4 } + \\ + { f'4 } +>> + + diff --git a/lily/note-collision.cc b/lily/note-collision.cc index 1b71f3f72d..894f16071f 100644 --- a/lily/note-collision.cc +++ b/lily/note-collision.cc @@ -81,18 +81,6 @@ check_meshing_chords (Grob *me, && !to_boolean (me->get_property ("merge-differently-headed"))) merge_possible = false; - /* what's this for? In particular, why do we check merge_possible when we - haven't finished determining it yet? --jneem */ - if (merge_possible - && head_up->get_property ("style") == ly_symbol2scm ("fa") - && head_down->get_property ("style") == ly_symbol2scm ("fa")) - { - Interval uphead_size = head_up->extent (head_up, Y_AXIS); - Offset att = Offset (0.0, -1.0); - head_up->set_property ("stem-attachment", ly_offset2scm (att)); - head_up->set_property ("transparent", SCM_BOOL_T); - } - /* Should never merge quarter and half notes, as this would make them indistinguishable. */ if (merge_possible @@ -186,6 +174,20 @@ check_meshing_chords (Grob *me, else if (Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down)) stem_to_stem = true; } + + /* The solfa is a triangle, which is inverted depending on stem + direction. In case of a collision, one of them should be removed, + so the resulting note does not look like a block. + */ + if (merge_possible + && head_up->get_property ("style") == ly_symbol2scm ("fa") + && head_down->get_property ("style") == ly_symbol2scm ("fa")) + { + Interval uphead_size = head_up->extent (head_up, Y_AXIS); + Offset att = Offset (0.0, -1.0); + head_up->set_property ("stem-attachment", ly_offset2scm (att)); + head_up->set_property ("transparent", SCM_BOOL_T); + } if (merge_possible) {