- if (dynamic_p_)
- {
- dynamic_req_l_arr_[i]->warning (_("Got a dynamic already. Continuing dazed and confused"));
- continue;
- }
-
- Text_def * td_p = new Text_def;
- td_p->align_dir_ = CENTER;
- String loud = dynamic_cast <Absolute_dynamic_req *> (dreq_l)->loudness_str ();
- td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_;
- td_p->style_str_ = "dynamic";
+ Side_position_interface::set_axis (line_spanner_, Y_AXIS);
+ Axis_group_interface::set_interface (line_spanner_);
+ Axis_group_interface::set_axes (line_spanner_, Y_AXIS, Y_AXIS);
+
+ Music * rq = accepted_spanreqs_drul_[START];
+ if (script_req_l_)
+ rq = script_req_l_ ;
+ announce_grob (line_spanner_, rq);
+
+
+ }
+ }
+
+ /*
+ During a (de)crescendo, pending request will not be cleared,
+ and a line-spanner will always be created, as \< \! are already
+ two requests.
+
+ Note: line-spanner must always have at least same duration
+ as (de)crecsendo, b.o. line-breaking.
+ */
+
+
+
+ /*
+ maybe we should leave dynamic texts to the text-engraver and
+ simply acknowledge them?
+ */
+ if (script_req_l_)
+ {
+ script_p_ = new Item (get_property ("DynamicText"));
+ script_p_->set_grob_property ("text",
+ script_req_l_->get_mus_property ("text"));
+
+ Side_position_interface::set_direction (script_p_, DOWN);
+
+ if (Direction d = script_req_l_->get_direction ())
+ Directional_element_interface::set (line_spanner_, d);
+
+ Axis_group_interface::add_element (line_spanner_, script_p_);
+
+ announce_grob (script_p_, script_req_l_);
+ }
+
+ if (accepted_spanreqs_drul_[STOP])
+ {
+ /*
+ finish side position alignment if the (de)cresc ends here, and
+ there are no new dynamics.
+ */
+
+ if (!cresc_p_)
+ {
+ accepted_spanreqs_drul_[STOP]->origin ()->warning
+ (_ ("can't find start of (de)crescendo"));
+ accepted_spanreqs_drul_[STOP] = 0;
+ }
+ else
+ {
+ assert (!finished_cresc_p_ && cresc_p_);