/*
- ottava-bracket.cc -- implement Ottava_bracket
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
+ Copyright (C) 2004--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 2004--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ 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 <http://www.gnu.org/licenses/>.
*/
#include "text-interface.hh"
-#include "line-spanner.hh"
#include "spanner.hh"
#include "font-interface.hh"
#include "dimensions.hh"
struct Ottava_bracket
{
DECLARE_SCHEME_CALLBACK (print, (SCM));
- static bool has_interface (Grob *);
+ DECLARE_GROB_INTERFACE ();
};
/*
{
extract_grob_set (b, "note-heads", heads);
common = common_refpoint_of_array (heads, common, X_AXIS);
- for (int i = 0; i < heads.size (); i++)
+ for (vsize i = 0; i < heads.size (); i++)
{
Grob *h = heads[i];
Grob *dots = Rhythmic_head::get_dots (h);
SCM markup = me->get_property ("text");
Stencil text;
if (Text_interface::is_markup (markup))
- text = *unsmob_stencil (Text_interface::interpret_markup (layout->self_scm (), properties, markup));
+ text = *unsmob_stencil (Text_interface::interpret_markup (layout->self_scm (),
+ properties, markup));
Drul_array<Real> shorten = robust_scm2interval (me->get_property ("shorten-pair"),
Interval (0, 0));
if (Note_column::has_interface (b))
{
extract_grob_set (b, "note-heads", heads);
- for (int i = 0; i < heads.size (); i++)
+ for (vsize i = 0; i < heads.size (); i++)
{
Grob *h = heads[i];
ext.unite (h->extent (common, X_AXIS));
Drul_array<Real> flare = robust_scm2interval (me->get_property ("bracket-flare"),
Interval (0, 0));
- edge_height[LEFT] = 0.0;
- edge_height[RIGHT] *= -get_grob_direction (me);
- if (broken[RIGHT])
- edge_height[RIGHT] = 0.0;
+ do
+ {
+ edge_height[d] *= -get_grob_direction (me);
+ if (broken[d])
+ edge_height[d] = 0.0;
+ }
+ while (flip(&d) != LEFT);
Stencil b;
Interval empty;
}
ADD_INTERFACE (Ottava_bracket,
- "ottava-bracket-interface",
-
- "An ottava bracket",
+ "An ottava bracket.",
- /*
- properties
- */
+ /* properties */
"edge-height "
"bracket-flare "
"shorten-pair "
- "minimum-length");
+ "minimum-length "
+ );