X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstaff-symbol.cc;h=d1629dfb243fbe26d88323a052a9b9aeffd1ce3d;hb=e3a15ec3c1951dd16f6ee71fbd79870d9e2fb3a0;hp=dc57a2320491d4b5175cd9ddd165f2d8f5ee0b28;hpb=bc95f4434f760d41191341ab4508b2064eb19025;p=lilypond.git diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index dc57a23204..d1629dfb24 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2010 Han-Wen Nienhuys + Copyright (C) 1997--2011 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 @@ -208,6 +208,24 @@ Staff_symbol::on_line (Grob *me, int pos) return ((abs (pos + line_count (me)) % 2) == 1); } +Interval +Staff_symbol::line_span (Grob *me) +{ + SCM line_positions = me->get_property ("line-positions"); + Interval iv; + + if (scm_is_pair (line_positions)) + for (SCM s = line_positions; scm_is_pair (s); s = scm_cdr (s)) + iv.add_point (scm_to_double (scm_car (s))); + else + { + int count = line_count (me); + return Interval (-count + 1, count - 1); + } + + return iv; +} + ADD_INTERFACE (Staff_symbol, "This spanner draws the lines of a staff. A staff symbol" " defines a vertical unit, the @emph{staff space}. Quantities"