- if (dynamic_cast<Text_def *> (script_p->specs_p_)) // UGH
- {
- Text_def * td_l = (Text_def*)script_p->specs_p_;
- Scalar style = get_property ("textstyle");
- if (style.to_bool ())
- {
- td_l->style_str_= style;
- }
- Scalar alignment = get_property ("textalignment");
- if (alignment.isnum_b())
+ Grob *p = make_item ("Script", ev->self_scm ());
+
+ make_script_from_event (p, context (),
+ ev->get_property ("articulation-type"),
+ i);
+
+ scripts_[i].script_ = p;
+
+ SCM force_dir = ev->get_property ("direction");
+ if (is_direction (force_dir) && to_dir (force_dir))
+ p->set_property ("direction", force_dir);
+ }
+}
+
+void
+Script_engraver::acknowledge_stem (Grob_info info)
+{
+ int script_count = scripts_.size ();
+ for (int i = 0; i < script_count; i++)
+ {
+ Grob *e = scripts_[i].script_;
+
+ if (to_dir (e->get_property ("side-relative-direction")))
+ e->set_object ("direction-source", info.grob ()->self_scm ());
+
+ Side_position_interface::add_support (e, info.grob ());
+ }
+}
+
+void
+Script_engraver::acknowledge_stem_tremolo (Grob_info info)
+{
+ int script_count = scripts_.size ();
+ for (int i = 0; i < script_count; i++)
+ {
+ Grob *e = scripts_[i].script_;
+ Side_position_interface::add_support (e, info.grob ());
+ }
+}
+
+
+void
+Script_engraver::acknowledge_rhythmic_head (Grob_info info)
+{
+ if (info.event_cause ())
+ {
+ for (vsize i = 0; i < scripts_.size (); i++)
+ {
+ Grob *e = scripts_[i].script_;
+
+ if (Side_position_interface::get_axis (e) == X_AXIS
+ && !e->get_parent (Y_AXIS))