]> git.donarmstrong.com Git - lilypond.git/commitdiff
add ledgered-interface, with
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 16 Sep 2004 19:03:12 +0000 (19:03 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 16 Sep 2004 19:03:12 +0000 (19:03 +0000)
property no-ledgers.

ChangeLog
lily/ledger-line-engraver.cc
lily/ledger-line-spanner.cc
lily/slur-scoring.cc
scm/define-grob-properties.scm
scm/define-grobs.scm

index 51c7a85793aee5a30e29b495b1b3e35ff534c6b9..8ed66eee9c9693ad92ceaecb5aee844d7d439f2e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-16  Han-Wen Nienhuys   <hanwen@xs4all.nl>
+
+       * lily/ledger-line-spanner.cc: add ledgered-interface, with
+       property no-ledgers.
+
 2004-09-16  Heikki Junes  <hjunes@cc.hut.fi>
 
         * Documentation/user/{changing-defaults,examples,invoking,
index 9a3a4156e117973d67675992f3b7ff30ac683036..754b6946f22a0bf9990ddb5e09b45103edc32e6b 100644 (file)
@@ -52,13 +52,14 @@ Ledger_line_engraver::finalize ()
 void
 Ledger_line_engraver::acknowledge_grob (Grob_info s)
 {
-  Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"),
-                                    s.grob_);
+  if (!to_boolean (s.grob_->get_property ("no-ledgers")))
+    Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"),
+                                      s.grob_);
 }
 ENTER_DESCRIPTION (Ledger_line_engraver,
                   "Creates the spanner to draw ledger lines, and notices objects that need ledger lines",
                   /* creats*/       "LedgerLineSpanner",
                   /* accepts */     "",
-                  /* acks  */      "custos-interface note-head-interface", // ledgered-interface? 
+                  /* acks  */      "ledgered-interface", // ledgered-interface? 
                   /* reads */       "",
                   /* write */       "")
index 179c6e0e3e5e0453029d4b7ff3fcf396c1a84bf6..200c1d91764a5bfdc6f6a19987833ca3594ce3fc 100644 (file)
@@ -249,4 +249,14 @@ Ledger_line_spanner::print (SCM smob)
 ADD_INTERFACE (Ledger_line_spanner,
               "ledger-line-interface",
               "This spanner draws the ledger lines of a staff, for note heads that stick out. ",
-              "note-heads thickness gap length minimum-length")
+              "note-heads thickness gap length minimum-length");
+
+
+struct Ledgered_interface { 
+  static bool has_interface (Grob*);
+};
+
+ADD_INTERFACE (Ledgered_interface,
+              "ledgered-interface",
+              "Objects that need ledger lines.",
+              "no-ledgers");
index c17d5e630bd38605cb912da65af381af04e75a2d..41b15d98078a607ac161340dd0d30815066c41c8 100644 (file)
@@ -503,9 +503,8 @@ set_end_points (Grob *me)
                         &scores);
 
   Real opt = 1e6;
-  int opt_idx = 0;
-  // why backwards?
-  for (int i = scores.size (); i--;)
+  int opt_idx = -1;
+  for (int i = 0; i < scores.size (); i++)
     {
       if (scores[i].score_ < opt)
        {
@@ -849,6 +848,8 @@ enumerate_attachments (Grob *me, Grob *common[],
       
       os[LEFT][Y_AXIS] += dir * staff_space / 2;
     }
+
+  assert (scores.size() > 0);
   return scores;
 }
 
index ada043ee3ea854913dfe705aca9e2f1c5e34c5f6..adcb4a90346e17775115b77dcddd1bf526a7a0d7 100644 (file)
@@ -326,6 +326,7 @@ to flip the direction of custos stem.")
 . @var{accidental})} pairs.")
      (note-names ,vector? "Vector of strings containing names for
 easy-notation note heads.")
+     (no-ledgers ,boolean? "If set, don't draw ledger lines on this object.")
      (no-spacing-rods ,boolean? "Items with this property do not cause
 spacing constraints.")
      (no-stem-extend ,boolean? "If set, notes with ledger lines do not
index 80210c8ba97c2cd22b6d9a44806c53607ce0fcbd..5ee2eece9dd28d8db5097edcceb3d28cdfa459aa 100644 (file)
@@ -47,7 +47,7 @@
        (breakable . #t)
        (break-align-symbol . ambitus)
        (break-visibility . ,begin-of-line-visible)
-       (meta . ((interfaces . (axis-group-interface break-aligned-interface ambitus-interface item-interface ))))
+       (meta . ((interfaces . (axis-group-interface break-aligned-interface ambitus-interface item-interface  ))))
        ))
 
     (AmbitusLine
@@ -69,6 +69,7 @@
        (cautionary-style . parentheses)
        (after-line-breaking-callback . ,Accidental_interface::after_line_breaking)             (meta . ((interfaces . (item-interface accidental-interface break-aligned-interface side-position-interface font-interface))))
        ))
+    
     (AmbitusNoteHead
      . (
        (duration-log . 2)
        (X-extent-callback . ,Note_head::extent)
        (Y-extent-callback . ,Note_head::extent)
        (Y-offset-callbacks  . (,Staff_symbol_referencer::callback))
-       (meta . ((interfaces . (font-interface note-head-interface ambitus-interface staff-symbol-referencer-interface rhythmic-head-interface item-interface ))))
+       (meta . ((interfaces . (font-interface note-head-interface
+                                              ambitus-interface
+                                              staff-symbol-referencer-interface
+                                              rhythmic-head-interface
+                                              ledgered-interface
+                                              item-interface ))))
        ))
     
     (Arpeggio
        (stem-attachment-function . ,note-head-style->attachment-coordinates)
        (meta . ((interfaces . (rhythmic-grob-interface
                                rhythmic-head-interface font-interface note-head-interface
+                               ledgered-interface
                                staff-symbol-referencer-interface item-interface ))))
        ))