]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/vaticana-ligature-engraver.cc
new file, move from
[lilypond.git] / lily / vaticana-ligature-engraver.cc
index a7d4dfff10014fbcef8d5d99313df2e4ce2542a1..94cccf6f08bdfa9f983b1a62d0420a2091fda9c4 100644 (file)
@@ -14,7 +14,7 @@
 #include "staff-symbol-referencer.hh"
 #include "font-interface.hh"
 #include "warn.hh"
-#include "paper-def.hh"
+#include "output-def.hh"
 #include "paper-column.hh"
 
 /*
@@ -33,7 +33,7 @@ private:
                    Real thickness);
 
 public:
-  TRANSLATOR_DECLARATIONS(Vaticana_ligature_engraver);
+  TRANSLATOR_DECLARATIONS (Vaticana_ligature_engraver);
 
 protected:
   virtual Spanner *create_ligature_spanner ();
@@ -48,7 +48,7 @@ Vaticana_ligature_engraver::Vaticana_ligature_engraver ()
 Spanner *
 Vaticana_ligature_engraver::create_ligature_spanner ()
 {
-  return make_spanner ("VaticanaLigature");
+  return make_spanner ("VaticanaLigature", SCM_EOL);
 }
 
 bool
@@ -155,7 +155,7 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
     dynamic_cast<Item*> (primitives[0].grob_)->get_column ();
 
   Real join_thickness =
-    thickness * column->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
+    thickness * column->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"));
 
   /*
    * Amount of extra space two put between some particular
@@ -176,15 +176,15 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
     {
       Item *primitive = dynamic_cast<Item*> (primitives[i].grob_);
       int prefix_set =
-       gh_scm2int (primitive->get_grob_property ("prefix-set"));
+       ly_scm2int (primitive->get_property ("prefix-set"));
       int context_info =
-       gh_scm2int (primitive->get_grob_property ("context-info"));
+       ly_scm2int (primitive->get_property ("context-info"));
 
       /*
        * Get glyph_name, delta_pitch and context_info for this head.
        */
 
-      SCM glyph_name_scm = primitive->get_grob_property ("glyph-name");
+      SCM glyph_name_scm = primitive->get_property ("glyph-name");
       if (glyph_name_scm == SCM_EOL)
        {
          primitive->programming_error ("Vaticana_ligature:"
@@ -197,10 +197,10 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
       int delta_pitch = 0;
       if (prev_primitive) /* urgh, need prev_primitive only here */
        {
-         SCM delta_pitch_scm = prev_primitive->get_grob_property ("delta-pitch");
+         SCM delta_pitch_scm = prev_primitive->get_property ("delta-pitch");
          if (delta_pitch_scm != SCM_EOL)
            {
-             delta_pitch = gh_scm2int (delta_pitch_scm);
+             delta_pitch = ly_scm2int (delta_pitch_scm);
            }
          else
            {
@@ -257,8 +257,8 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
       /*
        * Save the head's final x-offset.
        */
-      primitive->set_grob_property ("x-offset",
-                                   gh_double2scm (x_offset));
+      primitive->set_property ("x-offset",
+                                   scm_make_real (x_offset));
 
       /*
        * If the head is the 2nd head of a pes or flexa (but not a
@@ -276,8 +276,8 @@ Vaticana_ligature_engraver::align_heads (Array<Grob_info> primitives,
            }
          else
            {
-             prev_primitive->set_grob_property ("add-join",
-                                                gh_bool2scm(true));
+             prev_primitive->set_property ("add-join",
+                                                ly_bool2scm (true));
 
              /*
               * Create a small overlap of adjacent heads so that the join
@@ -335,11 +335,11 @@ void
 check_for_prefix_loss (Item *primitive)
 {
   int prefix_set =
-    gh_scm2int (primitive->get_grob_property ("prefix-set"));
+    ly_scm2int (primitive->get_property ("prefix-set"));
   if (prefix_set & ~PES_OR_FLEXA)
     {
       String prefs = Gregorian_ligature::prefixes_to_str (primitive);
-      primitive->warning (_f ("ignored prefix(es) `%s' of this head according "
+      primitive->warning (_f ("ignored prefix (es) `%s' of this head according "
                              "to restrictions of the selected ligature style",
                              prefs.to_str0 ()));
     }
@@ -349,23 +349,23 @@ void
 Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
                                             Array<Grob_info> primitives)
 {
-  Real flexa_width= robust_scm2double ( ligature->get_grob_property ("flexa-width"), 2);
+  Real flexa_width= robust_scm2double ( ligature->get_property ("flexa-width"), 2);
 
-  Real thickness= robust_scm2double ( ligature->get_grob_property ("thickness"), 1);
+  Real thickness= robust_scm2double ( ligature->get_property ("thickness"), 1);
 
   Item *prev_primitive = 0;
   int prev_prefix_set = 0;
   int prev_context_info = 0;
   int prev_delta_pitch = 0;
   String prev_glyph_name = "";
-  for (int i = 0; i < primitives.size(); i++) {
+  for (int i = 0; i < primitives.size (); i++) {
     Item *primitive = dynamic_cast<Item*> (primitives[i].grob_);
 
     int delta_pitch;
-    SCM delta_pitch_scm = primitive->get_grob_property ("delta-pitch");
+    SCM delta_pitch_scm = primitive->get_property ("delta-pitch");
     if (delta_pitch_scm != SCM_EOL)
       {
-       delta_pitch = gh_scm2int (delta_pitch_scm);
+       delta_pitch = ly_scm2int (delta_pitch_scm);
       }
     else
       {
@@ -377,14 +377,14 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
 
     /* retrieve & complete prefix_set and context_info */
     int prefix_set =
-      gh_scm2int (primitive->get_grob_property ("prefix-set"));
+      ly_scm2int (primitive->get_property ("prefix-set"));
     int context_info =
-      gh_scm2int (primitive->get_grob_property ("context-info"));
+      ly_scm2int (primitive->get_property ("context-info"));
     if (is_stacked_head (prefix_set, context_info))
       {
        context_info |= STACKED_HEAD;
-       primitive->set_grob_property ("context-info",
-                                     gh_int2scm (context_info));
+       primitive->set_property ("context-info",
+                                     scm_int2num (context_info));
       }
 
     /*
@@ -397,7 +397,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
     if (prefix_set & VIRGA)
       {
        glyph_name = "vaticana_punctum";
-       primitive->set_grob_property ("add-stem", gh_bool2scm(true));
+       primitive->set_property ("add-stem", ly_bool2scm (true));
       }
     else if (prefix_set & QUILISMA)
       glyph_name = "vaticana_quilisma";
@@ -458,8 +458,8 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
               * Therefore, the following line of code should be
               * placed somewhere else.
               */
-             prev_primitive->set_grob_property ("add-cauda",
-                                                gh_bool2scm(false));
+             prev_primitive->set_property ("add-cauda",
+                                                ly_bool2scm (false));
            }
          glyph_name = "vaticana_reverse_plica";
        }
@@ -490,7 +490,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
      */
     if ((context_info & FLEXA_LEFT) && !(context_info & PES_UPPER))
       if (!String::compare (glyph_name, "vaticana_punctum"))
-       primitive->set_grob_property ("add-cauda", gh_bool2scm(true));
+       primitive->set_property ("add-cauda", ly_bool2scm (true));
 
     /*
      * Execptional rule for porrectus:
@@ -503,17 +503,17 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
       {
        check_for_prefix_loss (prev_primitive);
        prev_glyph_name = "flexa";
-       prev_primitive->set_grob_property ("flexa-height",
-                                          gh_int2scm (prev_delta_pitch));
-       prev_primitive->set_grob_property ("flexa-width",
-                                          gh_double2scm (flexa_width));
+       prev_primitive->set_property ("flexa-height",
+                                          scm_int2num (prev_delta_pitch));
+       prev_primitive->set_property ("flexa-width",
+                                          scm_make_real (flexa_width));
        bool add_cauda = !(prev_prefix_set && PES_OR_FLEXA);
-       prev_primitive->set_grob_property ("add-cauda",
-                                          gh_bool2scm (add_cauda));
+       prev_primitive->set_property ("add-cauda",
+                                          ly_bool2scm (add_cauda));
        check_for_prefix_loss (primitive);
        glyph_name = "";
-       primitive->set_grob_property ("flexa-width",
-                                     gh_double2scm (flexa_width));
+       primitive->set_property ("flexa-width",
+                                     scm_make_real (flexa_width));
       }
 
     /*
@@ -537,7 +537,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
       }
 
     if (prev_primitive)
-      prev_primitive->set_grob_property ("glyph-name",
+      prev_primitive->set_property ("glyph-name",
                                         scm_makfrom0str (prev_glyph_name.to_str0 ()));
 
     /*
@@ -546,7 +546,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
      * ligature grob's value for thickness to each ligature head (even
      * if not all of them need to know).
      */
-    primitive->set_grob_property ("thickness", gh_double2scm (thickness));
+    primitive->set_property ("thickness", scm_make_real (thickness));
 
     prev_primitive = primitive;
     prev_prefix_set = prefix_set;
@@ -555,7 +555,7 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
     prev_glyph_name = glyph_name;
   }
 
-  prev_primitive->set_grob_property ("glyph-name",
+  prev_primitive->set_property ("glyph-name",
                                     scm_makfrom0str (prev_glyph_name.to_str0 ()));
 
 #if 0
@@ -565,15 +565,15 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
   align_heads (primitives, flexa_width, thickness);
 
 #if 0 // experimental code to collapse spacing after ligature
-  /* TODO: set to max(old/new spacing-increment), since other
+  /* TODO: set to max (old/new spacing-increment), since other
      voices/staves also may want to set this property. */
   Item *first_primitive = dynamic_cast<Item*> (primitives[0].grob_);
-  Paper_column *paper_column = first_primitive->get_column();
+  Paper_column *paper_column = first_primitive->get_column ();
   paper_column->warning (_f ("Vaticana_ligature_engraver: "
                             "setting `spacing-increment = %f': ptr=%ul",
                             ligature_width, paper_column));
   paper_column->
-    set_grob_property("forced-spacing", gh_double2scm (ligature_width));
+    set_property ("forced-spacing", scm_make_real (ligature_width));
 #endif
 }