/*
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
i != stems.end (); i++)
{
Grob *stem = (*i);
- Stencil flag = Stem::flag (stem);
- if (!flag.is_empty ())
+ Grob *flag = Stem::flag (stem);
+ if (flag)
{
- Interval y = flag.extent (Y_AXIS)
- * (2 / ss)
- + Stem::stem_end_position (stem);
-
- Interval x = stem->relative_coordinate (commonx, X_AXIS)
- + flag.extent (X_AXIS);
+ Grob *commony = stem->common_refpoint (flag, Y_AXIS);
+ Interval y = flag->extent (commony, Y_AXIS) * (2 / ss);
+ Interval x = flag->extent (commonx, X_AXIS);
boxes.push_back (Box (x, y));
}
Grob *note = dots[i]->get_parent (Y_AXIS);
if (note)
{
- Grob *stem = unsmob_grob (note->get_object ("stem"));
- if (stem)
- dp.extremal_head_ = Stem::first_head (stem) == note;
+ if (Note_head::has_interface (note))
+ dp.dir_ = to_dir (dp.dot_->get_property ("direction"));
dp.x_extent_ = note->extent (commonx, X_AXIS);
}
offset callback but adding a dot overwrites Y-offset. */
p += (int) robust_scm2double (dp.dot_->get_property ("staff-position"), 0.0);
dp.pos_ = p;
- if (dp.extremal_head_)
- dp.dir_ = to_dir (dp.dot_->get_property ("direction"));
cfg.remove_collision (p);
cfg[p] = dp;
"dots "
"positioning-done "
"direction "
+ "note-collision "
);