X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffont-size-engraver.cc;h=c72b06a85fd9822bed9653d633b2f182c459bbd1;hb=f296c9b7aa080acf9edccdb984d058f9a7a92ae1;hp=4f706b34bf29ad2094e0f6797a2b0c86d27cf89f;hpb=685452c8675e89a84692420fb9891756d318e771;p=lilypond.git diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc index 4f706b34bf..c72b06a85f 100644 --- a/lily/font-size-engraver.cc +++ b/lily/font-size-engraver.cc @@ -1,45 +1,52 @@ /* - font-size-grav.cc -- implement Font_size_engraver + font-size-engraver.cc -- implement source file of the GNU LilyPond music typesetter - (c) 1998--1999 Han-Wen Nienhuys + (c) 2001--2002 Han-Wen Nienhuys */ -#include "font-size-engraver.hh" -#include "score-element.hh" -#include "lily-guile.hh" +#include "grob.hh" +#include "engraver.hh" -Font_size_engraver::Font_size_engraver () +class Font_size_engraver : public Engraver { - size_ = SCM_EOL; -} + + TRANSLATOR_DECLARATIONS(Font_size_engraver); +protected: + virtual void acknowledge_grob (Grob_info gi); +private: +}; -void -Font_size_engraver::do_process_requests () + +Font_size_engraver::Font_size_engraver () { - SCM s (get_property ("fontSize", 0)); - - if (gh_number_p(s)) - { - size_ = gh_scm2int (s); - } - else - { - size_ = SCM_EOL; - } + } +/* + TODO: use fontSize = NUMBER as a scaling constant: find the closest + integer design size, and use magnification to do the fractional bit. +*/ void -Font_size_engraver::acknowledge_element (Score_element_info e) +Font_size_engraver::acknowledge_grob (Grob_info gi) { - if (size_ != SCM_EOL - && e.elem_l_->get_elt_property (fontsize_scm_sym) == SCM_BOOL_F) + SCM sz = get_property ("fontSize"); + + if (gh_number_p (sz) + && gh_scm2int (sz) + && !gh_number_p (gi.grob_->get_grob_property ("font-relative-size"))) { - e.elem_l_->set_elt_property (fontsize_scm_sym, size_); + gi.grob_->set_grob_property ("font-relative-size", sz); } } -ADD_THIS_TRANSLATOR (Font_size_engraver); + +ENTER_DESCRIPTION(Font_size_engraver, +/* descr */ "Puts fontSize into font-relative-size grob property.", +/* creats*/ "", +/* acks */ "font-interface", +/* reads */ "fontSize", +/* write */ "");