X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fottava-bracket.cc;h=cc33d8b152fd4a311a769d980184d2800bb1b37f;hb=8659a99f233f5c4684292728e7ad4206669b35b0;hp=f70a30b404e1125ed6ee252c1a820f581b8d52d6;hpb=caac677710724849651381d11577f61dd9618bcf;p=lilypond.git diff --git a/lily/ottava-bracket.cc b/lily/ottava-bracket.cc index f70a30b404..cc33d8b152 100644 --- a/lily/ottava-bracket.cc +++ b/lily/ottava-bracket.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2012 Han-Wen Nienhuys + Copyright (C) 2004--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,14 +28,13 @@ #include "staff-symbol-referencer.hh" #include "note-column.hh" #include "directional-element-interface.hh" -#include "tuplet-bracket.hh" +#include "bracket.hh" #include "rhythmic-head.hh" #include "pointer-group-interface.hh" struct Ottava_bracket { DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_GROB_INTERFACE (); }; /* @@ -49,7 +48,7 @@ MAKE_SCHEME_CALLBACK (Ottava_bracket, print, 1); SCM Ottava_bracket::print (SCM smob) { - Spanner *me = dynamic_cast (unsmob_grob (smob)); + Spanner *me = unsmob (smob); Interval span_points; Grob *common = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), X_AXIS); @@ -61,7 +60,7 @@ Ottava_bracket::print (SCM smob) Item *b = me->get_bound (d); broken[d] = (b->break_status_dir () != CENTER); - if (Note_column::has_interface (b)) + if (has_interface (b)) { extract_grob_set (b, "note-heads", heads); common = common_refpoint_of_array (heads, common, X_AXIS); @@ -79,7 +78,7 @@ Ottava_bracket::print (SCM smob) SCM markup = me->get_property ("text"); Stencil text; if (Text_interface::is_markup (markup)) - text = *unsmob_stencil (Text_interface::interpret_markup (layout->self_scm (), + text = *unsmob (Text_interface::interpret_markup (layout->self_scm (), properties, markup)); Drul_array shorten = robust_scm2interval (me->get_property ("shorten-pair"), @@ -94,7 +93,7 @@ Ottava_bracket::print (SCM smob) Item *b = me->get_bound (d); Interval ext; - if (Note_column::has_interface (b)) + if (has_interface (b)) { extract_grob_set (b, "note-heads", heads); for (vsize i = 0; i < heads.size (); i++) @@ -119,6 +118,8 @@ Ottava_bracket::print (SCM smob) else span_points[d] = ext[d]; + + span_points[d] -= d * shorten[d]; } /* @@ -150,26 +151,23 @@ Ottava_bracket::print (SCM smob) Stencil b; Interval empty; + if (!bracket_span_points.is_empty () && bracket_span_points.length () > 0.001) - b = Tuplet_bracket::make_bracket (me, - Y_AXIS, Offset (bracket_span_points.length (), 0), - edge_height, - empty, - flare, shorten); + b = Bracket::make_bracket ( + me, Y_AXIS, Offset (bracket_span_points.length (), 0), + edge_height, empty, flare, Drul_array (0, 0)); /* - The vertical lines should not take space, for the following scenario: - - 8 -----+ - o | - | - | - - - Just a small amount, yes. In tight situations, it is even - possible to center the `8' directly below the note, dropping the - ottava line completely... - + * The vertical lines should not take space, for the following scenario: + * + * 8 -----+ + * o | + * | + * | + * + * Just a small amount, yes. In tight situations, it is even + * possible to center the `8' directly below the note, dropping the + * ottava line completely... */ b = Stencil (Box (b.extent (X_AXIS),