]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/new-fingering-engraver.cc
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / lily / new-fingering-engraver.cc
index 51eb26c6d29a1f89aa20836950cba09dc1f36e22..06a3a8da9666669d7ab2d95672f167158887fe1b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -71,9 +71,9 @@ public:
   TRANSLATOR_DECLARATIONS (New_fingering_engraver);
 protected:
   void stop_translation_timestep ();
-  DECLARE_ACKNOWLEDGER (rhythmic_head);
-  DECLARE_ACKNOWLEDGER (inline_accidental);
-  DECLARE_ACKNOWLEDGER (stem);
+  void acknowledge_rhythmic_head (Grob_info);
+  void acknowledge_inline_accidental (Grob_info);
+  void acknowledge_stem (Grob_info);
   void add_fingering (Grob *, SCM,
                       vector<Finger_tuple> *,
                       Stream_event *, Stream_event *);
@@ -99,7 +99,7 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf)
 
   for (SCM s = arts; scm_is_pair (s); s = scm_cdr (s))
     {
-      Stream_event *ev = unsmob_stream_event (scm_car (s));
+      Stream_event *ev = unsmob<Stream_event> (scm_car (s));
 
       if (!ev)
         continue;
@@ -119,7 +119,7 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf)
           // when we don't want them displayed.  So don't make space
           // for them if 'stencil is #f
           Grob *g = make_item ("StringNumber", ev->self_scm ());
-          if (g->get_property ("stencil") != SCM_BOOL_F)
+          if (scm_is_true (g->get_property ("stencil")))
             add_fingering (inf.grob (),
                            ly_symbol2scm ("StringNumber"), &string_numbers_,
                            ev, note_ev);
@@ -132,7 +132,7 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf)
       else if (ev->in_event_class ("harmonic-event"))
         {
           inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic"));
-          Grob *d = unsmob_grob (inf.grob ()->get_object ("dot"));
+          Grob *d = unsmob<Grob> (inf.grob ()->get_object ("dot"));
           if (d && !to_boolean (get_property ("harmonicDots")))
             d->suicide ();
         }
@@ -176,9 +176,7 @@ New_fingering_engraver::add_fingering (Grob *head,
 {
   Finger_tuple ft;
 
-  ft.script_ = internal_make_item (grob_sym, event->self_scm (),
-                                   ly_symbol2string (grob_sym).c_str (),
-                                   __FILE__, __LINE__, __FUNCTION__);
+  ft.script_ = make_item (grob_sym, event->self_scm ());
 
   Side_position_interface::add_support (ft.script_, head);
 
@@ -197,7 +195,7 @@ New_fingering_engraver::position_scripts (SCM orientations,
     if (stem_)
       {
         Side_position_interface::add_support (scripts->at (i).script_, stem_);
-        if (Grob *flag = unsmob_grob (stem_->get_object ("flag")))
+        if (Grob *flag = unsmob<Grob> (stem_->get_object ("flag")))
           Side_position_interface::add_support (scripts->at (i).script_, flag);
       }
 
@@ -230,10 +228,10 @@ New_fingering_engraver::position_scripts (SCM orientations,
 
   vector_sort (*scripts, less<Finger_tuple> ());
 
-  bool up_p = scm_c_memq (ly_symbol2scm ("up"), orientations) != SCM_BOOL_F;
-  bool down_p = scm_c_memq (ly_symbol2scm ("down"), orientations) != SCM_BOOL_F;
-  bool left_p = scm_c_memq (ly_symbol2scm ("left"), orientations) != SCM_BOOL_F;
-  bool right_p = scm_c_memq (ly_symbol2scm ("right"), orientations) != SCM_BOOL_F;
+  bool up_p = scm_is_true (scm_c_memq (ly_symbol2scm ("up"), orientations));
+  bool down_p = scm_is_true (scm_c_memq (ly_symbol2scm ("down"), orientations));
+  bool left_p = scm_is_true (scm_c_memq (ly_symbol2scm ("left"), orientations));
+  bool right_p = scm_is_true (scm_c_memq (ly_symbol2scm ("right"), orientations));
   Direction hordir = (right_p) ? RIGHT : LEFT;
   if (left_p || right_p)
     {
@@ -281,15 +279,14 @@ New_fingering_engraver::position_scripts (SCM orientations,
       f->set_parent (ft.head_, Y_AXIS);
       f->set_property ("avoid-slur", ly_symbol2scm ("inside"));
       if (hordir == LEFT
-          && unsmob_grob (ft.head_->get_object ("accidental-grob")))
+          && unsmob<Grob> (ft.head_->get_object ("accidental-grob")))
         Side_position_interface::add_support (f,
-                                              unsmob_grob (ft.head_->get_object ("accidental-grob")));
-      else if (unsmob_grob (ft.head_->get_object ("dot")))
+                                              unsmob<Grob> (ft.head_->get_object ("accidental-grob")));
+      else if (unsmob<Grob> (ft.head_->get_object ("dot")))
         Side_position_interface::add_support (f,
-                                              unsmob_grob (ft.head_->get_object ("dot")));
+                                              unsmob<Grob> (ft.head_->get_object ("dot")));
 
-      Self_alignment_interface::set_align_self (f, Y_AXIS);
-      Self_alignment_interface::set_center_parent (f, Y_AXIS);
+      Self_alignment_interface::set_aligned_on_parent (f, Y_AXIS);
       Side_position_interface::set_axis (f, X_AXIS);
 
       f->set_property ("direction", scm_from_int (hordir));
@@ -307,8 +304,7 @@ New_fingering_engraver::position_scripts (SCM orientations,
           f->set_property ("script-priority",
                            scm_from_int (finger_prio + d * ft.position_));
 
-          Self_alignment_interface::set_align_self (f, X_AXIS);
-          Self_alignment_interface::set_center_parent (f, X_AXIS);
+          Self_alignment_interface::set_aligned_on_parent (f, X_AXIS);
           Side_position_interface::set_axis (f, Y_AXIS);
 
           f->set_property ("direction", scm_from_int (d));
@@ -368,14 +364,20 @@ New_fingering_engraver::position_all ()
   articulations_.clear ();
 }
 
-New_fingering_engraver::New_fingering_engraver ()
+New_fingering_engraver::New_fingering_engraver (Context *c)
+  : Engraver (c)
 {
   stem_ = 0;
 }
 
-ADD_ACKNOWLEDGER (New_fingering_engraver, rhythmic_head);
-ADD_ACKNOWLEDGER (New_fingering_engraver, inline_accidental);
-ADD_ACKNOWLEDGER (New_fingering_engraver, stem);
+
+void
+New_fingering_engraver::boot ()
+{
+  ADD_ACKNOWLEDGER (New_fingering_engraver, rhythmic_head);
+  ADD_ACKNOWLEDGER (New_fingering_engraver, inline_accidental);
+  ADD_ACKNOWLEDGER (New_fingering_engraver, stem);
+}
 
 ADD_TRANSLATOR (New_fingering_engraver,
                 /* doc */