/*
- ledger-line-spanner.cc -- implement Ledger_line_spanner
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
+ Copyright (C) 2004--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 2004--2006 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 <map>
using namespace std;
-#include "item.hh"
#include "note-head.hh"
#include "staff-symbol-referencer.hh"
#include "staff-symbol.hh"
Interval x_extent,
Real left_shorten);
- static bool has_interface (Grob *);
+ DECLARE_GROB_INTERFACE ();
};
Stencil
{
int line_count = (staff_extent.contains (pos)
? 0
- : sign (pos) * int (rint(pos - staff_extent[Direction (sign (pos))])) / 2);
+ : sign (pos) * int (rint (pos - staff_extent[Direction (sign (pos))])) / 2);
Stencil stencil;
if (line_count)
{
// find size of note heads.
Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
if (!staff)
- return SCM_EOL;
+ {
+ me->suicide ();
+ return SCM_EOL;
+ }
Real min_length_fraction
= robust_scm2double (me->get_property ("minimum-length-fraction"), 0.15);
&& !staff_extent.contains (i->second[d].position_
- sign (i->second[d].position_)));
Real limit = (center + (both ? which * gap / 2 : 0));
- lr.ledger_extent_.elem_ref (-which)
+ lr.ledger_extent_.at (-which)
= which * max (which * lr.ledger_extent_[-which], which * limit);
}
while (flip (&which) != LEFT);
}
ADD_INTERFACE (Ledger_line_spanner,
- "ledger-line-interface",
-
- "This spanner draws the ledger lines of a staff.\n"
- "This is a separate grob because it has to process\n"
- "all potential collisions between all note heads.",
+ "This spanner draws the ledger lines of a staff. This is a"
+ " separate grob because it has to process all potential"
+ " collisions between all note heads.",
/* properties */
+ "gap "
+ "length-fraction "
+ "minimum-length-fraction "
"note-heads "
"thickness "
- "minimum-length-fraction "
- "length-fraction "
- "gap");
+ );
struct Ledgered_interface
{
- static bool has_interface (Grob *);
+ DECLARE_GROB_INTERFACE ();
};
ADD_INTERFACE (Ledgered_interface,
- "ledgered-interface",
+ "Objects that need ledger lines, typically note heads. See"
+ " also @ref{ledger-line-spanner-interface}.",
- "Objects that need ledger lines, typically "
- "note heads. See also @ref{ledger-line-interface}.",
-
- "no-ledgers");
+ /* properties */
+ "no-ledgers "
+ );