]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/cluster.cc
add vim.
[lilypond.git] / lily / cluster.cc
index af858ada863d9cb9bcd9ad9c4ba9d520a628c946..6c11ff1aa63b970446c9865ad39ad1aee2f1fc4b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2002--2003 Juergen Reuter <reuter@ipd.uka.de>
+  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
 
   Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
    TODO: Add support for cubic spline segments.
 
  */
-Molecule
+Stencil
 brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_points)
 {
-#if 0
-  Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
-#else
   Real blotdiameter = Staff_symbol_referencer::staff_space (me)/2;
-#endif
 
-  Real padding;
-  SCM padding_scm = me->get_grob_property ("padding");
-  if (gh_number_p (padding_scm))
-    padding = gh_scm2double (padding_scm);
-  else
-    padding = 0.0;
+  Real padding =robust_scm2double ( me->get_property ("padding"), 0.0);
+
   Offset vpadding = Offset (0, padding);
   Offset hpadding = Offset (0.5 * blotdiameter, 0);
   Offset hvpadding = 0.5 * hpadding + vpadding;
 
-  SCM shape_scm = me->get_grob_property ("style");
+  SCM shape_scm = me->get_property ("style");
   String shape;
 
   if (gh_symbol_p (shape_scm))
@@ -57,11 +49,11 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
     {
       programming_error ("#'style should be symbol.");
       me->suicide();
-      return  Molecule();
+      return  Stencil();
     }
 
 
-  Molecule out = Molecule ();
+  Stencil out = Stencil ();
   Array<Offset> points;
   points.clear ();
   int size = bottom_points.size ();
@@ -73,7 +65,7 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
          box.add_point (bottom_points[i] - hvpadding);
          box.add_point (Offset(top_points[i + 1][X_AXIS],
                                top_points[i][Y_AXIS]) + hvpadding);
-         out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+         out.add_stencil (Lookup::round_filled_box (box, blotdiameter));
        }
     }
   else if (String::compare (shape, "rightsided-stairs") == 0)
@@ -84,7 +76,7 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
          box.add_point (Offset(bottom_points[i][X_AXIS],
                                bottom_points[i + 1][Y_AXIS]) - hvpadding);
          box.add_point (top_points[i + 1] + hvpadding);
-         out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+         out.add_stencil (Lookup::round_filled_box (box, blotdiameter));
        }
     }
   else if (String::compare (shape, "centered-stairs") == 0)
@@ -99,7 +91,7 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
                         hvpadding);
          box.add_point (Offset (right_xmid, top_points[i][Y_AXIS]) +
                         hvpadding);
-         out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+         out.add_stencil (Lookup::round_filled_box (box, blotdiameter));
          left_xmid = right_xmid;
        }
       Real right_xmid = bottom_points[size - 1][X_AXIS];
@@ -108,7 +100,7 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
                     hvpadding);
       box.add_point (Offset (right_xmid, top_points[size - 1][Y_AXIS]) +
                     hvpadding);
-      out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+      out.add_stencil (Lookup::round_filled_box (box, blotdiameter));
     }
   else if (String::compare (shape, "ramp") == 0)
     {
@@ -124,7 +116,7 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
          points.push (top_points[i] + vpadding);
        }
       points.push (top_points[0] + vpadding + hpadding);
-      out.add_molecule (Lookup::round_filled_polygon (points, blotdiameter));
+      out.add_stencil (Lookup::round_filled_polygon (points, blotdiameter));
     }
   else
     {
@@ -133,16 +125,16 @@ brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_poi
   return out;
 }
 
-MAKE_SCHEME_CALLBACK (Cluster,brew_molecule,1);
+MAKE_SCHEME_CALLBACK (Cluster,print,1);
 SCM
-Cluster::brew_molecule (SCM smob)
+Cluster::print (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
 
   Spanner *spanner = dynamic_cast<Spanner*> (me);
   if (!spanner)
     {
-      me->programming_error ("Cluster::brew_molecule(): not a spanner");
+      me->programming_error ("Cluster::print(): not a spanner");
       return SCM_EOL;
     }
 
@@ -150,7 +142,7 @@ Cluster::brew_molecule (SCM smob)
   Item *right_bound = spanner->get_bound (RIGHT);
 
   Grob *common = left_bound->common_refpoint (right_bound, X_AXIS);
-  SCM cols  =me->get_grob_property ("columns");
+  SCM cols  =me->get_property ("columns");
 
   if (!gh_pair_p (cols))
     {
@@ -177,10 +169,10 @@ Cluster::brew_molecule (SCM smob)
     {
       Grob * col = unsmob_grob (ly_car (s));
 
-      SCM posns = col->get_grob_property ("positions");
+      SCM posns = col->get_property ("positions");
       
       Slice s (0,0);
-      if (ly_number_pair_p (posns))
+      if (is_number_pair (posns))
        s = Slice (gh_scm2int (gh_car (posns)),
                   gh_scm2int (gh_cdr (posns)));
 
@@ -196,17 +188,17 @@ Cluster::brew_molecule (SCM smob)
     {
       Spanner *orig = dynamic_cast<Spanner*> (spanner->original_);
       
-      if (spanner->break_index_ < orig->broken_intos_.size()-1)
+      if (spanner->get_break_index () < orig->broken_intos_.size()-1)
        {
-         Spanner * next = orig->broken_intos_[spanner->break_index_+1];
-         SCM cols = next->get_grob_property ("columns");
+         Spanner * next = orig->broken_intos_[spanner->get_break_index () + 1];
+         SCM cols = next->get_property ("columns");
          if (gh_pair_p (cols))
            {
              Grob * col = unsmob_grob (ly_car (scm_last_pair (cols)));
-             SCM posns = col->get_grob_property ("positions");
+             SCM posns = col->get_property ("positions");
       
              Slice s (0,0);
-             if (ly_number_pair_p (posns))
+             if (is_number_pair (posns))
                s = Slice (gh_scm2int (gh_car (posns)),
                           gh_scm2int (gh_cdr (posns)));
 
@@ -221,21 +213,17 @@ Cluster::brew_molecule (SCM smob)
   bottom_points.reverse ();
   top_points.reverse ();
 
-  Molecule out = brew_cluster_piece (me, bottom_points, top_points);
+  Stencil out = brew_cluster_piece (me, bottom_points, top_points);
   return out.smobbed_copy ();
 }
 
 ADD_INTERFACE (Cluster,"cluster-interface",
-  "A graphically drawn musical cluster. " 
-"\n\n"
-"@code{padding} adds to the vertical extent of the shape (top and "
-"bottom) and is expressed in units of staffspace.  Since the pitch "
-"range of a single pitch is infinitely small, if padding is set to "
-"@code{0.0}, this possibly results in an invisible shape, if you,for "
-"example, say @code{c-\\startCluster d e-\\endCluster}.  The default "
-"value for @code{padding} therefore is @code{0.25}, such that a single "
-"pitch roughly shows the same height as a note head. "
-"\n\n"
-"@code{style} controls the shape of cluster segments.  Valid values include 'leftsided-stairs', 'rightsided-stairs', 'centered-stairs', and 'ramp'.\n"
+              "A graphically drawn musical cluster. " 
+              "\n\n"
+              "@code{padding} adds to the vertical extent of the shape (top and "
+              "bottom). \n\n"
+              "The property @code{style} controls the shape of cluster segments.  Valid values "
+              "include @code{leftsided-stairs}, @code{rightsided-stairs}, @code{centered-stairs}, "
+              "and @code{ramp}.\n"
 ,
   "style padding columns");