#include "dimensions.hh"
#include "directional-element-interface.hh"
#include "engraver.hh"
-#include "event.hh"
-#include "group-interface.hh"
#include "hairpin.hh"
#include "interval.hh"
-#include "item.hh"
-#include "slur.hh"
#include "note-column.hh"
#include "paper-column.hh"
#include "script-interface.hh"
{
Item *script_;
Spanner *line_spanner_;
- Spanner *slur_;
Spanner *cresc_;
Spanner *finished_line_spanner_;
Dynamic_engraver::Dynamic_engraver ()
{
script_ = 0;
- slur_ = 0;
finished_cresc_ = 0;
line_spanner_ = 0;
finished_line_spanner_ = 0;
Note: line-spanner must always have at least same duration
as (de)crecsendo, b.o. line-breaking.
*/
-
/*
/*
FIXME: use get_markup () to check type.
*/
- if (scm_is_string (s) || ly_c_pair_p (s))
+ if (scm_is_string (s) || scm_is_pair (s))
{
cresc_->set_property ("edge-text",
scm_cons (s, scm_makfrom0str ("")));
}
}
- cresc_->set_bound (LEFT, script_
- ? script_
- : unsmob_grob (get_property ("currentMusicalColumn")));
-
+ if (script_)
+ {
+ cresc_->set_bound (LEFT, script_);
+ add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
+ }
+
Axis_group_interface::add_element (line_spanner_, cresc_);
-
- add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
}
}
}
typeset_all ();
if (!current_cresc_ev_)
{
-
finished_line_spanner_ = line_spanner_;
line_spanner_ = 0;
typeset_all ();
}
+ if (cresc_ && !cresc_->get_bound (LEFT))
+ {
+ cresc_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
+ add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
+ }
+
script_ev_ = 0;
accepted_spanreqs_drul_[START] = 0;
accepted_spanreqs_drul_[STOP] = 0;
if (script_ && !script_->get_parent (X_AXIS))
{
SCM head = scm_last_pair (info.grob_->get_property ("note-heads"));
- if (ly_c_pair_p (head))
- script_->set_parent (unsmob_grob (ly_car (head)), X_AXIS);
+ if (scm_is_pair (head))
+ script_->set_parent (unsmob_grob (scm_car (head)), X_AXIS);
+ }
+
+
+
+ if (cresc_ && !cresc_->get_bound (LEFT))
+ {
+ cresc_->set_bound (LEFT, info.grob_);
+ add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
}
+
}
else if (Script_interface::has_interface (info.grob_) && script_)
{
< scm_to_int (script_->get_property ("script-priority")))
Side_position_interface::add_support (line_spanner_, info.grob_);
}
- else if (Slur::has_interface (info.grob_))
- slur_ = dynamic_cast<Spanner*> (info.grob_);
}
ENTER_DESCRIPTION (Dynamic_engraver,
/* creats*/ "DynamicLineSpanner DynamicText Hairpin TextSpanner",
/* accepts */ "absolute-dynamic-event crescendo-event decrescendo-event",
-/* acks */ "note-column-interface script-interface slur-interface",
+/* acks */ "note-column-interface script-interface",
/* reads */ "",
/* write */ "");