X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvolta-bracket.cc;h=9ac2b44637f5fab3d24cd0d6235ea384d6faada9;hb=42b6a1852760ac7f46ce894e82a64bbe6c2cff70;hp=f34b060fd64763185d504eeca2cd69eba02c50b1;hpb=101e420a124ab74772aa836479733bd5175b01e1;p=lilypond.git diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc index f34b060fd6..9ac2b44637 100644 --- a/lily/volta-bracket.cc +++ b/lily/volta-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2012 Jan Nieuwenhuizen + Copyright (C) 1997--2015 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 @@ -32,6 +32,7 @@ using namespace std; #include "directional-element-interface.hh" #include "lookup.hh" #include "tuplet-bracket.hh" +#include "lily-imports.hh" /* this is too complicated. Yet another version of side-positioning, @@ -46,13 +47,12 @@ MAKE_SCHEME_CALLBACK (Volta_bracket_interface, print, 1); SCM Volta_bracket_interface::print (SCM smob) { - Spanner *me = unsmob_spanner (smob); + Spanner *me = unsmob (smob); Spanner *orig_span = dynamic_cast (me->original ()); bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0] == (Spanner *)me); Output_def *layout = me->layout (); - Real half_space = 0.5; Item *bound = dynamic_cast (me)->get_bound (LEFT); @@ -92,7 +92,7 @@ Volta_bracket_interface::print (SCM smob) Interval empty; Offset start; - start[X_AXIS] = me->spanner_length () - left - half_space; + start[X_AXIS] = me->spanner_length () - left; /* ugh, Tuplet_bracket should use Horizontal_bracket, not the other way around. @@ -107,7 +107,7 @@ Volta_bracket_interface::print (SCM smob) SCM properties = me->get_property_alist_chain (SCM_EOL); SCM snum = Text_interface::interpret_markup (layout->self_scm (), properties, text); - Stencil num = *unsmob_stencil (snum); + Stencil num = *unsmob (snum); 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 () @@ -128,6 +128,19 @@ Volta_bracket_interface::modify_edge_height (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-name") : SCM_EOL; + + string str; + if (scm_is_string (glyph)) + str = ly_scm2string (glyph); + else + str = "|"; + + no_vertical_end |= ly_scm2bool (Lily::volta_bracket_calc_hook_visibility + (ly_string2scm (str))); + if (no_vertical_end || no_vertical_start) { Drul_array edge_height = robust_scm2interval (me->get_property ("edge-height"), @@ -160,5 +173,6 @@ ADD_INTERFACE (Volta_bracket_interface, "bars " "thickness " "height " + "shorten-pair " );