X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrace-engraver.cc;h=b57e284e33545d28c0431c4a0777df6f26538e0d;hb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;hp=59e2bacbbb091a7daa28a0a6e668073f02f1bbb8;hpb=4f795f5a103f6bf1c3a5590302ba54a361186524;p=lilypond.git diff --git a/lily/grace-engraver.cc b/lily/grace-engraver.cc index 59e2bacbbb..b57e284e33 100644 --- a/lily/grace-engraver.cc +++ b/lily/grace-engraver.cc @@ -1,9 +1,20 @@ /* - grace-engraver.cc -- implement Grace_engraver + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2004--2014 Han-Wen Nienhuys - (c) 2004--2005 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" @@ -14,9 +25,9 @@ class Grace_engraver : public Engraver { void consider_change_grace_settings (); protected: - virtual void start_translation_timestep (); + void start_translation_timestep (); virtual void derived_mark () const; - virtual void initialize (); + virtual void initialize (); TRANSLATOR_DECLARATIONS (Grace_engraver); Moment last_moment_; @@ -27,7 +38,7 @@ public: Grace_engraver::Grace_engraver () { grace_settings_ = SCM_EOL; - last_moment_ = Moment (Rational (-1,1)); + last_moment_ = Moment (Rational (-1, 1)); } void @@ -43,15 +54,15 @@ Grace_engraver::consider_change_grace_settings () if (last_moment_.grace_part_ && !now.grace_part_) { for (SCM s = grace_settings_; scm_is_pair (s); s = scm_cdr (s)) - { - SCM context = scm_caar (s); - SCM entry = scm_cdar (s); - SCM grob = scm_cadr (entry); - SCM sym = scm_caddr (entry); + { + SCM context = scm_caar (s); + SCM entry = scm_cdar (s); + SCM grob = scm_cadr (entry); + SCM sym = scm_caddr (entry); - execute_pushpop_property (unsmob_context (context), - grob, sym, SCM_UNDEFINED); - } + execute_pushpop_property (unsmob_context (context), + grob, sym, SCM_UNDEFINED); + } grace_settings_ = SCM_EOL; } @@ -61,36 +72,31 @@ Grace_engraver::consider_change_grace_settings () grace_settings_ = SCM_EOL; for (SCM s = settings; scm_is_pair (s); s = scm_cdr (s)) - { - SCM entry = scm_car (s); - SCM context_name = scm_car (entry); - SCM grob = scm_cadr (entry); - SCM sym = scm_caddr (entry); - SCM val = scm_cadr (scm_cddr (entry)); - - Context *c = context (); - while (c - && c->context_name_symbol () != context_name) - { - c = c->get_parent_context (); - } - - if (c) - { - execute_pushpop_property (c, - grob, sym, val); - grace_settings_ - = scm_cons (scm_cons (c->self_scm (), entry), grace_settings_); - } - else - { - programming_error ("can't find context"); - scm_display (context_name, scm_current_error_port ()); - } - } + { + SCM entry = scm_car (s); + SCM context_name = scm_car (entry); + SCM grob = scm_cadr (entry); + SCM sym = scm_caddr (entry); + SCM val = scm_cadr (scm_cddr (entry)); + + Context *c = context (); + while (c && !c->is_alias (context_name)) + c = c->get_parent_context (); + + if (c) + { + execute_pushpop_property (c, + grob, sym, val); + grace_settings_ + = scm_cons (scm_cons (c->self_scm (), entry), grace_settings_); + } + else + programming_error ("cannot find context from graceSettings: " + + ly_symbol2string (context_name)); + } } - last_moment_ = now_mom(); + last_moment_ = now_mom (); } void @@ -106,10 +112,18 @@ Grace_engraver::start_translation_timestep () consider_change_grace_settings (); } +#include "translator.icc" + ADD_TRANSLATOR (Grace_engraver, - /* descr */ "Set font size and other properties for grace notes.", - /* creats*/ "", - /* accepts */ "", - /* acks */ "", - /* reads */ "graceSettings", - /* write */ ""); + /* doc */ + "Set font size and other properties for grace notes.", + + /* create */ + "", + + /* read */ + "graceSettings ", + + /* write */ + "" + );