X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fparenthesis-engraver.cc;h=c9b9ec62a481047adb88ba7c5a432903ad1a5f27;hb=5d84bfad4626892bcffd05adcced53c8a2329047;hp=54e016f4d983a220fc106e451841ab1322bf8229;hpb=358d6e99ada8019268ade9ba9080b2d0d88eeb7a;p=lilypond.git diff --git a/lily/parenthesis-engraver.cc b/lily/parenthesis-engraver.cc index 54e016f4d9..c9b9ec62a4 100644 --- a/lily/parenthesis-engraver.cc +++ b/lily/parenthesis-engraver.cc @@ -1,18 +1,27 @@ /* - parenthesis-engraver.cc -- implement Parenthesis_engraver + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2015 Han-Wen Nienhuys - (c) 2005--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" -#include "grob.hh" #include "item.hh" #include "pointer-group-interface.hh" -#include "simple-closure.hh" #include "stream-event.hh" #include "warn.hh" @@ -23,10 +32,11 @@ class Parenthesis_engraver : public Engraver TRANSLATOR_DECLARATIONS (Parenthesis_engraver); protected: - DECLARE_ACKNOWLEDGER (grob); + void acknowledge_grob (Grob_info); }; -Parenthesis_engraver::Parenthesis_engraver() +Parenthesis_engraver::Parenthesis_engraver (Context *c) + : Engraver (c) { } @@ -36,39 +46,50 @@ Parenthesis_engraver::acknowledge_grob (Grob_info info) if (Stream_event *ev = info.event_cause ()) { if (to_boolean (ev->get_property ("parenthesize"))) - { - if (Item *victim = dynamic_cast (info.grob ())) - { - Engraver *eng = dynamic_cast (info.origin_translator ()); - Item *paren = eng->make_item ("ParenthesesItem", victim->self_scm ()); - Pointer_group_interface::add_grob (paren, ly_symbol2scm ("elements"), victim); - - paren->set_parent (victim, Y_AXIS); - - Real size = robust_scm2double (paren->get_property ("font-size"), 0.0) - + robust_scm2double (victim->get_property ("font-size"), 0.0); - paren->set_property ("font-size", scm_from_double (size)); - - /* - TODO? - - enlarge victim to allow for parentheses space? - */ - } - else - { - programming_error ("Don't know how to parenthesize spanners."); - } - } + { + if (Item *victim = dynamic_cast (info.grob ())) + { + Engraver *eng = dynamic_cast (info.origin_translator ()); + Item *paren = eng->make_item ("ParenthesesItem", victim->self_scm ()); + Pointer_group_interface::add_grob (paren, ly_symbol2scm ("elements"), victim); + + paren->set_parent (victim, Y_AXIS); + + Real size = robust_scm2double (paren->get_property ("font-size"), 0.0) + + robust_scm2double (victim->get_property ("font-size"), 0.0); + paren->set_property ("font-size", scm_from_double (size)); + + /* + TODO? + + enlarge victim to allow for parentheses space? + */ + } + else + { + info.grob ()->warning ("Don't know how to parenthesize spanners."); + } + } } } -ADD_ACKNOWLEDGER (Parenthesis_engraver, grob); +void +Parenthesis_engraver::boot () +{ + ADD_ACKNOWLEDGER (Parenthesis_engraver, grob); +} + ADD_TRANSLATOR (Parenthesis_engraver, - /* doc */ "Parenthesize objects whose music cause has the @code{parenthesize} " - "property.", - - /* create */ - "ParenthesesItem ", - /* read */ "", - /* write */ ""); + /* doc */ + "Parenthesize objects whose music cause has the" + " @code{parenthesize} property.", + + /* create */ + "ParenthesesItem ", + + /* read */ + "", + + /* write */ + "" + );