X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpiano-pedal-engraver.cc;h=2a2d2aa8ec5b417081fb09f8f1a31ba8e7de9f19;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=250dfb458dd5a9f03791f9598fc72344fda95820;hpb=f4abbfff5f0d985a457e15586dbcc3ae473b0dee;p=lilypond.git diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc index 250dfb458d..2a2d2aa8ec 100644 --- a/lily/piano-pedal-engraver.cc +++ b/lily/piano-pedal-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2014 Jan Nieuwenhuizen , + Copyright (C) 2000--2015 Jan Nieuwenhuizen , Erik Sandberg Chris Jackson - extended to support @@ -123,9 +123,9 @@ public: protected: virtual void initialize (); virtual void finalize (); - DECLARE_TRANSLATOR_LISTENER (sustain); - DECLARE_TRANSLATOR_LISTENER (una_corda); - DECLARE_TRANSLATOR_LISTENER (sostenuto); + void listen_sustain (Stream_event *); + void listen_una_corda (Stream_event *); + void listen_sostenuto (Stream_event *); void stop_translation_timestep (); void process_music (); @@ -166,9 +166,9 @@ init_pedal_types () be careful, as we don't want to loose references to the _sym_ members. */ Pedal_type_info info; - info.event_class_sym_ = scm_from_locale_symbol ((base_ident + "-event").c_str ()); - info.style_sym_ = scm_from_locale_symbol (("pedal" + base_name + "Style").c_str ()); - info.strings_sym_ = scm_from_locale_symbol (("pedal" + base_name + "Strings").c_str ()); + info.event_class_sym_ = scm_from_ascii_symbol ((base_ident + "-event").c_str ()); + info.style_sym_ = scm_from_ascii_symbol (("pedal" + base_name + "Style").c_str ()); + info.strings_sym_ = scm_from_ascii_symbol (("pedal" + base_name + "Strings").c_str ()); info.base_name_ = name; info.pedal_c_str_ = strdup ((base_name + "Pedal").c_str ()); @@ -181,7 +181,8 @@ init_pedal_types () ADD_SCM_INIT_FUNC (Piano_pedal_engraver_init_pedal_types_, init_pedal_types); -Piano_pedal_engraver::Piano_pedal_engraver () +Piano_pedal_engraver::Piano_pedal_engraver (Context *c) + : Engraver (c) { } @@ -205,7 +206,6 @@ Piano_pedal_engraver::initialize () info_list_[NUM_PEDAL_TYPES].type_ = 0; } -IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, sostenuto); void Piano_pedal_engraver::listen_sostenuto (Stream_event *ev) { @@ -213,7 +213,6 @@ Piano_pedal_engraver::listen_sostenuto (Stream_event *ev) ASSIGN_EVENT_ONCE (info_list_[SOSTENUTO].event_drul_[d], ev); } -IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, sustain); void Piano_pedal_engraver::listen_sustain (Stream_event *ev) { @@ -221,7 +220,6 @@ Piano_pedal_engraver::listen_sustain (Stream_event *ev) ASSIGN_EVENT_ONCE (info_list_[SUSTAIN].event_drul_[d], ev); } -IMPLEMENT_TRANSLATOR_LISTENER (Piano_pedal_engraver, una_corda); void Piano_pedal_engraver::listen_una_corda (Stream_event *ev) { @@ -249,13 +247,13 @@ Piano_pedal_engraver::process_music () mixed: Ped. _____/\____| */ - SCM style = internal_get_property (p->type_->style_sym_); + SCM style = get_property (p->type_->style_sym_); - bool mixed = style == ly_symbol2scm ("mixed"); + bool mixed = scm_is_eq (style, ly_symbol2scm ("mixed")); bool bracket = (mixed - || style == ly_symbol2scm ("bracket")); - bool text = (style == ly_symbol2scm ("text") - || mixed); + || scm_is_eq (style, ly_symbol2scm ("bracket"))); + bool text = (mixed + || scm_is_eq (style, ly_symbol2scm ("text"))); if (text && !p->item_) create_text_grobs (p, mixed); @@ -269,7 +267,7 @@ void Piano_pedal_engraver::create_text_grobs (Pedal_info *p, bool mixed) { SCM s = SCM_EOL; - SCM strings = internal_get_property (p->type_->strings_sym_); + SCM strings = get_property (p->type_->strings_sym_); if (scm_ilength (strings) < 3) { @@ -346,7 +344,7 @@ Piano_pedal_engraver::create_bracket_grobs (Pedal_info *p, bool mixed) { assert (!p->finished_bracket_); - Grob *cmc = Grob::unsmob (get_property ("currentMusicalColumn")); + Grob *cmc = unsmob (get_property ("currentMusicalColumn")); p->bracket_->set_bound (RIGHT, cmc); /* @@ -424,7 +422,7 @@ Piano_pedal_engraver::finalize () if (p->bracket_) { SCM cc = get_property ("currentCommandColumn"); - Item *c = Item::unsmob (cc); + Item *c = unsmob (cc); p->bracket_->set_bound (RIGHT, c); p->finished_bracket_ = p->bracket_; @@ -444,7 +442,7 @@ Piano_pedal_engraver::stop_translation_timestep () typeset_all (p); if (p->bracket_ && !p->bracket_->get_bound (LEFT)) { - Grob *cmc = Grob::unsmob (get_property ("currentMusicalColumn")); + Grob *cmc = unsmob (get_property ("currentMusicalColumn")); p->bracket_->set_bound (LEFT, cmc); } } @@ -473,12 +471,20 @@ Piano_pedal_engraver::typeset_all (Pedal_info *p) { Grob *r = p->finished_bracket_->get_bound (RIGHT); if (!r) - p->finished_bracket_->set_bound (RIGHT, Grob::unsmob (get_property ("currentMusicalColumn"))); + p->finished_bracket_->set_bound (RIGHT, unsmob (get_property ("currentMusicalColumn"))); p->finished_bracket_ = 0; } } +void +Piano_pedal_engraver::boot () +{ + ADD_LISTENER (Piano_pedal_engraver, sostenuto); + ADD_LISTENER (Piano_pedal_engraver, sustain); + ADD_LISTENER (Piano_pedal_engraver, una_corda); +} + ADD_TRANSLATOR (Piano_pedal_engraver, /* doc */ "Engrave piano pedal symbols and brackets.",