[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Allow override of NoteHead.ledger-positions (issue 295970043 by address@
From: |
paulwmorris |
Subject: |
Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden) |
Date: |
Wed, 20 Apr 2016 13:29:54 +0000 |
Reviewers: ,
Message:
Please review. I've posted an implementation question in the issue
tracker.
https://sourceforge.net/p/testlilyissues/issues/4828/
Thanks, -Paul
Description:
Allow override of NoteHead.ledger-positions
Can be a literal list of positions:
\once \override NoteHead.ledger-positions = #'(...)
Or a scheme procedure that returns such a list:
\override NoteHead.ledger-positions = #(lambda (grob) ...)
Please review this at https://codereview.appspot.com/295970043/
Affected files (+38, -5 lines):
A input/regression/ledger-positions-override-via-note-head.ly
M lily/ledger-line-spanner.cc
M lily/note-head.cc
M scm/define-grob-properties.scm
Index: input/regression/ledger-positions-override-via-note-head.ly
diff --git a/input/regression/ledger-positions-override-via-note-head.ly
b/input/regression/ledger-positions-override-via-note-head.ly
new file mode 100644
index
0000000000000000000000000000000000000000..0894373ca31884481fa973c7892722905649d69a
--- /dev/null
+++ b/input/regression/ledger-positions-override-via-note-head.ly
@@ -0,0 +1,18 @@
+
+\header {
+
+texidoc = "Ledger line positions can be overridden
+via NoteHead grobs."
+
+}
+
+\version "2.19.41"
+\paper { ragged-right = ##t }
+\relative {
+ c'''4
+ \once \override NoteHead.ledger-positions = #'(8 10 12 14)
+ c
+ \override NoteHead.ledger-positions =
+ #(lambda (grob) (list (ly:grob-staff-position grob)))
+ d e
+}
Index: lily/ledger-line-spanner.cc
diff --git a/lily/ledger-line-spanner.cc b/lily/ledger-line-spanner.cc
index
42d32b496af7bb5ec7a15f1b52cdbc4ea84959c8..9246cd0f62a710cafb89f3d484a72112b71fa360
100644
--- a/lily/ledger-line-spanner.cc
+++ b/lily/ledger-line-spanner.cc
@@ -211,10 +211,22 @@ Ledger_line_spanner::print (SCM smob)
for (vsize i = heads.size (); i--;)
{
Item *h = dynamic_cast<Item *> (heads[i]);
-
int pos = Staff_symbol_referencer::get_rounded_position (h);
- vector<Real> ledger_positions =
- Staff_symbol::ledger_positions (staff, pos);
+ vector<Real> ledger_positions;
+
+ // allow user to override ledger positions by note head grob
+ SCM posns = h->get_property ("ledger-positions");
+ if (scm_is_pair (posns))
+ {
+ int len = scm_to_int (scm_length (posns));
+ for (int p = 0; p < len; p++)
+ {
+ ledger_positions.push_back
+ (scm_to_double (scm_list_ref (posns, scm_from_int (p))));
+ }
+ }
+ else
+ ledger_positions = Staff_symbol::ledger_positions (staff, pos);
// We work with all notes that produce ledgers and any notes that
// fall outside the staff that do not produce ledgers, such as
Index: lily/note-head.cc
diff --git a/lily/note-head.cc b/lily/note-head.cc
index
33bbf339cafd9b431b83d2955522c2c8f91c1379..73a2255d9040a91199e994cf05c2fe0e6f9a74b5
100644
--- a/lily/note-head.cc
+++ b/lily/note-head.cc
@@ -211,5 +211,6 @@ ADD_INTERFACE (Note_head,
"glyph-name "
"stem-attachment "
"style "
+ "ledger-positions "
);
Index: scm/define-grob-properties.scm
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
index
e54bdaf18386363be5afb59c7016051dedf88af2..dcf9705998236a2a78da8ae062fb62d003930731
100644
--- a/scm/define-grob-properties.scm
+++ b/scm/define-grob-properties.scm
@@ -575,8 +575,10 @@ lines for.")
lines. It is the sum of address@hidden: The first is the factor for
line thickness, and the second for staff space. Both contributions
are added.")
- (ledger-positions ,list? "Repeating pattern for the vertical positions
-of ledger lines. Bracketed groups are always shown together.")
+ (ledger-positions ,list? "Vertical positions of ledger lines.
+When set on a @code{StaffSymbol} grob it defines a repeating
+pattern of ledger lines and any parenthesized groups will always be
+shown together.")
(left-bound-info ,list? "An alist of properties for determining
attachments of spanners to edges.")
(left-padding ,ly:dimension? "The amount of space that is put
- Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden),
paulwmorris <=
- Re: Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden), dak, 2016/04/22
- Re: Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden), paulwmorris, 2016/04/23
- Re: Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden), paulwmorris, 2016/04/23
- Re: Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden), lemzwerg, 2016/04/23
- Re: Allow override of NoteHead.ledger-positions (issue 295970043 by address@hidden), paulwmorris, 2016/04/24