]> git.donarmstrong.com Git - lilypond.git/commitdiff
Document and regtest merge solfa fa-head feature.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 26 Apr 2008 02:00:06 +0000 (23:00 -0300)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 26 Apr 2008 02:00:06 +0000 (23:00 -0300)
input/regression/collision-head-solfa-fa.ly [new file with mode: 0644]
lily/note-collision.cc

diff --git a/input/regression/collision-head-solfa-fa.ly b/input/regression/collision-head-solfa-fa.ly
new file mode 100644 (file)
index 0000000..1e06782
--- /dev/null
@@ -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 }
+>>
+
+
index 1b71f3f72d4dcc5caaa39c8cd940163e8b08d01d..894f16071fa5d5e76e0d2101ffe4a897e47c13b3 100644 (file)
@@ -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)
     {