]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/vaticana-ligature-engraver.cc
Web-ja: update introduction
[lilypond.git] / lily / vaticana-ligature-engraver.cc
index 9b1485777c962ecbfa0f89a731e036211afb3218..1785d4478b407b142b839c82f766e277d6f555ea 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2003--2012 Juergen Reuter <reuter@ipd.uka.de>
+  Copyright (C) 2003--2015 Juergen Reuter <reuter@ipd.uka.de>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -77,30 +77,15 @@ private:
 
 public:
   TRANSLATOR_DECLARATIONS (Vaticana_ligature_engraver);
-
+  TRANSLATOR_INHERIT (Gregorian_ligature_engraver);
 protected:
   virtual Spanner *create_ligature_spanner ();
   virtual void transform_heads (Spanner *ligature,
                                 vector<Grob_info> const &primitives);
-  DECLARE_TRANSLATOR_LISTENER (pes_or_flexa);
-  DECLARE_TRANSLATOR_LISTENER (ligature);
 };
 
-IMPLEMENT_TRANSLATOR_LISTENER (Vaticana_ligature_engraver, pes_or_flexa);
-void
-Vaticana_ligature_engraver::listen_pes_or_flexa (Stream_event *ev)
-{
-  Gregorian_ligature_engraver::listen_pes_or_flexa (ev);
-}
-
-IMPLEMENT_TRANSLATOR_LISTENER (Vaticana_ligature_engraver, ligature);
-void
-Vaticana_ligature_engraver::listen_ligature (Stream_event *ev)
-{
-  Ligature_engraver::listen_ligature (ev);
-}
-
-Vaticana_ligature_engraver::Vaticana_ligature_engraver ()
+Vaticana_ligature_engraver::Vaticana_ligature_engraver (Context *c)
+  : Gregorian_ligature_engraver (c)
 {
   brew_ligature_primitive_proc
     = Vaticana_ligature::brew_ligature_primitive_proc;
@@ -247,7 +232,7 @@ Vaticana_ligature_engraver::align_heads (vector<Grob_info> const &primitives,
        */
 
       SCM glyph_name_scm = primitive->get_property ("glyph-name");
-      if (glyph_name_scm == SCM_EOL)
+      if (scm_is_null (glyph_name_scm))
         {
           primitive->programming_error ("Vaticana_ligature:"
                                         " undefined glyph-name ->"
@@ -260,7 +245,7 @@ Vaticana_ligature_engraver::align_heads (vector<Grob_info> const &primitives,
       if (prev_primitive) /* urgh, need prev_primitive only here */
         {
           SCM delta_pitch_scm = prev_primitive->get_property ("delta-position");
-          if (delta_pitch_scm != SCM_EOL)
+          if (!scm_is_null (delta_pitch_scm))
             delta_pitch = scm_to_int (delta_pitch_scm);
           else
             {
@@ -455,11 +440,11 @@ Vaticana_ligature_engraver::check_for_ambiguous_dot_pitch (Grob_info primitive)
   // bitmask based O (1) test); where n=<number of primitives in the
   // ligature> (which is typically small (n<10), though).
   Stream_event *new_cause = primitive.event_cause ();
-  int new_pitch = unsmob_pitch (new_cause->get_property ("pitch"))->steps ();
+  int new_pitch = unsmob<Pitch> (new_cause->get_property ("pitch"))->steps ();
   for (vsize i = 0; i < augmented_primitives_.size (); i++)
     {
       Stream_event *cause = augmented_primitives_[i].event_cause ();
-      int pitch = unsmob_pitch (cause->get_property ("pitch"))->steps ();
+      int pitch = unsmob<Pitch> (cause->get_property ("pitch"))->steps ();
       if (pitch == new_pitch)
         {
           primitive.grob ()->
@@ -491,7 +476,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
 
       int delta_pitch;
       SCM delta_pitch_scm = primitive->get_property ("delta-position");
-      if (delta_pitch_scm != SCM_EOL)
+      if (!scm_is_null (delta_pitch_scm))
         delta_pitch = scm_to_int (delta_pitch_scm);
       else
         {
@@ -741,8 +726,15 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
 #endif
 }
 
-ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
-ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head);
+void
+Vaticana_ligature_engraver::boot ()
+{
+  ADD_LISTENER (Vaticana_ligature_engraver, pes_or_flexa);
+  ADD_LISTENER (Vaticana_ligature_engraver, ligature);
+  ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
+  ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, ligature_head);
+}
+
 ADD_TRANSLATOR (Vaticana_ligature_engraver,
                 /* doc */
                 "Handle ligatures by glueing special ligature heads"