X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffont-size-engraver.cc;h=9cb0397b7e4fb25b2b50eb5ac4908e902f381f7b;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=6689e91eacc256416c1f978b2380f717cb045bad;hpb=1cf3d59c1559fb9774c4c1c8cae155cfe54a927c;p=lilypond.git diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index 6689e91eac..9cb0397b7e 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,36 +1,66 @@ -/* - font-size-grav.cc -- implement Font_size_engraver - +/* + font-size-engraver.cc -- implement Font_size_engraver + source file of the GNU LilyPond music typesetter - - (c) 1998 Han-Wen Nienhuys - - */ -#include "font-size-engraver.hh" -#include "score-element.hh" + (c) 2001--2008 Han-Wen Nienhuys +*/ + +#include "grob.hh" +#include "engraver.hh" + +class Font_size_engraver : public Engraver +{ + + TRANSLATOR_DECLARATIONS (Font_size_engraver); +protected: + DECLARE_ACKNOWLEDGER (font); + void process_music (); + Real size; +private: +}; Font_size_engraver::Font_size_engraver () { - size_i_ = 0; + size = 0.0; } void -Font_size_engraver::do_process_requests () +Font_size_engraver::process_music () { - Scalar s (get_property ("fontsize")); - - if (s.length_i () && s.isnum_b ()) - { - size_i_ = int (s); - } + size = robust_scm2double (get_property ("fontSize"), 0.0); } void -Font_size_engraver::acknowledge_element (Score_element_info e) +Font_size_engraver::acknowledge_font (Grob_info gi) { - e.elem_l_->size_i_ = size_i_; + /* + We only want to process a grob once. + */ + if (!size) + return; + + if (gi.context () != context ()) + return; + + Real font_size = size + + robust_scm2double (gi.grob ()->get_property ("font-size"), 0); + gi.grob ()->set_property ("font-size", scm_from_double (font_size)); } -ADD_THIS_TRANSLATOR (Font_size_engraver); -IMPLEMENT_IS_TYPE_B1(Font_size_engraver,Engraver); +#include "translator.icc" + +ADD_ACKNOWLEDGER (Font_size_engraver, font); +ADD_TRANSLATOR (Font_size_engraver, + /* doc */ + "Put @code{fontSize} into @code{font-size} grob property.", + + /* create */ + "", + + /* read */ + "fontSize ", + + /* write */ + "" + );