From: hanwen Date: Sun, 19 Feb 2006 00:14:59 +0000 (+0000) Subject: * lily/enclosing-bracket.cc (width): new function. X-Git-Tag: release/2.7.38^2~107 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=40266dff222d92f2c47f620eca667c7fdd13873e;p=lilypond.git * lily/enclosing-bracket.cc (width): new function. * lily/align-interface.cc (align_elements_to_extents): reinstate warning. --- diff --git a/ChangeLog b/ChangeLog index a727c6de84..384436cc5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-02-19 Han-Wen Nienhuys + + * lily/enclosing-bracket.cc (width): new function. + + * lily/align-interface.cc (align_elements_to_extents): reinstate + warning. + 2006-02-18 Heikki Junes * Documentation/index.html.in: fix spelling: thankyous. diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 0b8bfc0b9c..c315e4ec32 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -13,6 +13,7 @@ #include "pointer-group-interface.hh" #include "hara-kiri-group-spanner.hh" #include "grob-array.hh" +#include "international.hh" /* TODO: for vertical spacing, should also include a rod & spring @@ -27,7 +28,7 @@ Align_interface::calc_positioning_done (SCM smob) { Grob *me = unsmob_grob (smob); SCM axis = scm_car (me->get_property ("axes")); - Axis ax = (Axis)scm_to_int (axis); + Axis ax = Axis (scm_to_int (axis)); SCM force = me->get_property ("forced-distance"); if (scm_is_number (force)) @@ -152,7 +153,14 @@ Align_interface::align_elements_to_extents (Grob *me, Axis a) SCM line_break_details = SCM_EOL; if (a == Y_AXIS && me_spanner) - line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details"); + { + line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details"); + + if (!me->get_system ()) + me->warning (_ ("vertical alignment called before line-breaking.\n" + "Only do cross-staff spanners with PianoStaff.")); + + } Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"), DOWN); diff --git a/lily/enclosing-bracket.cc b/lily/enclosing-bracket.cc index c1e6f57cf5..81a292a2ec 100644 --- a/lily/enclosing-bracket.cc +++ b/lily/enclosing-bracket.cc @@ -19,25 +19,59 @@ struct Enclosing_bracket public: DECLARE_SCHEME_CALLBACK(print, (SCM)); + DECLARE_SCHEME_CALLBACK(width, (SCM)); }; ADD_INTERFACE(Enclosing_bracket, "enclosing-bracket-interface", + "Brackets alongside bass figures.", /* props */ "bracket-flare " - "shorten-pair " "edge-height " + "elements " "padding " + "shorten-pair " "thickness " - "elements " ); /* ugh: should make bracket interface. */ +MAKE_SCHEME_CALLBACK (Enclosing_bracket, width, 1); +SCM +Enclosing_bracket::width (SCM grob) +{ + /* + UGH. cut & paste code. + */ + Grob *me = unsmob_grob (grob); + extract_grob_set (me, "elements", elements); + if (elements.empty ()) + { + me->suicide (); + return SCM_EOL; + } + + Grob *common_x = common_refpoint_of_array (elements, me, X_AXIS); + Interval xext = Axis_group_interface::relative_group_extent (elements, common_x, X_AXIS); + + Stencil left_br = Horizontal_bracket::make_bracket (me, 10.0, Y_AXIS, LEFT); + Stencil right_br = Horizontal_bracket::make_bracket (me, 10.0, Y_AXIS, LEFT); + + + xext.widen (robust_scm2double (me->get_property ("padding"), 0.25)); + left_br.translate_axis (xext[LEFT], X_AXIS); + right_br.translate_axis (xext[RIGHT], X_AXIS); + + left_br.add_stencil (right_br); + left_br.translate_axis (-me->relative_coordinate (common_x, X_AXIS), X_AXIS); + + return ly_interval2scm (left_br.extent (X_AXIS)); +} + MAKE_SCHEME_CALLBACK (Enclosing_bracket, print, 1); SCM Enclosing_bracket::print (SCM grob) diff --git a/lily/horizontal-bracket.cc b/lily/horizontal-bracket.cc index bd8435d032..80baa95de5 100644 --- a/lily/horizontal-bracket.cc +++ b/lily/horizontal-bracket.cc @@ -88,8 +88,9 @@ ADD_INTERFACE (Horizontal_bracket, "A horizontal bracket encompassing notes.", /* props */ - "columns " "bracket-flare " + "columns " + "edge-height " "shorten-pair " - "edge-height"); + ); diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 8fc764618b..527adae8c9 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -219,18 +219,15 @@ font-interface)))))) (BassFigureBracket . ( - ; (stencil . ,ly:enclosing-bracket::print) - + (X-extent . ,ly:enclosing-bracket::width) (edge-height . (0.2 . 0.2)) (meta . ((class . Item) (interfaces . (enclosing-bracket-interface)) )) )) (BassFigureContinuation . ( - (stencil . ,ly:figured-bass-continuation::print) - (Y-offset . ,ly:figured-bass-continuation::center-on-figures) (meta . ((class . Spanner) (interfaces . (figured-bass-continuation-interface)) @@ -238,9 +235,7 @@ (BassFigureLine . ( (axes . (,Y)) - (Y-extent . ,ly:axis-group-interface::height) - (meta . ((class . Spanner) (interfaces . (axis-group-interface )))))) @@ -249,10 +244,8 @@ . ( (axes . (,Y)) (threshold . (2 . 1000)) - (positioning-done . ,ly:align-interface::calc-positioning-done) (Y-extent . ,ly:axis-group-interface::height) - (stacking-dir . -1) (meta . ((class . Spanner) (interfaces . (align-interface