lilypond-devel
[Top][All Lists]
Advanced

[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}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]