X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fphrasing-slur-engraver.cc;h=8ace05fe10d8bad48f7017fa989ccb65a0cf236b;hb=9bf6174bc111c5d90fa00af0f0c59f17cd4d9b9f;hp=d9c6e3e03910d7560f2cb008c99b449f734691be;hpb=c4c0ba811cd526f047de3f4d3c77abcc32a3e076;p=lilypond.git diff --git a/lily/phrasing-slur-engraver.cc b/lily/phrasing-slur-engraver.cc index d9c6e3e039..8ace05fe10 100644 --- a/lily/phrasing-slur-engraver.cc +++ b/lily/phrasing-slur-engraver.cc @@ -1,9 +1,20 @@ /* - phrasing-slur-engraver.cc -- implement Phrasing_slur_engraver + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2011 Han-Wen Nienhuys - (c) 1997--2006 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "engraver.hh" @@ -23,8 +34,17 @@ It is possible that a slur starts and ends on the same note. At least, it is for phrasing slurs: a note can be both beginning and ending of a phrase. + */ +/* + NOTE NOTE NOTE + + This is largely similar to Slur_engraver. Check if fixes apply there too. + + (on principle, engravers don't use inheritance for code sharing) + + */ class Phrasing_slur_engraver : public Engraver { Drul_array events_; @@ -35,13 +55,13 @@ class Phrasing_slur_engraver : public Engraver protected: void acknowledge_extra_object (Grob_info); DECLARE_ACKNOWLEDGER (accidental); - DECLARE_ACKNOWLEDGER (dynamic_line_spanner); DECLARE_ACKNOWLEDGER (fingering); DECLARE_ACKNOWLEDGER (note_column); - DECLARE_ACKNOWLEDGER (script); DECLARE_ACKNOWLEDGER (slur); + DECLARE_ACKNOWLEDGER (script); DECLARE_ACKNOWLEDGER (text_script); DECLARE_ACKNOWLEDGER (tie); + DECLARE_ACKNOWLEDGER (tuplet_number); DECLARE_TRANSLATOR_LISTENER (phrasing_slur); void stop_translation_timestep (); @@ -66,9 +86,9 @@ Phrasing_slur_engraver::listen_phrasing_slur (Stream_event *ev) */ Direction d = to_dir (ev->get_property ("span-direction")); if (d == START) - events_[START] = ev; + ASSIGN_EVENT_ONCE (events_[START], ev); else if (d == STOP && !slurs_.empty ()) - events_[STOP] = ev; + ASSIGN_EVENT_ONCE (events_[STOP], ev); } void @@ -94,13 +114,13 @@ Phrasing_slur_engraver::acknowledge_accidental (Grob_info info) } void -Phrasing_slur_engraver::acknowledge_dynamic_line_spanner (Grob_info info) +Phrasing_slur_engraver::acknowledge_fingering (Grob_info info) { acknowledge_extra_object (info); } void -Phrasing_slur_engraver::acknowledge_fingering (Grob_info info) +Phrasing_slur_engraver::acknowledge_text_script (Grob_info info) { acknowledge_extra_object (info); } @@ -108,17 +128,18 @@ Phrasing_slur_engraver::acknowledge_fingering (Grob_info info) void Phrasing_slur_engraver::acknowledge_script (Grob_info info) { - acknowledge_extra_object (info); + if (!info.grob ()->internal_has_interface (ly_symbol2scm ("dynamic-interface"))) + acknowledge_extra_object (info); } void -Phrasing_slur_engraver::acknowledge_text_script (Grob_info info) +Phrasing_slur_engraver::acknowledge_tie (Grob_info info) { acknowledge_extra_object (info); } void -Phrasing_slur_engraver::acknowledge_tie (Grob_info info) +Phrasing_slur_engraver::acknowledge_tuplet_number (Grob_info info) { acknowledge_extra_object (info); } @@ -166,17 +187,24 @@ Phrasing_slur_engraver::stop_translation_timestep () } ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental); -ADD_ACKNOWLEDGER (Phrasing_slur_engraver, dynamic_line_spanner); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, fingering) - ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column); -ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script); +ADD_ACKNOWLEDGER (Phrasing_slur_engraver, note_column); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, slur); +ADD_ACKNOWLEDGER (Phrasing_slur_engraver, script); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, text_script); ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tie); +ADD_ACKNOWLEDGER (Phrasing_slur_engraver, tuplet_number); ADD_TRANSLATOR (Phrasing_slur_engraver, - /* doc */ "Print phrasing slurs. Similar to @ref{Slur_engraver}", - /* create */ "PhrasingSlur", - /* accept */ "phrasing-slur-event", - /* read */ "", - /* write */ ""); + /* doc */ + "Print phrasing slurs. Similar to @ref{Slur_engraver}.", + + /* create */ + "PhrasingSlur ", + + /* read */ + "", + + /* write */ + "" + );