--- /dev/null
+\version "2.11.44"
+
+\header {
+ texidoc = "Seconds do not confuse the collision algorithm too much. The best
+way to format this would be to merge the two Ds, but we will be happy for now
+if the upstem D does not collide with the downstem C."
+}
+
+
+<< d' \\ <c' d'> >>
--- /dev/null
+
+\header
+{
+ texidoc =
+ "Both edge heights of an ottava bracket can be specified."
+}
+\version "2.11.45"
+
+
+\layout { ragged-right = ##t}
+
+\relative c''' {
+
+ %standard ottavation
+ #(set-octavation 1)
+ a b c
+ #(set-octavation 0)
+ a
+
+ %override the left edge height to produce standard text with a left edge
+ #(set-octavation 1)
+ \once \override Staff.OttavaBracket #'edge-height = #'(1.2 . 1.2)
+ a b c
+ #(set-octavation 0)
+ a
+
+ % Look! we can make them go up!
+ #(set-octavation 1)
+ \once \override Staff.OttavaBracket #'edge-height = #'(-1 . -1)
+ a b c
+ #(set-octavation 0)
+ a
+
+ % and have them go in different directions
+ #(set-octavation 1)
+ \once \override Staff.OttavaBracket #'edge-height = #'(-1.2 . 1.2)
+ a b c
+ #(set-octavation 0)
+ a
+
+}
+
+
Real shift_amount = 1;
bool touch = (ups[0] >= dps.back ());
+ /* As a special case, if the topmost part of the downstem chord is a second,
+ the top note of which is the same pitch as the lowest upstem note, they
+ shouldn't count as touching.
+ */
+ if (dps.back () == ups[0] && dps.size () > 1 && dps[dps.size() - 2] == ups[0] - 1)
+ touch = false;
+
if (touch)
shift_amount *= -1;
Drul_array<Real> flare = robust_scm2interval (me->get_property ("bracket-flare"),
Interval (0, 0));
- edge_height[LEFT] = 0.0;
- edge_height[RIGHT] *= -get_grob_direction (me);
- if (broken[RIGHT])
- edge_height[RIGHT] = 0.0;
+ do
+ {
+ edge_height[d] *= -get_grob_direction (me);
+ if (broken[d])
+ edge_height[d] = 0.0;
+ }
+ while (flip(&d) != LEFT);
Stencil b;
Interval empty;