]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/cluster.cc
Merge branch 'jneeman' of git+ssh://jneem@git.sv.gnu.org/srv/git/lilypond into jneeman
[lilypond.git] / lily / cluster.cc
index 02fd9e3b40e2de9f611e1084d07b6e54d85e7739..90c2adcf5054a15f9f8151e878ec8220590890ca 100644 (file)
@@ -9,10 +9,6 @@
 */
 
 #include "cluster.hh"
-
-#include <cstdio>
-using namespace std;
-
 #include "international.hh"
 #include "item.hh"
 #include "lookup.hh"
@@ -25,9 +21,9 @@ using namespace std;
 
 /*
   TODO: Add support for cubic spline segments.
-*/
+ */
 Stencil
-brew_cluster_piece (Grob *me, std::vector<Offset> bottom_points, std::vector<Offset> top_points)
+brew_cluster_piece (Grob *me, vector<Offset> bottom_points, vector<Offset> top_points)
 {
   Real blotdiameter = Staff_symbol_referencer::staff_space (me) / 2;
 
@@ -38,7 +34,7 @@ brew_cluster_piece (Grob *me, std::vector<Offset> bottom_points, std::vector<Off
   Offset hvpadding = 0.5 * hpadding + vpadding;
 
   SCM shape_scm = me->get_property ("style");
-  std::string shape;
+  string shape;
 
   if (scm_is_symbol (shape_scm))
     shape = ly_symbol2string (shape_scm);
@@ -50,7 +46,7 @@ brew_cluster_piece (Grob *me, std::vector<Offset> bottom_points, std::vector<Off
     }
 
   Stencil out;
-  std::vector<Offset> points;
+  vector<Offset> points;
   points.clear ();
   int size = bottom_points.size ();
   if (shape == "leftsided-stairs")
@@ -133,7 +129,7 @@ Cluster::print (SCM smob)
 
   Grob *commonx = left_bound->common_refpoint (right_bound, X_AXIS);
 
-  Link_array<Grob> const &cols = extract_grob_array (me, "columns");
+  vector<Grob*> const &cols = extract_grob_array (me, "columns");
   if (cols.empty ())
     {
       me->warning (_ ("junking empty cluster"));
@@ -144,8 +140,8 @@ Cluster::print (SCM smob)
 
   commonx = common_refpoint_of_array (cols, commonx, X_AXIS);
   Grob *commony = common_refpoint_of_array (cols, me, Y_AXIS);
-  std::vector<Offset> bottom_points;
-  std::vector<Offset> top_points;
+  vector<Offset> bottom_points;
+  vector<Offset> top_points;
 
   Real left_coord = left_bound->relative_coordinate (commonx, X_AXIS);
 
@@ -175,7 +171,7 @@ Cluster::print (SCM smob)
       if (spanner->get_break_index () < orig->broken_intos_.size () - 1)
        {
          Spanner *next = orig->broken_intos_[spanner->get_break_index () + 1];
-         Link_array<Grob> const &next_cols = extract_grob_array (next, "columns");
+         vector<Grob*> const &next_cols = extract_grob_array (next, "columns");
          if (next_cols.size () > 0)
            {
              Grob *next_commony = common_refpoint_of_array (next_cols, next, Y_AXIS);
@@ -184,21 +180,22 @@ Cluster::print (SCM smob)
              Interval v = col->extent (next_commony, Y_AXIS);
              Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord;
 
-             bottom_points.insert (Offset (x, v[DOWN]), 0);
-             top_points.insert (Offset (x, v[UP]), 0);
+             bottom_points.insert (bottom_points.begin (),
+                                   Offset (x, v[DOWN]));
+             top_points.insert (top_points.begin (), Offset (x, v[UP]));
            }
        }
     }
 
-  bottom_points.reverse ();
-  top_points.reverse ();
+  reverse (bottom_points);
+  reverse (top_points);
 
   Stencil out = brew_cluster_piece (me, bottom_points, top_points);
   out.translate_axis (- me->relative_coordinate (commony, Y_AXIS), Y_AXIS);
   return out.smobbed_copy ();
 }
 
-ADD_INTERFACE (Cluster, "cluster-interface",
+ADD_INTERFACE (Cluster,
               "A graphically drawn musical cluster. "
               "\n\n"
               "@code{padding} adds to the vertical extent of the shape (top and "
@@ -206,13 +203,15 @@ ADD_INTERFACE (Cluster, "cluster-interface",
               "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");
+              "style "
+              "padding "
+              "columns ");
 
 struct Cluster_beacon
 {
 public:
   DECLARE_SCHEME_CALLBACK (height, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 MAKE_SCHEME_CALLBACK (Cluster_beacon, height, 1);
@@ -226,7 +225,6 @@ Cluster_beacon::height (SCM g)
 }
 
 ADD_INTERFACE (Cluster_beacon,
-              "cluster-beacon-interface",
               "A place holder for the cluster spanner to determine the vertical "
               "extents of a cluster spanner at this X position.",