/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2015 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
}
/**
- Item copy ctor. Copy nothing: everything should be a elt property
+ Item copy ctor. Copy nothing: everything should be an elt property
or a special purpose pointer (such as broken_to_drul_[]) */
Item::Item (Item const &s)
: Grob (s)
Item::copy_breakable_items ()
{
Drul_array<Item *> new_copies;
- Direction i = LEFT;
- do
+ for (LEFT_and_RIGHT (d))
{
Grob *dolly = clone ();
Item *item = dynamic_cast<Item *> (dolly);
get_root_system (this)->typeset_grob (item);
- new_copies[i] = item;
+ new_copies[d] = item;
}
- while (flip (&i) != LEFT);
broken_to_drul_ = new_copies;
}
if (get_system () == l)
return (Item *) (this);
- Direction d = LEFT;
- do
+ for (LEFT_and_RIGHT (d))
{
Grob *s = broken_to_drul_[d];
if (s && s->get_system () == l)
return s;
}
- while (flip (&d) != LEFT);
return 0;
}
Drul_array<Item *> bounds (l, r);
Interval_t<Moment> iv;
- Direction d = LEFT;
- do
+ for (LEFT_and_RIGHT (d))
{
if (bounds[d] && bounds[d]->get_column ())
iv[d] = robust_scm2moment (bounds[d]->get_column ()->get_property ("when"),
iv[d]);
}
- while (flip (&d) != LEFT);
- do
+ for (LEFT_and_RIGHT (d))
{
if (!bounds[d] || !bounds[d]->get_column ())
iv[d] = iv[-d];
}
- while (flip (&d) != LEFT);
return iv;
}
scm_gc_mark (broken_to_drul_[RIGHT]->self_scm ());
}
-Item *
-unsmob_item (SCM s)
-{
- return dynamic_cast<Item *> (unsmob_grob (s));
-}
-
Interval
-Item::pure_height (Grob *g, int start, int end)
+Item::pure_y_extent (Grob *g, int start, int end)
{
if (cached_pure_height_valid_)
return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
/* Note: cached_pure_height_ does not notice if start changes, implicitly
assuming that Items' pure_heights do not depend on 'start' or 'end'.
- Accidental_interface::pure_height(), however, does depend on 'start'.
*/
- cache_pure_height (Grob::pure_height (this, start, end));
+ cache_pure_height (Grob::pure_y_extent (this, start, end));
return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
}