X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Ffont-size-engraver.cc;h=6c6bfa91d1bbc8d100f1fd119c752011cab8084b;hb=7a748b8d385139bf3c68d1370a119d277d92134b;hp=b8d91ae55cc93c501baff57c2491680d6a923902;hpb=3a0e9efb7f067e5b334ba0596b95e15d96d7cc49;p=lilypond.git diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index b8d91ae55c..6c6bfa91d1 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,40 +1,55 @@ /* - 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 + (c) 2001--2004 Han-Wen Nienhuys */ -#include "font-size-engraver.hh" -#include "score-element.hh" -#include "lily-guile.hh" +#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) { - SCM s (get_property ("fontSize", 0)); + SCM sz = get_property ("fontSize"); + + /* + We only want to process a grob once. + */ + if (gi.origin_trans_->context () != context ()) + return ; - if (SCM_NUMBERP(s)) + if (ly_c_number_p (sz) && ly_scm2double (sz)) { - size_i_ = gh_scm2int (s); + Real font_size = ly_scm2double (sz); + + font_size += robust_scm2double (gi.grob_->get_property ("font-size"), 0); + gi.grob_->set_property ("font-size", scm_make_real (font_size)); } } -void -Font_size_engraver::acknowledge_element (Score_element_info e) -{ - if (size_i_ && e.elem_l_->get_elt_property (fontsize_scm_sym) == SCM_BOOL_F) - { - e.elem_l_->set_elt_property (fontsize_scm_sym, - gh_int2scm (size_i_)); - } -} -ADD_THIS_TRANSLATOR (Font_size_engraver); +ENTER_DESCRIPTION (Font_size_engraver, +/* descr */ "Puts fontSize into font-relative-size grob property.", +/* creats*/ "", +/* accepts */ "", +/* acks */ "font-interface", +/* reads */ "fontSize", +/* write */ "");