/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2010 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
if (Stencil *m = unsmob_stencil (stil))
{
retval = *m;
- if (to_boolean (get_property ("transparent")))
+ bool transparent = to_boolean (get_property ("transparent"));
+
+ if (transparent)
retval = Stencil (m->extent_box (), SCM_EOL);
else
{
retval = Stencil (retval.extent_box (), expr);
}
+ /* process whiteout */
+ /* a grob has to be visible, otherwise the whiteout property has no effect */
+ if (!transparent && to_boolean (get_property ("whiteout")))
+ {
+ /* Call the scheme procedure stencil-whiteout in scm/stencils.scm */
+ /* to add a round-filled-box stencil to the stencil list */
+ retval
+ = *unsmob_stencil (scm_call_1 (ly_lily_module_constant ("stencil-whiteout"),
+ retval.smobbed_copy()));
+ }
}
return retval;
Interval
Grob::pure_height (Grob *refp, int start, int end)
{
- SCM proc = get_property_data (ly_symbol2scm ("Y-extent"));
- SCM iv_scm = call_pure_function (proc,
- scm_list_1 (self_scm ()),
- start, end);
+ SCM iv_scm = get_pure_property ("Y-extent", start, end);
Interval iv = robust_scm2interval (iv_scm, Interval (0, 0));
Real offset = pure_relative_y_coordinate (refp, start, end);
"staff-symbol "
"stencil "
"transparent "
+ "whiteout "
);
/****************************************************************