]> git.donarmstrong.com Git - lilypond.git/commitdiff
Do not draw ledger lines on top of staff lines
authorPaul Morris <paulwmorris@gmail.com>
Wed, 6 Jan 2016 21:29:46 +0000 (16:29 -0500)
committerJames Lowe <pkx166h@gmail.com>
Sat, 16 Jan 2016 11:31:59 +0000 (11:31 +0000)
when StaffSymbol.ledger-extra > 0

input/regression/ledger-extra.ly [new file with mode: 0644]
lily/staff-symbol.cc

diff --git a/input/regression/ledger-extra.ly b/input/regression/ledger-extra.ly
new file mode 100644 (file)
index 0000000..55ad653
--- /dev/null
@@ -0,0 +1,28 @@
+\version "2.19.36"
+
+\header {
+  texidoc = "The ledger-extra grob property increases
+the number of ledger lines drawn, but they are not
+drawn on top of staff lines."
+}
+
+notes = \relative {
+  \time 6/8
+  a4. b | c d | e f |
+  g4. a | b c | d e |
+  f4. g | a b |
+}
+
+\new Staff {
+  \notes
+}
+
+\new Staff {
+  \override Staff.StaffSymbol.ledger-extra = 1
+  \notes
+}
+
+\new Staff {
+  \override Staff.StaffSymbol.ledger-extra = 2
+  \notes
+}
index de88102d1420d140152786692eeeb72b0ce8bb5a..256a9bdd0d24687ac26a63cc8cbc9a7ca2c7159e 100644 (file)
@@ -247,7 +247,20 @@ Staff_symbol::ledger_positions (Grob *me, int pos)
           values[i] = nearest_line + dir * (ledger_count - i) * 2;
         }
     }
-  return values;
+  // remove any ledger lines that would fall on staff lines,
+  // which can happen when ledger-extra > 0
+  vector<Real> final_values;
+  for (vector<Real>::const_iterator i = values.begin (),
+       e = values.end ();
+       i != e;
+       ++i)
+    {
+      if (find (line_positions.begin (), line_positions.end (), *i) == line_positions.end ())
+        {
+          final_values.push_back (*i);
+        }
+    }
+  return final_values;
 }
 
 int