From: Joe Neeman Date: Sun, 7 Jan 2007 09:25:53 +0000 (+0200) Subject: Merge branch 'master' of git+ssh://jneem@git.sv.gnu.org/srv/git/lilypond X-Git-Tag: release/2.11.11-1~45^2~7 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e42585017a01fd02f6353b994cf0c87b03a7bb2e;hp=-c;p=lilypond.git Merge branch 'master' of git+ssh://jneem@git.sv.gnu.org/srv/git/lilypond --- e42585017a01fd02f6353b994cf0c87b03a7bb2e diff --combined lily/grob.cc index 91f8ce5016,0591ab115f..0738e80869 --- a/lily/grob.cc +++ b/lily/grob.cc @@@ -59,7 -59,16 +59,16 @@@ Grob::Grob (SCM basicprops SCM meta = get_property ("meta"); if (scm_is_pair (meta)) - interfaces_ = scm_cdr (scm_assq (ly_symbol2scm ("interfaces"), meta)); + { + interfaces_ = scm_cdr (scm_assq (ly_symbol2scm ("interfaces"), meta)); + + SCM object_cbs = scm_assq (ly_symbol2scm ("object-callbacks"), meta); + if (scm_is_pair (object_cbs)) + { + for (SCM s = scm_cdr (object_cbs); scm_is_pair (s); s = scm_cdr (s)) + set_object (scm_caar (s), scm_cdar (s)); + } + } if (get_property_data ("X-extent") == SCM_EOL) set_property ("X-extent", Grob::stencil_width_proc); @@@ -420,21 -429,11 +429,21 @@@ Grob::extent (Grob *refp, Axis a) cons Interval Grob::pure_height (Grob *refp, int start, int end) { - SCM proc = get_property_data ( ly_symbol2scm ("Y-extent")); - Interval iv = robust_scm2interval (call_pure_function (proc, - scm_list_1 (self_scm ()), - start, end), - Interval (0, 0)); + SCM proc = get_property_data (ly_symbol2scm ("Y-extent")); + SCM pure_proc = get_property_data (ly_symbol2scm ("pure-Y-extent")); + SCM iv_scm; + + if (ly_is_procedure (pure_proc)) + iv_scm = scm_apply_3 (pure_proc, + self_scm (), + scm_from_int (start), + scm_from_int (end), SCM_EOL); + else + iv_scm = call_pure_function (proc, + scm_list_1 (self_scm ()), + start, end); + + Interval iv = robust_scm2interval (iv_scm, Interval (0, 0)); Real offset = pure_relative_y_coordinate (refp, start, end); SCM min_ext = get_property ("minimum-Y-extent"); @@@ -636,7 -635,6 +645,7 @@@ ADD_INTERFACE (Grob "outside-staff-horizontal-padding " "outside-staff-padding " "outside-staff-priority " + "pure-Y-extent " "rotation " "springs-and-rods " "staff-symbol " @@@ -644,15 -642,10 +653,10 @@@ "transparent " ); - - - - /**************************************************************** CALLBACKS ****************************************************************/ - static SCM grob_stencil_extent (Grob *me, Axis a) { diff --combined scm/define-grobs.scm index 33493aabdf,35ed147712..d3270748bb --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@@ -23,7 -23,6 +23,7 @@@ (glyph-name-alist . ,standard-alteration-glyph-name-alist) (alteration . ,accidental-interface::calc-alteration) (stencil . ,ly:accidental-interface::print) + (pure-Y-extent . ,ly:accidental-interface::pure-height) (after-line-breaking . ,ly:accidental-interface::after-line-breaking) (meta . ((class . Item) @@@ -36,7 -35,6 +36,7 @@@ (glyph-name-alist . ,standard-alteration-glyph-name-alist) (alteration . ,accidental-interface::calc-alteration) (stencil . ,ly:accidental-interface::print) + (pure-Y-extent . ,ly:accidental-interface::pure-height) (after-line-breaking . ,ly:accidental-interface::after-line-breaking) (meta . ((class . Item) @@@ -122,12 -120,11 +122,12 @@@ (X-offset . ,ly:side-position-interface::x-aligned-side) (direction . ,LEFT) (stencil . ,ly:accidental-interface::print) + (pure-Y-extent . ,ly:accidental-interface::pure-height) (glyph-name-alist . ,standard-alteration-glyph-name-alist) (after-line-breaking . ,ly:accidental-interface::after-line-breaking) (side-axis . ,X) (meta . ((class . Item) - (interfaces . (item-interface + (interfaces . ( accidental-interface break-aligned-interface side-position-interface @@@ -325,7 -322,8 +325,8 @@@ (beaming . ,ly:beam::calc-beaming) (stencil . ,ly:beam::print) (clip-edges . #t) - + + (details . ((hint-direction-penalty . 20))) ;; TODO: should be in SLT. (thickness . 0.48) ; in staff-space (neutral-direction . ,DOWN) @@@ -351,7 -349,9 +352,9 @@@ ;; only for debugging. (font-family . roman) (meta . ((class . Spanner) + (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems))) (interfaces . (staff-symbol-referencer-interface + unbreakable-spanner-interface beam-interface)))))) (BendAfter @@@ -492,7 -492,7 +495,7 @@@ rhythmic-grob-interface text-interface chord-name-interface - item-interface)))))) + )))))) (CombineTextScript . ( @@@ -548,6 -548,7 +551,7 @@@ . ( (stencil . ,ly:dots::print) (dot-count . ,dots::calc-dot-count) + (staff-position . ,dots::calc-staff-position) (meta . ((class . Item) (interfaces . (font-interface staff-symbol-referencer-interface @@@ -667,7 -668,6 +671,6 @@@ (self-alignment-X . 0) (self-alignment-Y . 0) (script-priority . 100) - (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) (text . ,fingering::calc-text) @@@ -680,7 -680,7 +683,7 @@@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (FretBoard . ((stencil . ,fret-board::calc-stencil) (finger-code . below-string) @@@ -700,6 -700,7 +703,7 @@@ (after-line-breaking . ,ly:line-spanner::after-line-breaking) (meta . ((class . Spanner) (interfaces . (line-interface + unbreakable-spanner-interface line-spanner-interface)))))) (GraceSpacing @@@ -1375,7 -1376,6 +1379,6 @@@ ;; padding set in script definitions. (staff-padding . 0.25) - ;; (script-priority . 0) priorities for scripts, see script.scm (X-offset . ,ly:self-alignment-interface::centered-on-x-parent) (Y-offset . ,ly:side-position-interface::y-aligned-side) (side-axis . ,Y) @@@ -1618,7 -1618,7 +1621,7 @@@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (StrokeFinger . ( @@@ -1639,7 -1639,7 +1642,7 @@@ text-interface side-position-interface self-alignment-interface - item-interface)))))) + )))))) (SustainPedal @@@ -1890,8 -1890,8 +1893,8 @@@ (stencil . ,ly:accidental-interface::print) (glyph-name-alist . ,standard-alteration-glyph-name-alist) (meta . ((class . Item) - (interfaces . (item-interface - trill-pitch-accidental-interface + (interfaces . (trill-pitch-accidental-interface + accidental-interface side-position-interface font-interface)))))) @@@ -1906,6 -1906,7 +1909,7 @@@ (padding . 0.3) (meta . ((class . Item) (interfaces . (side-position-interface + parentheses-interface note-head-interface rhythmic-head-interface font-interface @@@ -1918,8 -1919,7 +1922,7 @@@ (Y-offset . ,ly:staff-symbol-referencer::callback) (font-size . -4) (meta . ((class . Item) - (interfaces . (item-interface - rhythmic-head-interface + (interfaces . (rhythmic-head-interface font-interface pitched-trill-interface ledgered-interface @@@ -2003,6 -2003,7 +2006,7 @@@ (padding . 0.5) (skylines . ,ly:axis-group-interface::combine-skylines) (meta . ((class . Spanner) + (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common))) (interfaces . (align-interface axis-group-interface)))))) (VerticalAxisGroup @@@ -2013,6 -2014,7 +2017,7 @@@ (X-extent . ,ly:axis-group-interface::width) (skylines . ,ly:axis-group-interface::calc-skylines); (meta . ((class . Spanner) + (object-callbacks . ((X-common . ,ly:axis-group-interface::calc-x-common))) (interfaces . (axis-group-interface hara-kiri-group-spanner-interface vertically-spaceable-interface)))))) @@@ -2082,6 -2084,8 +2087,8 @@@ (cons 'spanner-interface ifaces-entry)))) (else (ly:warning "Unknown class ~a" class))) + + (set! ifaces-entry (uniq-list (sort ifaces-entry symbol