X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffont-size-engraver.cc;h=a5f7848c7f455063899787b15ba332d2fe94b7a4;hb=f68dfcc7aeb65b0b4054edbb2d9861e14d5d533e;hp=e67c90a287b6031b75d54ff3b7c4dec42d339382;hpb=615a9212789c2cb2994748c023d0e19f3a83a0fd;p=lilypond.git diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index e67c90a287..a5f7848c7f 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,36 +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 Han-Wen Nienhuys - - */ -#include "font-size-engraver.hh" -#include "score-element.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")); - - if (s.length_i () && s.isnum_b ()) + SCM sz = get_property ("fontSize"); + + /* + We only want to process a grob once. + */ + if (gi.origin_trans_->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_->size_i_ = 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 */ "");