[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Allows accidental placements to be individualized. (issue4526094)
From: |
mtsolo |
Subject: |
Allows accidental placements to be individualized. (issue4526094) |
Date: |
Sat, 04 Jun 2011 12:50:55 +0000 |
Reviewers: ,
Message:
Hey all,
This, in combination with my stem-attachment patch, allows for the small
notes above harmonics that give the sounding pitch to be typset well.
Please review!
Cheers,
MS
Description:
A note-column can have individualized accidental placements, which help
with harmonic suggestions.
Please review this at http://codereview.appspot.com/4526094/
Affected files:
M lily/accidental-engraver.cc
M lily/accidental-placement.cc
M lily/note-head.cc
M scm/define-grob-properties.scm
Index: lily/accidental-engraver.cc
diff --git a/lily/accidental-engraver.cc b/lily/accidental-engraver.cc
index
9bd02ee82821b44ce2205cafa7fc6b1a578fc958..7cedc5483ef96caccc1ddaa93a884014f595ae6c
100644
--- a/lily/accidental-engraver.cc
+++ b/lily/accidental-engraver.cc
@@ -325,11 +325,19 @@ Accidental_engraver::make_standard_accidental
(Stream_event * /* note */,
Side_position_interface::add_support (a, right_objects_[i]);
a->set_parent (note_head, Y_AXIS);
-
- if (!accidental_placement_)
- accidental_placement_ = make_item ("AccidentalPlacement",
- a->self_scm ());
- Accidental_placement::add_accidental (accidental_placement_, a);
+ bool solo = to_boolean (note_head->get_property
("solo-accidental-placement"));
+ if (!accidental_placement_ && !solo)
+ {
+ accidental_placement_ = make_item ("AccidentalPlacement",
+ a->self_scm ());
+ Accidental_placement::add_accidental (accidental_placement_, a);
+ }
+ else if (solo)
+ Accidental_placement::add_accidental (make_item
("AccidentalPlacement",
+ a->self_scm ()),
+ a);
+ else
+ Accidental_placement::add_accidental (accidental_placement_, a);
note_head->set_object ("accidental-grob", a->self_scm ());
Index: lily/accidental-placement.cc
diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc
index
4a535c785783d937e3112d8221fef5dbbe2381a2..0da452e510fa0a4c44fc3421c8f0ce69a15961bf
100644
--- a/lily/accidental-placement.cc
+++ b/lily/accidental-placement.cc
@@ -287,6 +287,18 @@ extract_heads_and_stems
(vector<Accidental_placement_entry *> const &apes)
{
Grob *acc = ape->grobs_[j];
Grob *head = acc->get_parent (Y_AXIS);
+
+ if (to_boolean (head->get_property ("solo-accidental-placement")))
+ {
+ if (ret.size ())
+ programming_error ("A solo notehead is included in an
accidental placement.");
+ else
+ {
+ ret.push_back (head);
+ return ret;
+ }
+ }
+
Grob *col = head->get_parent (X_AXIS);
if (Note_column::has_interface (col))
Index: lily/note-head.cc
diff --git a/lily/note-head.cc b/lily/note-head.cc
index
aeb7b4a19bd395bb730178820fcf5c8d150127df..ffd8bf17867c0c4809e9edef96be9b580b8729d2
100644
--- a/lily/note-head.cc
+++ b/lily/note-head.cc
@@ -189,6 +189,7 @@ ADD_INTERFACE (Note_head,
"note-names "
"accidental-grob "
"glyph-name "
+ "solo-accidental-placement "
"stem-attachment "
"style "
);
Index: scm/define-grob-properties.scm
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
index
7fd0b138190bf35f20d9fcec62934c92af86839b..ff368cff194b7082772dcb72d1e599b5426d7718
100644
--- a/scm/define-grob-properties.scm
+++ b/scm/define-grob-properties.scm
@@ -747,6 +747,8 @@ slashes in percent repeat glyphs. Larger values bring
the two
elements closer together.")
(slope ,number? "The slope of this object.")
(slur-padding ,number? "Extra distance between slur and script.")
+ (solo-accidental-placement ,boolean? "Should a note's accidentals
+be placed in a separated accidental placement.")
(space-alist ,list? "A table that specifies distances between
prefatory items, like clef and time-signature. The format is an alist
of spacing tuples: @code{(@var{break-align-symbol} @var{type}
- Allows accidental placements to be individualized. (issue4526094),
mtsolo <=