X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffont-size-engraver.cc;h=7ef99111b45ce6634b0ff31ab65f237af9ca435f;hb=7e72a1e50e94a7f9738d62599de79fe7745f600c;hp=6689e91eacc256416c1f978b2380f717cb045bad;hpb=1cf3d59c1559fb9774c4c1c8cae155cfe54a927c;p=lilypond.git diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index 6689e91eac..7ef99111b4 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,36 +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 Han-Wen Nienhuys + (c) 2001--2004 Han-Wen Nienhuys */ -#include "font-size-engraver.hh" -#include "score-element.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) { - Scalar s (get_property ("fontsize")); + SCM sz = get_property ("fontSize"); + + /* + We only want to process a grob once. + */ + if (gi.origin_trans_->daddy_trans_ != daddy_trans_) + return ; - if (s.length_i () && s.isnum_b ()) + if (gh_number_p (sz) && gh_scm2double (sz)) { - size_i_ = int (s); + Real font_size = gh_scm2double (sz); + + font_size += robust_scm2double (gi.grob_->get_grob_property ("font-size"), 0); + gi.grob_->set_grob_property ("font-size", gh_double2scm (font_size)); } } -void -Font_size_engraver::acknowledge_element (Score_element_info e) -{ - e.elem_l_->size_i_ = size_i_; -} -ADD_THIS_TRANSLATOR (Font_size_engraver); -IMPLEMENT_IS_TYPE_B1(Font_size_engraver,Engraver); +ENTER_DESCRIPTION(Font_size_engraver, +/* descr */ "Puts fontSize into font-relative-size grob property.", +/* creats*/ "", +/* accepts */ "", +/* acks */ "font-interface", +/* reads */ "fontSize", +/* write */ "");