/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2011 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
{
}
/* process whiteout */
- if (to_boolean (get_property ("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 */
return 0;
}
+/* This version of get_system is more reliable than this->get_system ()
+ before line-breaking has been done, at which point there is only
+ one system in the whole score and we can find it just by following
+ parent pointers. */
+System *
+Grob::get_system(Grob *me)
+{
+ Grob *p = me->get_parent (X_AXIS);
+ return p ? get_system (p) : dynamic_cast<System *>(me);
+}
void
Grob::handle_broken_dependencies ()
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);
return Interval_t<int> (-1, 0);
}
+bool
+Grob::pure_is_visible (int /* start */, int /* end */) const
+{
+ return true;
+}
+
+/* Sort grobs according to their starting column. */
+bool
+Grob::less (Grob *g1, Grob *g2)
+{
+ return g1->spanned_rank_interval ()[LEFT] < g2->spanned_rank_interval ()[LEFT];
+}
+
/****************************************************************
REFPOINTS
****************************************************************/