]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/font-size-engraver.cc
trem fix
[lilypond.git] / lily / font-size-engraver.cc
index 30f47498c9014ea27b9390a55bedcea180e066de..41874eeae3c3eb91ec354d207943b401fd240b00 100644 (file)
@@ -1,40 +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 <hanwen@cs.uu.nl>
+  (c) 2001--2002  Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
-#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_i_ = 0;
-}
+  
+  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 ()
 {
-  Scalar s (get_property ("fontSize", 0));
-  
-  if (s.length_i ()  && s.isnum_b ())
-    {
-      size_i_ = int (s);
-    }
+
 }
 
+/*
+  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_i_ && 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_l_->get_grob_property ("font-relative-size")))
     {
-      e.elem_l_->set_elt_property (fontsize_scm_sym,
-                                  gh_int2scm (size_i_));
+      gi.grob_l_->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 */       "");