X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvolta-bracket.cc;h=e1d3fa8a4ad5565fd7cac78bff1029340164f1fa;hb=bfda8de0877891229b8366b56add7ec67cf37dc1;hp=561f0830f8ac02dc505725d000eb45e48630de9f;hpb=64313890b232c731d432e5b096f30bffc3f3756d;p=lilypond.git diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc index 561f0830f8..e1d3fa8a4a 100644 --- a/lily/volta-bracket.cc +++ b/lily/volta-bracket.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2006 Jan Nieuwenhuizen + (c) 1997--2007 Jan Nieuwenhuizen */ #include @@ -63,6 +63,10 @@ Volta_bracket_interface::print (SCM smob) */ } + modify_edge_height (me); + if (!me->is_live ()) + return SCM_EOL; + Drul_array edge_height = robust_scm2interval (me->get_property ("edge-height"), Interval (1.0, 1.0)); Drul_array flare = robust_scm2interval (me->get_property ("bracket-flare"), @@ -70,6 +74,8 @@ Volta_bracket_interface::print (SCM smob) Drul_array shorten = robust_scm2interval (me->get_property ("shorten-pair"), Interval (0, 0)); + + scale_drul (&edge_height, - Real (get_grob_direction (me))); Interval empty; @@ -93,7 +99,7 @@ Volta_bracket_interface::print (SCM smob) num.align_to (Y_AXIS, UP); num.translate_axis (-0.5, Y_AXIS); total.add_at_edge (X_AXIS, LEFT, num, - num.extent (X_AXIS).length () - - 1.0, 0); + - 1.0); } total.translate_axis (left, X_AXIS); @@ -101,25 +107,21 @@ Volta_bracket_interface::print (SCM smob) } -MAKE_SCHEME_CALLBACK(Volta_bracket_interface,after_line_breaking, 1); -SCM -Volta_bracket_interface::after_line_breaking (SCM smob) +void +Volta_bracket_interface::modify_edge_height (Spanner *me) { - Spanner *me = unsmob_spanner (smob); Spanner *orig_span = dynamic_cast (me->original ()); bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0] == (Spanner *)me); - bool broken_last_bracket = orig_span && (orig_span->broken_intos_.back () == (Spanner *)me); - bool no_vertical_start = orig_span && !broken_first_bracket; bool no_vertical_end = orig_span && !broken_last_bracket; extract_grob_set (me, "bars", bars); Grob *endbar = bars.size () ? bars.back () : 0; - SCM glyph = endbar ? endbar->get_property ("glyph") : SCM_EOL; + SCM glyph = endbar ? endbar->get_property ("glyph-name") : SCM_EOL; - std::string str; + string str; if (scm_is_string (glyph)) str = ly_scm2string (glyph); else @@ -144,25 +146,20 @@ Volta_bracket_interface::after_line_breaking (SCM smob) me->set_property ("edge-height", ly_interval2scm (edge_height)); } - - return SCM_UNSPECIFIED; + + if (broken_last_bracket && no_vertical_end && no_vertical_start + && !broken_first_bracket) + me->suicide (); } void Volta_bracket_interface::add_bar (Grob *me, Item *b) { Pointer_group_interface::add_grob (me, ly_symbol2scm ("bars"), b); - Side_position_interface::add_support (me, b); add_bound_item (dynamic_cast (me), b); } -void -Volta_bracket_interface::add_column (Grob *me, Grob *c) -{ - Side_position_interface::add_support (me, c); -} - -ADD_INTERFACE (Volta_bracket_interface, "volta-bracket-interface", +ADD_INTERFACE (Volta_bracket_interface, "Volta bracket with number", /* properties */