X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffont-size-engraver.cc;h=bc372a6a43e03481c6e387cdc286733c3d752792;hb=951e47c99cccf317207848412262b9c6c37e01aa;hp=22436f0aba28c5c775bfa0f2f07ab0484dea829b;hpb=73be5f6fe264e90a56e45f2d70129b133731188b;p=lilypond.git diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index 22436f0aba..bc372a6a43 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,38 +1,51 @@ -/* - 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--1999 Han-Wen Nienhuys - - */ -#include "font-size-engraver.hh" -#include "score-element.hh" -#include "lily-guile.hh" + (c) 2001--2005 Han-Wen Nienhuys +*/ + +#include "grob.hh" +#include "engraver.hh" + +class Font_size_engraver : public Engraver +{ + + TRANSLATOR_DECLARATIONS (Font_size_engraver); +protected: + virtual void acknowledge_grob (Grob_info gi); +private: +}; Font_size_engraver::Font_size_engraver () { - size_i_ = 0; } void -Font_size_engraver::do_process_requests () +Font_size_engraver::acknowledge_grob (Grob_info gi) { - Scalar s (get_property ("fontsize", 0)); - - if (s.length_i () && s.isnum_b ()) + SCM sz = get_property ("fontSize"); + + /* + We only want to process a grob once. + */ + if (gi.context () != context ()) + return; + + if (scm_is_number (sz) && scm_to_double (sz)) { - size_i_ = int (s); - } -} + Real font_size = scm_to_double (sz); -void -Font_size_engraver::acknowledge_element (Score_element_info e) -{ - e.elem_l_->set_elt_property (ly_symbol ("fontsize"), - gh_int2scm (size_i_)); + font_size += robust_scm2double (gi.grob_->get_property ("font-size"), 0); + gi.grob_->set_property ("font-size", scm_make_real (font_size)); + } } -ADD_THIS_TRANSLATOR (Font_size_engraver); - +ADD_TRANSLATOR (Font_size_engraver, + /* descr */ "Puts fontSize into font-relative-size grob property.", + /* creats*/ "", + /* accepts */ "", + /* acks */ "font-interface", + /* reads */ "fontSize", + /* write */ "");