X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fdynamic-engraver.cc;h=8be008f8fb4949f31fcb2d6c191298fbd3b8b84c;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=cd7db644a66f409ebdc46f3ee151a76f870fc010;hpb=c5e974190861845c4ff31e47db3ddecb4eb496d0;p=lilypond.git diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index cd7db644a6..8be008f8fb 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2008--2012 Han-Wen Nienhuys + Copyright (C) 2008--2015 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 @@ -30,9 +30,9 @@ #include "translator.icc" -class New_dynamic_engraver : public Engraver +class Dynamic_engraver : public Engraver { - TRANSLATOR_DECLARATIONS (New_dynamic_engraver); + TRANSLATOR_DECLARATIONS (Dynamic_engraver); DECLARE_ACKNOWLEDGER (note_column); DECLARE_TRANSLATOR_LISTENER (absolute_dynamic); DECLARE_TRANSLATOR_LISTENER (span_dynamic); @@ -58,7 +58,7 @@ private: bool end_new_spanner_; }; -New_dynamic_engraver::New_dynamic_engraver () +Dynamic_engraver::Dynamic_engraver () { script_event_ = 0; current_span_event_ = 0; @@ -69,25 +69,25 @@ New_dynamic_engraver::New_dynamic_engraver () end_new_spanner_ = false; } -IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, absolute_dynamic); +IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, absolute_dynamic); void -New_dynamic_engraver::listen_absolute_dynamic (Stream_event *ev) +Dynamic_engraver::listen_absolute_dynamic (Stream_event *ev) { ASSIGN_EVENT_ONCE (script_event_, ev); } -IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, span_dynamic); +IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, span_dynamic); void -New_dynamic_engraver::listen_span_dynamic (Stream_event *ev) +Dynamic_engraver::listen_span_dynamic (Stream_event *ev) { Direction d = to_dir (ev->get_property ("span-direction")); ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev); } -IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, break_span); +IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, break_span); void -New_dynamic_engraver::listen_break_span (Stream_event *event) +Dynamic_engraver::listen_break_span (Stream_event *event) { if (event->in_event_class ("break-dynamic-span-event")) { @@ -102,9 +102,9 @@ New_dynamic_engraver::listen_break_span (Stream_event *event) } SCM -New_dynamic_engraver::get_property_setting (Stream_event *evt, - char const *evprop, - char const *ctxprop) +Dynamic_engraver::get_property_setting (Stream_event *evt, + char const *evprop, + char const *ctxprop) { SCM spanner_type = evt->get_property (evprop); if (spanner_type == SCM_EOL) @@ -113,7 +113,7 @@ New_dynamic_engraver::get_property_setting (Stream_event *evt, } void -New_dynamic_engraver::process_music () +Dynamic_engraver::process_music () { if (current_spanner_ && (accepted_spanevents_drul_[STOP] @@ -203,17 +203,17 @@ New_dynamic_engraver::process_music () } void -New_dynamic_engraver::stop_translation_timestep () +Dynamic_engraver::stop_translation_timestep () { if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT)) finished_spanner_ ->set_bound (RIGHT, - unsmob_grob (get_property ("currentMusicalColumn"))); + Grob::unsmob (get_property ("currentMusicalColumn"))); if (current_spanner_ && !current_spanner_->get_bound (LEFT)) current_spanner_ ->set_bound (LEFT, - unsmob_grob (get_property ("currentMusicalColumn"))); + Grob::unsmob (get_property ("currentMusicalColumn"))); script_ = 0; script_event_ = 0; accepted_spanevents_drul_.set (0, 0); @@ -222,7 +222,7 @@ New_dynamic_engraver::stop_translation_timestep () } void -New_dynamic_engraver::finalize () +Dynamic_engraver::finalize () { if (current_spanner_ && !current_spanner_->is_live ()) @@ -239,7 +239,7 @@ New_dynamic_engraver::finalize () } string -New_dynamic_engraver::get_spanner_type (Stream_event *ev) +Dynamic_engraver::get_spanner_type (Stream_event *ev) { string type; SCM start_sym = scm_car (ev->get_property ("class")); @@ -255,26 +255,20 @@ New_dynamic_engraver::get_spanner_type (Stream_event *ev) } void -New_dynamic_engraver::acknowledge_note_column (Grob_info info) +Dynamic_engraver::acknowledge_note_column (Grob_info info) { if (script_ && !script_->get_parent (X_AXIS)) { extract_grob_set (info.grob (), "note-heads", heads); - Grob *stem = unsmob_grob (info.grob ()->get_object ("stem")); /* - Spacing constraints may require dynamics to be aligned on rests, + Spacing constraints may require dynamics to be attached to rests, so check for a rest if this note column has no note heads. */ Grob *x_parent = (heads.size () - ? heads[0] - : unsmob_grob (info.grob ()->get_object ("rest"))); + ? info.grob () + : Grob::unsmob (info.grob ()->get_object ("rest"))); if (x_parent) - { - script_->set_parent (x_parent, X_AXIS); - Self_alignment_interface::set_center_parent (script_, X_AXIS); - } - if (stem) - Pointer_group_interface::add_grob (script_, ly_symbol2scm ("potential-X-colliding-grobs"), stem); + script_->set_parent (x_parent, X_AXIS); } if (current_spanner_ && !current_spanner_->get_bound (LEFT)) @@ -283,8 +277,8 @@ New_dynamic_engraver::acknowledge_note_column (Grob_info info) finished_spanner_->set_bound (RIGHT, info.grob ()); } -ADD_ACKNOWLEDGER (New_dynamic_engraver, note_column); -ADD_TRANSLATOR (New_dynamic_engraver, +ADD_ACKNOWLEDGER (Dynamic_engraver, note_column); +ADD_TRANSLATOR (Dynamic_engraver, /* doc */ "Create hairpins, dynamic texts and dynamic text spanners.",