]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/mensural-ligature.cc
* input/test/time-signature-double.ly: use markups for double time
[lilypond.git] / lily / mensural-ligature.cc
index 9581e567248ac76287e63977217c5a5c27697931..77e48816221278c394e6fbaaf1fec526151ebd09 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 2002 Juergen Reuter <reuter@ipd.uka.de>
+  (c) 2002--2003 Juergen Reuter <reuter@ipd.uka.de>
 */
 
 #include <math.h>
@@ -28,38 +28,38 @@ brew_flexa (Grob *me,
            bool solid,
            Real width,
            Real thickness,
-           bool add_stem,
-           Direction stem_direction)
+           bool add_cauda,
+           Direction cauda_direction)
 {
   Real staff_space = Staff_symbol_referencer::staff_space (me);
   Real height = 0.6 * staff_space;
   Molecule molecule = Molecule ();
 
-  if (add_stem)
+  if (add_cauda)
     {
       bool consider_interval =
-       stem_direction * interval > 0.0;
+       cauda_direction * interval > 0.0;
 
-      Interval stem_box_x (0, thickness);
-      Interval stem_box_y;
+      Interval cauda_box_x (0, thickness);
+      Interval cauda_box_y;
 
       if (consider_interval)
         {
          Real y_length = max (interval/2.0*staff_space, 1.2*staff_space);
-         stem_box_y = Interval (0, y_length);
+         cauda_box_y = Interval (0, y_length);
        }
       else
-       stem_box_y = Interval (0, staff_space);
+       cauda_box_y = Interval (0, staff_space);
 
       Real y_correction =
-       (stem_direction == UP) ?
+       (cauda_direction == UP) ?
        +0.5*height :
-       -0.5*height - stem_box_y.length();
+       -0.5*height - cauda_box_y.length();
 
-      Box stem_box (stem_box_x, stem_box_y);
-      Molecule stem = Lookup::filledbox (stem_box);
-      stem.translate_axis (y_correction, Y_AXIS);
-      molecule.add_molecule(stem);
+      Box cauda_box (cauda_box_x, cauda_box_y);
+      Molecule cauda = Lookup::filledbox (cauda_box);
+      cauda.translate_axis (y_correction, Y_AXIS);
+      molecule.add_molecule (cauda);
     }
 
   Real slope = (interval / 2.0 * staff_space) / width;
@@ -130,7 +130,8 @@ internal_brew_primitive (Grob *me, bool ledger_take_space)
   SCM primitive_scm = me->get_grob_property ("primitive");
   if (primitive_scm == SCM_EOL)
     {
-      programming_error ("Mensural_ligature: undefined primitive -> ignoring grob");
+      programming_error ("Mensural_ligature:"
+                        "undefined primitive -> ignoring grob");
       return Molecule ();
     }
 
@@ -149,8 +150,10 @@ internal_brew_primitive (Grob *me, bool ledger_take_space)
        }
       else
        {
-         programming_error (_f ("Mensural_ligature: thickness undefined on flexa %d; assuming 1.4", primitive));
-         thickness = 1.4 * me->paper_l ()->get_var ("linethickness");
+         programming_error (_f ("Mensural_ligature:"
+                                "thickness undefined on flexa %d; assuming 1.4",
+                                primitive));
+         thickness = 1.4 * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
        }
     }
 
@@ -163,7 +166,9 @@ internal_brew_primitive (Grob *me, bool ledger_take_space)
        }
       else
        {
-         programming_error (_f ("Mensural_ligature: delta-pitch undefined on flexa %d; assuming 0", primitive));
+         programming_error (_f ("Mensural_ligature:"
+                                "delta-pitch undefined on flexa %d; assuming 0",
+                                primitive));
          delta_pitch = 0;
        }
 
@@ -174,7 +179,9 @@ internal_brew_primitive (Grob *me, bool ledger_take_space)
        }
       else
        {
-         programming_error (_f ("Mensural_ligature: flexa-width undefined on flexa %d; assuming 2.0", primitive));
+         programming_error (_f ("Mensural_ligature:"
+                                "flexa-width undefined on flexa %d; assuming 2.0",
+                                primitive));
          flexa_width = 2.0 * staff_space;
        }
     }
@@ -205,29 +212,29 @@ internal_brew_primitive (Grob *me, bool ledger_take_space)
                          flexa_width, thickness, false, CENTER);
        break;
       default:
-       programming_error (_f ("Mensural_ligature: unexpected case fall-through"));
+       programming_error (_f ("Mensural_ligature:"
+                              "unexpected case fall-through"));
        return Molecule ();
     }
 
-  SCM join_left_scm = me->get_grob_property ("join-left");
+  SCM join_left_scm = me->get_grob_property ("join-left-amount");
   if (join_left_scm != SCM_EOL)
     {
       int join_left = gh_scm2int (join_left_scm);
       if (!join_left)
-       programming_error (_f ("Menusral_ligature: (join_left == 0)"));
-      Real blotdiameter = (me->paper_l ()->get_var ("blotdiameter"));
+       programming_error (_f ("Mensural_ligature: (join_left == 0)"));
+      Real blotdiameter = (me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter")));
       Interval x_extent = Interval (0, thickness);
       Interval y_extent = (join_left > 0) ?
        Interval (-join_left * 0.5 * staff_space, 0) :
        Interval (0, -join_left * 0.5 * staff_space);
-      Box stem_box (x_extent, y_extent);
+      Box join_box (x_extent, y_extent);
 
-      Molecule stem =
-       Lookup::roundfilledbox (stem_box, blotdiameter);
-      out.add_molecule (stem);
+      Molecule join = Lookup::round_filled_box (join_box, blotdiameter);
+      out.add_molecule (join);
     }
 
-  int pos = (int)rint (Staff_symbol_referencer::position_f (me));
+  int pos = (int)rint (Staff_symbol_referencer::get_position (me));
   add_ledger_lines(me, &out, pos, 0, ledger_take_space);
   if (primitive & MLP_FLEXA)
     {
@@ -253,6 +260,7 @@ Mensural_ligature::brew_molecule (SCM)
   return SCM_EOL;
 }
 
-ADD_INTERFACE(Mensural_ligature, "mensural-ligature-interface",
-             "A mensural ligature",
-             "thickness flexa-width");
+ADD_INTERFACE (Mensural_ligature, "mensural-ligature-interface",
+              "A mensural ligature",
+              "delta-pitch flexa-width head-width join-left join-left-amount "
+              "ligature-primitive-callback primitive thickness");