/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2014 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
annoying layer between (rest)collision & (note-head + stem)
*/
-Interval
-Note_column::accidental_width (Grob *me)
-{
- extract_grob_set (me, "note-heads", nhs);
- vector<Grob *> accs;
- for (vsize i = 0; i < nhs.size (); i++)
- if (Grob *acc = unsmob_grob (nhs[i]->get_object ("accidental-grob")))
- accs.push_back (acc);
-
- Grob *common = common_refpoint_of_array (accs, me, X_AXIS);
- common = common_refpoint_of_array (nhs, common, X_AXIS);
-
- Interval nhs_ex = Axis_group_interface::relative_group_extent (nhs, common, X_AXIS);
- Interval accs_ex = Axis_group_interface::relative_group_extent (accs, common, X_AXIS);
-
- if (nhs_ex.is_empty ())
- return accs_ex;
-
- // want an empty interval here
- if (accs_ex.is_empty ())
- return Interval ();
-
- return Interval (accs_ex[LEFT], nhs_ex[LEFT]);
-}
-
bool
Note_column::has_rests (Grob *me)
{
return st ? Stem::first_head (st) : 0;
}
+/*
+ Return extent of the noteheads in the "main column",
+ i.e. excluding any suspended noteheads.
+*/
+Interval
+Note_column::calc_main_heads_extent (Grob *me)
+{
+ if (get_stem (me))
+ return first_head (me)->extent (me, X_AXIS);
+ else
+ {
+ // no stems => no suspended noteheads.
+ extract_grob_set (me, "note-heads", heads);
+ if (heads.size())
+ return heads[0]->extent (me, X_AXIS);
+ else
+ return Interval (0, 0);
+ }
+}
+
/*
Return the first AccidentalPlacement grob that we find in a note-head.
*/
return 0;
}
-Grob *
-Note_column::arpeggio (Grob *me)
-{
- return unsmob_grob (me->get_object ("arpeggio"));
-}
-
/* If a note-column contains a cross-staff stem then
nc->extent (Y_AXIS, refp) will not consider the extent of the stem.
If you want the extent of the stem to be included (and you are safe
"Stem and noteheads combined.",
/* properties */
- "arpeggio "
"force-hshift "
"horizontal-shift "
"ignore-collision "