X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvolta-bracket.cc;h=6877a1a2eb05f7046eb04bf55b34652760524788;hb=7cd8c1d1e389edc26c26b7eba8358578329f5881;hp=53636c709e94ed192210c0463520e5788e0ef79d;hpb=16cb456cabf477f6d398ff731aa0f10b60913394;p=lilypond.git diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc index 53636c709e..6877a1a2eb 100644 --- a/lily/volta-bracket.cc +++ b/lily/volta-bracket.cc @@ -1,9 +1,20 @@ /* - volta-bracket.cc -- implement Volta_bracket_interface + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2011 Jan Nieuwenhuizen - (c) 1997--2007 Jan Nieuwenhuizen + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include @@ -46,14 +57,17 @@ Volta_bracket_interface::print (SCM smob) Item *bound = dynamic_cast (me)->get_bound (LEFT); /* - not a start, but really broken in two + If the volta bracket appears after a line-break, make + it start after the prefatory matter. */ Real left = 0.; if (bound->break_status_dir () == RIGHT) { Paper_column *pc = bound->get_column (); - left = pc->extent (pc, X_AXIS)[RIGHT] - - bound->relative_coordinate (pc, X_AXIS); + left = pc->break_align_width (pc, ly_symbol2scm ("break-alignment"))[RIGHT] + // For some reason, break_align_width is relative to + // the x-parent of the column. + - bound->relative_coordinate (pc->get_parent (X_AXIS), X_AXIS); } else { @@ -99,7 +113,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); @@ -119,7 +133,7 @@ Volta_bracket_interface::modify_edge_height (Spanner *me) 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; string str; if (scm_is_string (glyph)) @@ -132,6 +146,8 @@ Volta_bracket_interface::modify_edge_height (Spanner *me) && str != "|:" && str != "|." && str != ":|:" + && str != ":|.|:" + && str != ":|.:" && str != ".|"); if (no_vertical_end || no_vertical_start) @@ -156,21 +172,15 @@ 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 with number", + "Volta bracket with number.", /* properties */ "bars " "thickness " - "height"); + "height " + );