]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/clef-engraver.cc
* configure.in: Test for and accept lmodern if EC fonts not found.
[lilypond.git] / lily / clef-engraver.cc
index 61845036438eac948807439e01ddac8357f387af..c38d0cb69a31de4803d2fc308882717414b0a099 100644 (file)
@@ -3,25 +3,24 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+  (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
 
   Mats Bengtsson <matsb@s3.kth.se>
 */
 
-#include <ctype.h>
+#include <cctype>
 
-#include "translator-group.hh"
+#include "context.hh"
 #include "bar-line.hh"
 #include "staff-symbol-referencer.hh"
 #include "engraver.hh"
 #include "direction.hh"
 #include "side-position-interface.hh"
-#include "item.hh"
 
 class Clef_engraver : public  Engraver
 {
 public:
-  TRANSLATOR_DECLARATIONS(Clef_engraver);
+  TRANSLATOR_DECLARATIONS (Clef_engraver);
 
   Direction octave_dir_;
 
@@ -61,8 +60,8 @@ Clef_engraver::set_glyph ()
 
   SCM basic = ly_symbol2scm ("Clef");
   
-  daddy_trans_->execute_pushpop_property (basic, glyph_sym, SCM_UNDEFINED);
-  daddy_trans_->execute_pushpop_property (basic, glyph_sym, glyph);
+  execute_pushpop_property (context (), basic, glyph_sym, SCM_UNDEFINED);
+  execute_pushpop_property (context (), basic, glyph_sym, glyph);
 }
 
 /** 
@@ -76,7 +75,7 @@ Clef_engraver::acknowledge_grob (Grob_info info)
   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;
-           
-         g->set_grob_property ("text",
-                               scm_number_to_string (gh_int2scm (abs_oct),
-                                                     SCM_MAKINUM (10)));
+
+         SCM txt = scm_number_to_string (scm_int2num (abs_oct),
+                                         scm_from_int (10));
+
+         g->set_property ("text",
+                          scm_list_n (ly_scheme_function ("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_grob_property ("direction", scm_int2num (dir));
+         g->set_property ("direction", scm_int2num (dir));
          octavate_ = g;
-         announce_grob(octavate_, SCM_EOL);
+         
        }
     }
 }
@@ -140,7 +142,7 @@ Clef_engraver::inspect_clef_properties ()
       set_glyph ();
       create_clef ();
 
-      clef_->set_grob_property ("non-default", SCM_BOOL_T);
+      clef_->set_property ("non-default", SCM_BOOL_T);
 
       prev_cpos_ = clefpos;
       prev_glyph_ = glyph;
@@ -149,7 +151,7 @@ Clef_engraver::inspect_clef_properties ()
 
   if (to_boolean (force_clef))
     {
-      Translator_group * w = daddy_trans_->where_defined (ly_symbol2scm ("forceClef"));
+      Context * w = context ()->where_defined (ly_symbol2scm ("forceClef"));
       w->set_property ("forceClef", SCM_EOL);
     }
 }
@@ -161,40 +163,33 @@ Clef_engraver::stop_translation_timestep ()
   if (clef_)
     {
       SCM vis = 0; 
-      if (to_boolean (clef_->get_grob_property ("non-default")))
+      if (to_boolean (clef_->get_property ("non-default")))
        {
          vis = get_property ("explicitClefVisibility");
        }
 
       if (vis)
        {
-         clef_->set_grob_property ("break-visibility", vis);
+         clef_->set_property ("break-visibility", vis);
          if (octavate_)
            {
-             octavate_->set_grob_property ("break-visibility", vis);
+             octavate_->set_property ("break-visibility", vis);
 
            }
        }
       
-      typeset_grob (clef_);
       clef_ =0;
 
-      if (octavate_)
-       {
-         Side_position_interface::add_staff_support (octavate_);         
-         typeset_grob (octavate_);
-       }
-
       octavate_ = 0;
     }
 }
 
 
 
-ENTER_DESCRIPTION(Clef_engraver,
+ENTER_DESCRIPTION (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 */       "");