From: Han-Wen Nienhuys Date: Thu, 16 Sep 2004 19:03:12 +0000 (+0000) Subject: add ledgered-interface, with X-Git-Tag: release/2.3.17~23 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=02a3239b092b8c887941a22764f08de793240c74;p=lilypond.git add ledgered-interface, with property no-ledgers. --- diff --git a/ChangeLog b/ChangeLog index 51c7a85793..8ed66eee9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-16 Han-Wen Nienhuys + + * lily/ledger-line-spanner.cc: add ledgered-interface, with + property no-ledgers. + 2004-09-16 Heikki Junes * Documentation/user/{changing-defaults,examples,invoking, diff --git a/lily/ledger-line-engraver.cc b/lily/ledger-line-engraver.cc index 9a3a4156e1..754b6946f2 100644 --- a/lily/ledger-line-engraver.cc +++ b/lily/ledger-line-engraver.cc @@ -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 */ "") diff --git a/lily/ledger-line-spanner.cc b/lily/ledger-line-spanner.cc index 179c6e0e3e..200c1d9176 100644 --- a/lily/ledger-line-spanner.cc +++ b/lily/ledger-line-spanner.cc @@ -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"); diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc index c17d5e630b..41b15d9807 100644 --- a/lily/slur-scoring.cc +++ b/lily/slur-scoring.cc @@ -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; } diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index ada043ee3e..adcb4a9034 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -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 diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 80210c8ba9..5ee2eece9d 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -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) @@ -78,7 +79,12 @@ (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 @@ -731,6 +737,7 @@ (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 )))) ))