#include "note-head.hh"
#include "output-def.hh"
#include "pointer-group-interface.hh"
+#include "item.hh"
#include "rhythmic-head.hh"
#include "staff-symbol-referencer.hh"
#include "side-position-interface.hh"
if (!Note_column::get_stem (cu) || !Note_column::get_stem (cd))
return;
+ Drul_array<Grob*> stems (Note_column::get_stem (cd),
+ Note_column::get_stem (cu));
+
Grob *nu = Note_column::first_head (cu);
Grob *nd = Note_column::first_head (cd);
/* Should never merge quarter and half notes, as this would make
them indistinguishable. */
if (merge_possible
- && ((Rhythmic_head::duration_log (nu) == 1
- && Rhythmic_head::duration_log (nd) == 2)
- || (Rhythmic_head::duration_log (nu) == 2
- && Rhythmic_head::duration_log (nd) == 1)))
+ && ((Stem::duration_log (stems[UP]) == 1
+ && Stem::duration_log (stems[DOWN]) == 2)
+ || (Stem::duration_log (stems[UP]) == 2
+ && Stem::duration_log (stems[DOWN]) == 1)))
merge_possible = false;
/*
else
shift_amount *= 0.17;
+ /*
+
+ */
+ if (full_collide
+ && dnball_type * upball_type == 0)
+ {
+ if (upball_type == 0 && dnball_type == 1)
+ shift_amount *= 1.25;
+ else if (upball_type == 0 && dnball_type == 2)
+ shift_amount *= 1.35;
+ else if (dnball_type == 0 && upball_type == 1)
+ shift_amount *= 0.7;
+ else if (dnball_type == 0 && upball_type == 2)
+ shift_amount *= 0.75;
+ }
+
/*
* Fix issue #44:
*
Axis_group_interface::add_element (me, ncol);
}
-ADD_INTERFACE (Note_collision_interface, "note-collision-interface",
+ADD_INTERFACE (Note_collision_interface,
"An object that handles collisions between notes with different stem "
"directions and horizontal shifts. Most of the interesting properties "
"are to be set in @ref{note-column-interface}: these are "
"@code{force-hshift} and @code{horizontal-shift}.",
/* properties */
+ "ignore-collision "
"merge-differently-dotted "
"merge-differently-headed "
- "positioning-done");
+ "positioning-done ");