+ set_grob_direction (line_, d);
+ }
+}
+
+void
+Dynamic_align_engraver::set_spanner_bounds (Spanner *line, bool end)
+{
+ if (!line)
+ return;
+
+ for (LEFT_and_RIGHT (d))
+ {
+ if ((d == LEFT && !line->get_bound (LEFT))
+ || (end && d == RIGHT && !line->get_bound (RIGHT)))
+ {
+ vector<Spanner *> const &spanners
+ = (d == LEFT) ? started_ : ended_;
+
+ Grob *bound = 0;
+ if (scripts_.size ())
+ bound = scripts_[0];
+ else if (spanners.size ())
+ bound = spanners[0]->get_bound (d);
+ else
+ {
+ bound = unsmob<Grob> (get_property ("currentMusicalColumn"));
+ programming_error ("started DynamicLineSpanner but have no left bound");
+ }
+
+ line->set_bound (d, bound);
+ }