- Ugh. What do we do if we have three different rests?
-
- */
- int dy = display_count > 2 ? 6 : 4; // FIXME Should get dims from table.
- if (display_count > 1)
+ Direction d = LEFT;
+ do {
+ ordered_rests[d].sort (Note_column::shift_compare);
+ } while (flip (&d) != LEFT);
+
+ do {
+ if (ordered_rests[d].size () < 1)
+ {
+ if (ordered_rests[-d].size() > 1)
+ ordered_rests[-d][0]->warning (_ ("too many colliding rests"));
+
+ return SCM_UNSPECIFIED;
+ }
+ } while (flip (&d) != LEFT);
+
+ Grob *common = common_refpoint_of_array (ordered_rests[DOWN], me, Y_AXIS);
+ common = common_refpoint_of_array (ordered_rests[UP], common, Y_AXIS);
+
+ Real diff =
+ (ordered_rests[DOWN].top ()->extent (common, Y_AXIS)[UP]
+ - ordered_rests[UP].top ()->extent (common, Y_AXIS)[DOWN]) /staff_space;
+
+ if (diff > 0)