]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/font-size-engraver.cc
* lily/include/sequential-iterator.hh (class Sequential_iterator):
[lilypond.git] / lily / font-size-engraver.cc
index e67c90a287b6031b75d54ff3b7c4dec42d339382..41874eeae3c3eb91ec354d207943b401fd240b00 100644 (file)
@@ -1,36 +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 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 "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;
+
 }
 
+/*
+  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::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");
+
+  if (gh_number_p (sz)
+      && gh_scm2int (sz)
+      && !gh_number_p (gi.grob_l_->get_grob_property ("font-relative-size")))
     {
-      size_i_ = int (s);
+      gi.grob_l_->set_grob_property ("font-relative-size", sz);
     }
 }
 
-void
-Font_size_engraver::acknowledge_element (Score_element_info e)
-{
-  e.elem_l_->size_i_ = size_i_;
-}
 
-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 */       "");