]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/clef-engraver.cc
* lily/modified-font-metric.cc (text_dimension): try
[lilypond.git] / lily / clef-engraver.cc
index 65400b8ce0650ff6bfeef782104f8a40ed11349b..6e207877b5823b8750b60f3055ff3c631ab58ad3 100644 (file)
@@ -8,7 +8,7 @@
   Mats Bengtsson <matsb@s3.kth.se>
 */
 
-#include <ctype.h>
+#include <cctype>
 
 #include "context.hh"
 #include "bar-line.hh"
@@ -16,7 +16,6 @@
 #include "engraver.hh"
 #include "direction.hh"
 #include "side-position-interface.hh"
-#include "item.hh"
 
 class Clef_engraver : public  Engraver
 {
@@ -61,8 +60,8 @@ Clef_engraver::set_glyph ()
 
   SCM basic = ly_symbol2scm ("Clef");
   
-  execute_pushpop_property (daddy_context_, basic, glyph_sym, SCM_UNDEFINED);
-  execute_pushpop_property (daddy_context_, basic, glyph_sym, glyph);
+  execute_pushpop_property (context (), basic, glyph_sym, SCM_UNDEFINED);
+  execute_pushpop_property (context (), basic, glyph_sym, glyph);
 }
 
 /** 
@@ -72,11 +71,11 @@ Clef_engraver::set_glyph ()
 void
 Clef_engraver::acknowledge_grob (Grob_info info)
 {
-  Item * item =dynamic_cast <Item *> (info.grob_);
+  Item * item = dynamic_cast <Item *> (info.grob_);
   if (item)
     {
       if (Bar_line::has_interface (info.grob_)
-         && gh_string_p (get_property ("clefGlyph")))
+         && scm_is_string (get_property ("clefGlyph")))
        create_clef ();
     } 
 }
@@ -86,34 +85,37 @@ Clef_engraver::create_clef ()
 {
   if (!clef_)
     {
-      Item *c= make_item ("Clef");
-      announce_grob (c, SCM_EOL);
+      Item *c = make_item ("Clef", SCM_EOL);
+      
 
       clef_ = c;
       SCM cpos = get_property ("clefPosition");
 
-      if (gh_number_p (cpos))
-       Staff_symbol_referencer::set_position (clef_, gh_scm2int (cpos));
+      if (scm_is_number (cpos))
+       clef_->set_property ("staff-position", cpos);
 
       SCM oct =  get_property ("clefOctavation");
-      if (gh_number_p (oct) && gh_scm2int (oct))
+      if (scm_is_number (oct) && scm_to_int (oct))
        {
-         Item * g = make_item ("OctavateEight");
+         Item * g = make_item ("OctavateEight", SCM_EOL);
 
-         int abs_oct = gh_scm2int (oct) ;
+         int abs_oct = scm_to_int (oct) ;
          int dir = sign (abs_oct);
          abs_oct = abs (abs_oct)  + 1;
-           
+
+         SCM txt = scm_number_to_string (scm_int2num (abs_oct),
+                                         scm_from_int (10));
+
          g->set_property ("text",
-                               scm_number_to_string (gh_int2scm (abs_oct),
-                                                     SCM_MAKINUM (10)));
+                          scm_list_n (ly_lily_module_constant ("vcenter-markup"),
+                                      txt,  SCM_UNDEFINED));
          Side_position_interface::add_support (g,clef_);      
 
          g->set_parent (clef_, Y_AXIS);
          g->set_parent (clef_, X_AXIS);
          g->set_property ("direction", scm_int2num (dir));
          octavate_ = g;
-         announce_grob (octavate_, SCM_EOL);
+         
        }
     }
 }
@@ -149,7 +151,7 @@ Clef_engraver::inspect_clef_properties ()
 
   if (to_boolean (force_clef))
     {
-      Context * w = daddy_context_->where_defined (ly_symbol2scm ("forceClef"));
+      Context * w = context ()->where_defined (ly_symbol2scm ("forceClef"));
       w->set_property ("forceClef", SCM_EOL);
     }
 }
@@ -176,13 +178,7 @@ Clef_engraver::stop_translation_timestep ()
            }
        }
       
-      typeset_grob (clef_);
-      clef_ =0;
-
-      if (octavate_)
-       {
-         typeset_grob (octavate_);
-       }
+      clef_ = 0;
 
       octavate_ = 0;
     }
@@ -190,10 +186,10 @@ Clef_engraver::stop_translation_timestep ()
 
 
 
-ENTER_DESCRIPTION (Clef_engraver,
+ADD_TRANSLATOR (Clef_engraver,
 /* descr */       "Determine and set reference point for pitches",
 /* creats*/       "Clef OctavateEight",
 /* accepts */     "",
 /* acks  */      "bar-line-interface",
-/* reads */       "clefPosition clefGlyph centralCPosition clefOctavation explicitClefVisibility",
+/* reads */       "clefPosition clefGlyph middleCPosition clefOctavation explicitClefVisibility forceClef",
 /* write */       "");