]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/spacing-spanner.cc
* lily/moment.cc (robust_scm2moment): new function.
[lilypond.git] / lily / spacing-spanner.cc
index 9e051ec454e395682b8a7f6034cee6a102d009f3..f5636231233b354e4b6a02e4f4083a4e390c9202 100644 (file)
@@ -99,8 +99,8 @@ loose_column (Grob *l, Grob *c, Grob *r)
   if (!scm_is_pair (lns) || !scm_is_pair (rns))
     return false;
 
-  Item * l_neighbor = dynamic_cast<Item*>  (unsmob_grob (ly_car (lns)));
-  Item * r_neighbor = dynamic_cast<Item*>  (unsmob_grob (ly_car (rns)));
+  Item * l_neighbor = dynamic_cast<Item*>  (unsmob_grob (scm_car (lns)));
+  Item * r_neighbor = dynamic_cast<Item*>  (unsmob_grob (scm_car (rns)));
 
   if (!l_neighbor || !r_neighbor)
     return false;
@@ -133,19 +133,19 @@ loose_column (Grob *l, Grob *c, Grob *r)
 
     in any case, we don't want to move bar lines.
    */
-  for (SCM e = c->get_property ("elements"); scm_is_pair (e); e = ly_cdr (e))
+  for (SCM e = c->get_property ("elements"); scm_is_pair (e); e = scm_cdr (e))
     {
-      Grob * g = unsmob_grob (ly_car (e));
+      Grob * g = unsmob_grob (scm_car (e));
       if (g && Break_align_interface::has_interface (g))
        {
          for (SCM s = g->get_property ("elements"); scm_is_pair (s);
-              s = ly_cdr (s))
+              s = scm_cdr (s))
            {
-             Grob *h = unsmob_grob (ly_car (s));
+             Grob *h = unsmob_grob (scm_car (s));
 
              /*
                ugh. -- fix staff-bar name? 
-              */
+             */
              if (h  && h->get_property ("break-align-symbol") == ly_symbol2scm ("staff-bar"))
                return false;
            }
@@ -177,18 +177,18 @@ Spacing_spanner::prune_loose_columns (Grob*me,Link_array<Grob> *cols, Rational s
       if (loose_column (cols->elem (i-1), c, cols->elem (i+1)))
        {
          SCM lns = c->get_property ("left-neighbors");
-         lns = scm_is_pair (lns) ? ly_car (lns) : SCM_BOOL_F;
+         lns = scm_is_pair (lns) ? scm_car (lns) : SCM_BOOL_F;
 
          SCM rns = c->get_property ("right-neighbors");
-         rns = scm_is_pair (rns) ? ly_car (rns) : SCM_BOOL_F;
+         rns = scm_is_pair (rns) ? scm_car (rns) : SCM_BOOL_F;
 
          /*
            Either object can be non existent, if the score ends
            prematurely.
-          */
-         rns = ly_car (unsmob_grob (rns)->get_property ("right-items"));
+         */
+         rns = scm_car (unsmob_grob (rns)->get_property ("right-items"));
          c->set_property ("between-cols", scm_cons (lns,
-                                                        rns));
+                                                    rns));
 
          /*
            Set distance constraints for loose columns
@@ -206,9 +206,9 @@ Spacing_spanner::prune_loose_columns (Grob*me,Link_array<Grob> *cols, Rational s
              Item *rc = dynamic_cast<Item*> (d == LEFT  ? c : next_door[RIGHT]);
 
              for (SCM s = lc->get_property ("spacing-wishes");
-                  scm_is_pair (s); s = ly_cdr (s))
+                  scm_is_pair (s); s = scm_cdr (s))
                {
-                 Grob *sp = unsmob_grob (ly_car (s));
+                 Grob *sp = unsmob_grob (scm_car (s));
                  if (Note_spacing::left_column (sp) != lc
                      || Note_spacing::right_column (sp) != rc)
                    continue;
@@ -273,9 +273,9 @@ Spacing_spanner::set_explicit_neighbor_columns (Link_array<Grob> cols)
 
 
       SCM wishes=  cols[i]->get_property ("spacing-wishes");
-      for (SCM s =wishes; scm_is_pair (s); s = ly_cdr (s))
+      for (SCM s =wishes; scm_is_pair (s); s = scm_cdr (s))
        {
-         Item * wish = dynamic_cast<Item*> (unsmob_grob (ly_car (s)));
+         Item * wish = dynamic_cast<Item*> (unsmob_grob (scm_car (s)));
 
          Item * lc = wish->get_column ();
          Grob * right = Note_spacing::right_column (wish);
@@ -290,7 +290,7 @@ Spacing_spanner::set_explicit_neighbor_columns (Link_array<Grob> cols)
 
          /*
            update the left column.
-          */
+         */
          if (right_rank <= min_rank)
            {
              if (right_rank < min_rank)
@@ -302,13 +302,13 @@ Spacing_spanner::set_explicit_neighbor_columns (Link_array<Grob> cols)
 
          /*
            update the right column of the wish.
-          */
+         */
          int maxrank = 0;
          SCM left_neighs = rc->get_property ("left-neighbors");
          if (scm_is_pair (left_neighs)
-             && unsmob_grob (ly_car (left_neighs)))
+             && unsmob_grob (scm_car (left_neighs)))
            {
-             Item * it = dynamic_cast<Item*> (unsmob_grob (ly_car (left_neighs)));
+             Item * it = dynamic_cast<Item*> (unsmob_grob (scm_car (left_neighs)));
              maxrank = Paper_column::get_rank (it->get_column ());
            }
 
@@ -346,7 +346,7 @@ Spacing_spanner::set_implicit_neighbor_columns (Link_array<Grob> cols)
 
       /*
        sloppy with typnig left/right-neighbors should take list, but paper-column found instead.
-       */
+      */
       SCM ln = cols[i] ->get_property ("left-neighbors");
       if (!scm_is_pair (ln) && i ) 
        {
@@ -370,7 +370,7 @@ Spacing_spanner::set_springs (SCM smob)
 
   /*
     can't use get_system() ? --hwn.
-   */
+  */
   Link_array<Grob> all (me->pscore_->system_->columns ());
 
   set_explicit_neighbor_columns (all);
@@ -422,7 +422,7 @@ Spacing_spanner::find_shortest (Grob *me, Link_array<Grob> const &cols)
 {
   /*
     ascending in duration
-   */
+  */
   Array<Rational> durations; 
   Array<int> counts;
   
@@ -506,7 +506,8 @@ Spacing_spanner::find_shortest (Grob *me, Link_array<Grob> const &cols)
   (different time sigs) than others, and should be spaced differently.
  */
 void
-Spacing_spanner::do_measure (Rational global_shortest, Grob*me, Link_array<Grob> *cols) 
+Spacing_spanner::do_measure (Rational global_shortest, Grob*me,
+                            Link_array<Grob> *cols) 
 {
 
   Real headwid = robust_scm2double (me->get_property ("spacing-increment"), 1);
@@ -539,18 +540,16 @@ Spacing_spanner::do_measure (Rational global_shortest, Grob*me, Link_array<Grob>
            breakable_column_spacing (me, l, rb, global_shortest);
          if (lb && rb)
            breakable_column_spacing (me, lb, rb, global_shortest);
-         
-         continue ; 
        }
-
-
-      musical_column_spacing (me, lc, rc, headwid, global_shortest);
-      if (Item *rb = r->find_prebroken_piece (LEFT))
-       musical_column_spacing (me, lc, rb, headwid, global_shortest);
-    }    
+      else
+       {
+         musical_column_spacing (me, lc, rc, headwid, global_shortest);
+         if (Item *rb = r->find_prebroken_piece (LEFT))
+           musical_column_spacing (me, lc, rb, headwid, global_shortest);
+       }    
+    }
 }
 
-
 /*
   Generate the space between two musical columns LC and RC, given
   spacing parameters INCR and SHORTEST.
@@ -572,9 +571,9 @@ Spacing_spanner::musical_column_spacing (Grob *me, Item * lc, Item *rc, Real inc
     happens after the current note (this is set in the grob
     property SPACING-SEQUENCE.
   */
-  for (SCM s = seq; scm_is_pair (s); s = ly_cdr (s))
+  for (SCM s = seq; scm_is_pair (s); s = scm_cdr (s))
     {
-      Grob * wish = unsmob_grob (ly_car (s));
+      Grob * wish = unsmob_grob (scm_car (s));
 
       Item *wish_rcol = Note_spacing::right_column (wish);
       if (Note_spacing::left_column (wish) != lc
@@ -734,9 +733,9 @@ Spacing_spanner::breakable_column_spacing (Grob*me, Item* l, Item *r,Moment shor
   if (dt == Moment (0,0))
     {
       for (SCM s = l->get_property ("spacing-wishes");
-          scm_is_pair (s); s = ly_cdr (s))
+          scm_is_pair (s); s = scm_cdr (s))
        {
-         Item * spacing_grob = dynamic_cast<Item*> (unsmob_grob (ly_car (s)));
+         Item * spacing_grob = dynamic_cast<Item*> (unsmob_grob (scm_car (s)));
 
          if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob))
            continue;