X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstaff-symbol-referencer-scheme.cc;h=74dd8c2e3a97671ce06eb9882ecbef37e5c4a081;hb=a04cebcd9706fd5457d250b2d5df2d54dfc1c8cc;hp=8e0094f143d29abc7f56e8db760e161f934e9f23;hpb=14c5f7683efc21f5cd168a713a34b3362f8c6d67;p=lilypond.git diff --git a/lily/staff-symbol-referencer-scheme.cc b/lily/staff-symbol-referencer-scheme.cc index 8e0094f143..74dd8c2e3a 100644 --- a/lily/staff-symbol-referencer-scheme.cc +++ b/lily/staff-symbol-referencer-scheme.cc @@ -3,16 +3,17 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2007 Han-Wen Nienhuys + (c) 1999--2009 Han-Wen Nienhuys */ #include "grob.hh" -#include "staff-symbol-referencer.hh" #include "libc-extension.hh" +#include "staff-symbol.hh" +#include "staff-symbol-referencer.hh" LY_DEFINE (ly_grob_staff_position, "ly:grob-staff-position", - 1, 0, 0, (SCM sg), - "Return the Y-position of @var{sg} relative to the staff.") + 1, 0, 0, (SCM sg), + "Return the Y-position of @var{sg} relative to the staff.") { LY_ASSERT_SMOB (Grob, sg, 1); Grob *g = unsmob_grob (sg); @@ -23,3 +24,39 @@ LY_DEFINE (ly_grob_staff_position, "ly:grob-staff-position", else return scm_from_double (pos); } + +LY_DEFINE (ly_position_on_line_p, "ly:position-on-line?", + 2, 0, 0, (SCM sg, SCM spos), + "Return whether @var{spos} is on a line of the staff associated" + " with the the grob @var{sg} (even on an extender line).") +{ + LY_ASSERT_SMOB (Grob, sg, 1); + LY_ASSERT_TYPE (scm_is_number, spos, 2); + Grob *g = unsmob_grob (sg); + Grob *st = Staff_symbol_referencer::get_staff_symbol (g); + int pos = scm_to_int (spos); + bool on_line = st ? Staff_symbol::on_line (g, pos) : false; + return scm_from_bool (on_line); +} + +LY_DEFINE (ly_staff_symbol_line_thickness, "ly:staff-symbol-line-thickness", + 1, 0, 0, (SCM grob), + "Returns the @code{line-thickness} of the staff associated" + " with @var{grob}.") +{ + LY_ASSERT_SMOB (Grob, grob, 1); + Grob *g = unsmob_grob (grob); + Real thickness = Staff_symbol_referencer::line_thickness (g); + return scm_from_double (thickness); +} + +LY_DEFINE (ly_staff_symbol_staff_space, "ly:staff-symbol-staff-space", + 1, 0, 0, (SCM grob), + "Returns the @code{staff-space} of the staff associated" + " with @var{grob}.") +{ + LY_ASSERT_SMOB (Grob, grob, 1); + Grob *g = unsmob_grob (grob); + Real staff_space = Staff_symbol_referencer::staff_space (g); + return scm_from_double (staff_space); +}