From: Erlend Aasland Date: Wed, 19 Apr 2006 07:24:42 +0000 (+0000) Subject: Fix cut&paste code in Phrasing_slur_engraver:: and Slur_engraver::, and fix a bug... X-Git-Tag: release/2.9.3~47 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c49a146628e5f8422c72deb40a42899c4c5cdd33;p=lilypond.git Fix cut&paste code in Phrasing_slur_engraver:: and Slur_engraver::, and fix a bug in PostScript draw_dashed_slur. --- diff --git a/ChangeLog b/ChangeLog index c26f44a258..b24cb06d20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-04-19 Erlend Aasland + + * 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 * stepmake/bin/add-html-footer.py: fix footer position in @@ -16,8 +28,8 @@ * 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 diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 390bde5c6f..2c797239ce 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -9,14 +9,17 @@ #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&, vector&); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index c7571f118c..b3b9abbe00 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -14,7 +14,6 @@ #include "note-column.hh" #include "slur.hh" #include "spanner.hh" -#include "tie.hh" #include "warn.hh" /* @@ -92,33 +91,10 @@ Phrasing_slur_engraver::acknowledge_note_column (Grob_info info) 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 diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 8b6cd4b414..0e649fe566 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -14,7 +14,6 @@ #include "note-column.hh" #include "slur.hh" #include "spanner.hh" -#include "tie.hh" #include "warn.hh" /* @@ -95,34 +94,7 @@ Slur_engraver::acknowledge_note_column (Grob_info info) 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 diff --git a/lily/slur.cc b/lily/slur.cc index 16b63bef8d..92610d47e7 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -24,6 +24,7 @@ #include "staff-symbol.hh" #include "stem.hh" #include "text-interface.hh" +#include "tie.hh" #include "warn.hh" #include "slur-scoring.hh" @@ -231,6 +232,44 @@ Slur::outside_slur_callback (SCM grob, SCM offset_scm) 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& slurs, vector& 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", diff --git a/ps/music-drawing-routines.ps b/ps/music-drawing-routines.ps index c3ebbaa60a..e0f28e82a6 100644 --- a/ps/music-drawing-routines.ps +++ b/ps/music-drawing-routines.ps @@ -242,6 +242,7 @@ gsave 1 setlinejoin setdash setlinewidth + 8 2 roll moveto curveto stroke