From 40b0a6f7045d76b2d289df757a72ed18942e10f1 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 17 Feb 2006 17:56:55 +0000 Subject: [PATCH] (get_default_dir): oops. Take abs () for extremes[DOWN]. (get_default_dir): use extreme position criterion only in absence of forced stem directions. --- ChangeLog | 2 ++ lily/beam.cc | 22 +++++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 525723edf9..9ca91ad941 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ * lily/beam.cc (get_default_dir): oops. Take abs () for extremes[DOWN]. + (get_default_dir): use extreme position criterion only in absence + of forced stem directions. * VERSION (PATCH_LEVEL): bump VERSION. diff --git a/lily/beam.cc b/lily/beam.cc index b3b65301ee..0fd41be22c 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -536,21 +536,20 @@ Beam::get_default_dir (Grob *me) while (flip (&d) != DOWN); } - if (abs (extremes[UP]) > -extremes[DOWN]) - return DOWN; - else if (extremes[UP] < -extremes[DOWN]) - return UP; - Drul_array total (0, 0); Drul_array count (0, 0); - + + bool force_dir = false; for (vsize i = 0; i < stems.size (); i++) { Grob *s = stems[i]; Direction stem_dir = CENTER; SCM stem_dir_scm = s->get_property_data (ly_symbol2scm ("direction")); if (is_direction (stem_dir_scm)) - stem_dir = to_dir (stem_dir_scm); + { + stem_dir = to_dir (stem_dir_scm); + force_dir = true; + } else stem_dir = to_dir (s->get_property ("default-direction")); @@ -564,6 +563,15 @@ Beam::get_default_dir (Grob *me) } } + + if (!force_dir) + { + if (abs (extremes[UP]) > -extremes[DOWN]) + return DOWN; + else if (extremes[UP] < -extremes[DOWN]) + return UP; + } + Direction dir = CENTER; Direction d = CENTER; if ((d = (Direction) sign (count[UP] - count[DOWN]))) -- 2.39.5