+2006-04-19 Erlend Aasland <erlenda@gmail.com>
+
+ * lily/include/slur.hh:
+ * lily/slur.cc:
+ * lily/phrasing-slur-engraver.cc:
+ * lily/slur-engraver.cc: Fix 'cut & paste' code by merging
+ acknowledge_extra_object () from Phrasing_slur_engraver:: and
+ Slur_engraver:: and putting it in
+ Slur::auxiliary_acknowledge_extra_object ().
+
+ * ps/music-drawing-routines.ps (draw_dashed_slur): fix another bug
+
2006-04-18 Heikki Junes <hjunes@cc.hut.fi>
* stepmake/bin/add-html-footer.py: fix footer position in
* lily/stem-tremolo.cc: move rotated_box () to Lookup:: and update
callers.
- * lily/lookup.cc: add rotated_box ()
- * lily/include/lookup.hh:
+ * lily/lookup.cc:
+ * lily/include/lookup.hh: add rotated_box ()
2006-04-18 Heikki Junes <hjunes@cc.hut.fi>
#ifndef SLUR_HH
#define SLUR_HH
+#include "grob-info.hh"
#include "lily-proto.hh"
#include "lily-guile.hh"
+#include "std-vector.hh"
class Slur
{
public:
static void add_column (Grob *me, Grob *col);
static void add_extra_encompass (Grob *me, Grob *col);
+ static void auxiliary_acknowledge_extra_object (Grob_info, vector<Grob*>&, vector<Grob*>&);
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM));
DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
#include "note-column.hh"
#include "slur.hh"
#include "spanner.hh"
-#include "tie.hh"
#include "warn.hh"
/*
Slur::add_column (end_slurs_[i], e);
}
-/* FIXME: cut + paste job from Slur:: */
void
Phrasing_slur_engraver::acknowledge_extra_object (Grob_info info)
{
- Grob *e = info.grob ();
- SCM avoid = e->get_property ("avoid-slur");
- if (Tie::has_interface (e)
- || avoid == ly_symbol2scm ("inside"))
- {
- for (vsize i = slurs_.size (); i--;)
- Slur::add_extra_encompass (slurs_[i], e);
- for (vsize i = end_slurs_.size (); i--;)
- Slur::add_extra_encompass (end_slurs_[i], e);
- }
- else if (avoid == ly_symbol2scm ("outside")
- || avoid == ly_symbol2scm ("around"))
- {
- Grob *slur = slurs_.size () ? slurs_[0] : 0;
- slur = (end_slurs_.size () && !slur)
- ? end_slurs_[0] : slur;
-
- if (slur)
- {
- chain_offset_callback (e, Slur::outside_slur_callback_proc, Y_AXIS);
- e->set_object ("slur", slur->self_scm ());
- }
- }
+ Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
}
void
#include "note-column.hh"
#include "slur.hh"
#include "spanner.hh"
-#include "tie.hh"
#include "warn.hh"
/*
void
Slur_engraver::acknowledge_extra_object (Grob_info info)
{
- if (slurs_.empty () && end_slurs_.empty ())
- return ;
-
- Grob *e = info.grob ();
- SCM avoid = e->get_property ("avoid-slur");
- if (Tie::has_interface (e)
- || avoid == ly_symbol2scm ("inside"))
- {
- for (vsize i = slurs_.size (); i--;)
- Slur::add_extra_encompass (slurs_[i], e);
- for (vsize i = end_slurs_.size (); i--;)
- Slur::add_extra_encompass (end_slurs_[i], e);
- }
- else if (avoid == ly_symbol2scm ("outside")
- || avoid == ly_symbol2scm ("around"))
- {
- Grob *slur = slurs_.size () ? slurs_[0] : 0;
- slur = (end_slurs_.size () && !slur)
- ? end_slurs_[0] : slur;
-
- if (slur)
- {
- chain_offset_callback (e, Slur::outside_slur_callback_proc, Y_AXIS);
- e->set_object ("slur", slur->self_scm ());
- }
- }
- else
- e->warning ("Ignoring grob for slur. avoid-slur not set?");
+ Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
}
void
#include "staff-symbol.hh"
#include "stem.hh"
#include "text-interface.hh"
+#include "tie.hh"
#include "warn.hh"
#include "slur-scoring.hh"
return scm_from_double (scm_to_double (offset_scm) + avoidance_offset);
}
+/*
+ * Used by Slur_engraver:: and Phrasing_slur_engraver::
+ */
+void
+Slur::auxiliary_acknowledge_extra_object (Grob_info info,
+ vector<Grob*>& slurs, vector<Grob*>& end_slurs)
+{
+ if (slurs.empty () && end_slurs.empty ())
+ return;
+
+ Grob *e = info.grob ();
+ SCM avoid = e->get_property ("avoid-slur");
+ if (Tie::has_interface (e)
+ || avoid == ly_symbol2scm ("inside"))
+ {
+ for (vsize i = slurs.size (); i--;)
+ add_extra_encompass (slurs[i], e);
+ for (vsize i = end_slurs.size (); i--;)
+ add_extra_encompass (end_slurs[i], e);
+ }
+ else if (avoid == ly_symbol2scm ("outside")
+ || avoid == ly_symbol2scm ("around"))
+ {
+ Grob *slur;
+ if (end_slurs.size () && !slurs.size ())
+ slur = end_slurs[0];
+ else
+ slur = slurs[0];
+
+ if (slur)
+ {
+ chain_offset_callback (e, outside_slur_callback_proc, Y_AXIS);
+ e->set_object ("slur", slur->self_scm ());
+ }
+ }
+ else
+ e->warning ("Ignoring grob for slur. avoid-slur not set?");
+}
ADD_INTERFACE (Slur, "slur-interface",
1 setlinejoin
setdash
setlinewidth
+ 8 2 roll
moveto
curveto
stroke