}
}
+vector<Grob*>
+Accidental_placement::get_break_reminder_accidentals (vector<Grob*> const &elts, Grob *left)
+{
+ vector<Grob*> br;
+ vector<Grob*> ra;
+ vector<Grob*> ret;
+
+ if (dynamic_cast<Item *> (left)->break_status_dir () != RIGHT)
+ return vector<Grob*> ();
+
+ for (vsize i = 0; i < elts.size (); i++)
+ {
+ split_accidentals (elts[i], &br, &ra);
+ ret.insert (ret.end (), br.begin (), br.end ());
+ }
+ return ret;
+}
+
/*
Accidentals are special, because they appear and disappear after
ties at will.
DECLARE_SCHEME_CALLBACK (alignment_callback, (SCM element));
static void add_accidental (Grob *, Grob *);
+ static vector<Grob*> get_break_reminder_accidentals (vector<Grob*> const &elts,
+ Grob *left);
static Interval get_relevant_accidental_extent (Grob *me,
Item *item_col,
Grob *acc);
Skyline_pair::unsmob (items[RIGHT]->get_property ("skylines")));
Skyline right = conditional_skyline (items[RIGHT], items[LEFT]);
right.merge ((*lines[RIGHT])[LEFT]);
-
+
Real dist = padding + (*lines[LEFT])[RIGHT].distance (right);
if (dist > 0)
{
int very_large = INT_MAX;
Paper_column *pc = item->get_column ();
vector<Box> out;
- extract_grob_set (me, left ? "conditional-elements" : "elements", elts);
+ extract_grob_set (me, left ? "conditional-elements" : "elements", read_only_elts);
+ vector<Grob*> elts;
+
+ if (left)
+ elts = Accidental_placement::get_break_reminder_accidentals (read_only_elts, left);
+ else
+ elts = read_only_elts;
Grob *ycommon = common_refpoint_of_array (elts, me, Y_AXIS);
continue;
Interval y (il->pure_height (ycommon, 0, very_large));
- Interval x;
-
- if (!left)
- x = il->extent (pc, X_AXIS);
- else if (Accidental_placement::has_interface (il))
- x = Accidental_placement::get_relevant_accidental_extent (il, pc, left);
- else
- continue;
+ Interval x (il->extent (pc, X_AXIS));
SCM padding = elts[i]->get_property ("padding");
x.widen (robust_scm2double (padding, 0));
-
+
out.push_back (Box (x, y));
}