2004-09-22 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/phrasing-slur-engraver.cc (acknowledge_grob): avoid more
+ objects.
+
* lily/beam-concave.cc (calc_concaveness): take absolute value of
dy for scaling. This fixes various downbeams.
Dot_column_engraver::Dot_column_engraver ()
{
- dotcol_ =0;
+ dotcol_ = 0;
stem_ = 0;
}
void
Dot_column_engraver::stop_translation_timestep ()
{
- /*
- Add the stem to the support so dots stay clear of flags.
+ /*
+ Add the stem to the support so dots stay clear of flags.
- See [Ross, p 171]
- */
- if (stem_ && dotcol_)
- dotcol_->set_property ("stem", stem_->self_scm ());
+ See [Ross, p 171]
+ */
+ if (stem_ && dotcol_)
+ dotcol_->set_property ("stem", stem_->self_scm ());
- dotcol_ =0;
+ dotcol_ =0;
heads_.clear ();
stem_ =0;
}
else
{
/*
- TODO: maybe take more objects?
- */
- for (int i = slurs_.size (); i--; )
- Slur::add_extra_encompass (slurs_[i], e);
- for (int i = end_slurs_.size (); i--; )
- Slur::add_extra_encompass (end_slurs_[i], e);
+ ugh. cut & paste from slur-engraver.cc
+ */
+ SCM inside = e->get_property ("inside-slur");
+ if (Tie::has_interface (e)
+ || to_boolean (inside))
+ {
+ for (int i = slurs_.size (); i--; )
+ Slur::add_extra_encompass (slurs_[i], e);
+ for (int i = end_slurs_.size (); i--; )
+ Slur::add_extra_encompass (end_slurs_[i], e);
+ }
+ else if (inside == SCM_BOOL_F)
+ {
+ Grob *slur = slurs_.size()?slurs_[0] : 0;
+ slur = (end_slurs_.size () && !slur)
+ ? end_slurs_[0] : slur;
+
+ if (slur)
+ {
+ e->add_offset_callback (Slur::outside_slur_callback_proc, Y_AXIS);
+ e->set_property ("slur", slur->self_scm());
+ }
+ }
}
}
/* descr */ "Print phrasing slurs. Similar to @ref{Slur_engraver}",
/* creats*/ "PhrasingSlur",
/* accepts */ "phrasing-slur-event",
-/* acks */ "note-column-interface slur-interface",
+/* acks */ "note-column-interface tie-interface fingering-interface script-interface slur-interface",
/* reads */ "",
/* write */ "");