/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2012 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
Interval result;
Grob *me = unsmob_grob (smob);
if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me))
- result = staff->extent (staff, Y_AXIS);
-
+ {
+ result = staff->extent (staff, Y_AXIS);
+
+ /* Due to rounding problems, bar lines extending to the outermost edges
+ of the staff lines appear wrongly in on-screen display
+ (and, to a lesser extent, in print) - they stick out a pixel.
+ The solution is to extend bar lines only to the middle
+ of the staff line - unless they have different colors,
+ when it would be undesirable.
+ */
+ SCM bar_line_color = me->get_property ("color");
+ SCM staff_color = staff->get_property ("color");
+ Real radius = Staff_symbol_referencer::staff_radius (me);
+ if (bar_line_color == staff_color && radius)
+ result *= (1 - 0.5 * (Staff_symbol_referencer::line_thickness (me) / radius));
+ }
return ly_interval2scm (result);
}
"kern "
"thin-kern "
"hair-thickness "
+ "has-span-bar "
"thick-thickness "
"glyph "
"glyph-name "