]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/lyric-engraver.cc (get_current_rest): New function.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 23 Sep 2004 18:36:41 +0000 (18:36 +0000)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 23 Sep 2004 18:36:41 +0000 (18:36 +0000)
* lily/extender-engraver.cc (stop_translation_timestep): Use it:
stop at rest.

* lily/lyric-extender.cc (print): Fix crash (Russ Ross).

ChangeLog
flower/include/array.hh
lily/extender-engraver.cc
lily/include/context.hh
lily/lyric-engraver.cc
lily/lyric-extender.cc
lily/multi-measure-rest.cc
scm/framework-tex.scm
scm/lily.scm

index 5d5bcc9e5542a0e4fddc24801f588051a7ae663d..b3e3708fd365a41459bc110d7531db8935115e6a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,19 @@
 2004-09-23  Graham Percival  <gperlist@shaw.ca>
 
-       * Documentation/user/tutorial.itely: do manual style 2-space indents in examples
+       * Documentation/user/tutorial.itely: do manual style 2-space
+       indents in examples
 
        * Documentation/user/notation.itely: more editing.
 
 2004-09-23  Jan Nieuwenhuizen  <janneke@gnu.org>
 
+       * lily/lyric-engraver.cc (get_current_rest): New function.
+
+       * lily/extender-engraver.cc (stop_translation_timestep): Use it:
+       stop at rest.
+
+       * lily/lyric-extender.cc (print): Fix crash (Russ Ross).
+
        * lily/slur-scoring.cc (get_bezier): Fix for broken beziers.
 
 2004-09-23  Juergen Reuter  <reuter@ipd.uka.de>
index 9185cb8fa5f9afe7c875b261c001851897440f4b..caa76c7abf6e99fbba7b9ced2369c1bd0405501e 100644 (file)
@@ -146,7 +146,7 @@ public:
   /// access element
   T &elem_ref (int i) const 
     {
-      assert (i >=0&&i<size_);
+      assert (i >=0 && i < size_);
       return ((T*)array_)[i];  
     }
   /// access element
index f2f9d6761411002a89e47b853e55c9fe9c9b4843..7f7b11b35bafcbd2476228bbb356a28b0d5690bd 100644 (file)
@@ -8,18 +8,20 @@
                   Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "warn.hh"
-#include "lyric-extender.hh"
-#include "item.hh"
-#include "engraver.hh"
 #include "context.hh"
+#include "engraver.hh"
 #include "group-interface.hh"
+#include "item.hh"
+#include "lyric-extender.hh"
+#include "note-head.hh"
+#include "warn.hh"
 
 class Extender_engraver : public Engraver
 {
-  Music* ev_;
-  Spanner* extender_;
-  Spanner * pending_extender_;  
+  Music *ev_;
+  Spanner *extender_;
+  Spanner *pending_extender_;
+
 public:
   TRANSLATOR_DECLARATIONS (Extender_engraver);
 
@@ -29,13 +31,9 @@ protected:
   virtual bool try_music (Music*);
   virtual void stop_translation_timestep ();
   virtual void process_music ();
-private:
-
 };
 
 
-
-
 Extender_engraver::Extender_engraver ()
 {
   extender_ = 0;
@@ -44,30 +42,27 @@ Extender_engraver::Extender_engraver ()
 }
 
 bool
-Extender_engraver::try_music (Musicr)
+Extender_engraver::try_music (Music *r)
 {
-  if (ev_)
-    return false;
-
-  ev_ = r;
-  return true;
+  if (!ev_)
+    {
+      ev_ = r;
+      return true;
+    }
+  return false;
 }
 
-
 void
 Extender_engraver::process_music ()
 {
   if (ev_)
-    {
-      extender_ = make_spanner ("LyricExtender", ev_->self_scm ());
-    }
+    extender_ = make_spanner ("LyricExtender", ev_->self_scm ());
 }
 
-
 void
 Extender_engraver::acknowledge_grob (Grob_info i)
 {
-  Item * item =  dynamic_cast<Item*> (i.grob_);
+  Item *item = dynamic_cast<Item*> (i.grob_);
 
   if (item
       && item->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
@@ -84,14 +79,13 @@ void
 Extender_engraver::stop_translation_timestep ()
 {
   if (pending_extender_ && pending_extender_->get_bound (RIGHT))
-    {
-      pending_extender_ = 0;
-    }
+    pending_extender_ = 0;
 
   if (extender_ || pending_extender_)
     {
       Context *voice = get_voice_to_lyrics (context ());
-      Grob* h =  (voice) ? get_current_note_head (voice) : 0;
+      Grob *h = voice ? get_current_note_head (voice) : 0;
+      Grob *r = voice ? get_current_rest (voice) : 0;
 
       if (h)
        {
@@ -101,9 +95,12 @@ Extender_engraver::stop_translation_timestep ()
          if (pending_extender_)
            Pointer_group_interface::add_grob (pending_extender_,
                                               ly_symbol2scm ("heads"), h);
-       }           
-
-      if (extender_)
+       }
+      else if (r && pending_extender_)
+       /* Rest: stop right here. */
+       pending_extender_->set_bound (RIGHT, h);
+      if (extender_ && !r)
        {
          pending_extender_ = extender_;
          extender_ = 0;
@@ -114,22 +111,20 @@ Extender_engraver::stop_translation_timestep ()
 }
 
 void
-completize_extender (Spannersp)
+completize_extender (Spanner *sp)
 {
   if (!sp->get_bound (RIGHT))
     {
       SCM heads = sp->get_property ("heads");
       if (ly_c_pair_p (heads))
        {
-         Itemit = dynamic_cast<Item*> (unsmob_grob (ly_car (heads)));
+         Item *it = dynamic_cast<Item*> (unsmob_grob (ly_car (heads)));
          if (it)
            sp->set_bound (RIGHT, it);
        }
     }
 }
 
-  
-
 void
 Extender_engraver::finalize ()
 {
@@ -147,15 +142,12 @@ Extender_engraver::finalize ()
       completize_extender (pending_extender_);
 
       if (!pending_extender_->get_bound (RIGHT))
-         pending_extender_->warning (_("unterminated extender"));
+       pending_extender_->warning (_ ("unterminated extender"));
       pending_extender_ =0;
     }
 }
 
 
-
-
-
 ENTER_DESCRIPTION (Extender_engraver,
 /* descr */       "Create lyric extenders",
 /* creats*/       "LyricExtender",
index af504c121881480047f21744d01989ee833495f3..46d836e26dfad94e1e9b26dadfa370e817fb7fca 100644 (file)
@@ -1,10 +1,10 @@
-/*   
-     context.hh -- declare  Context
-
-     source file of the GNU LilyPond music typesetter
-
-     (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
- */
+/*
+  context.hh -- declare  Context
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
+*/
 
 #ifndef CONTEXT_HH
 #define CONTEXT_HH
@@ -44,12 +44,10 @@ public:
   SCM default_child_context_name () const;
 
   Translator_group* implementation () const;
-  Context * get_parent_context () const;
+  Context *get_parent_context () const;
   Context ();
 
-  /*
-    properties:
-   */
+  /* properties:  */
   void execute_pushpop_property (SCM prop, SCM sym, SCM val);
   SCM internal_get_property (SCM name_sym) const;
   SCM properties_as_alist () const;
@@ -58,10 +56,10 @@ public:
   void unset_property (SCM var_sym);
 
   
-  Context *remove_context (Context*trans);
+  Context *remove_context (Context *trans);
   void check_removal ();
   String context_name () const;
-  Global_context * get_global_context () const;
+  Global_context *get_global_context () const;
   
   virtual Score_context * get_score_context () const;  
   virtual Output_def *get_output_def () const;
@@ -86,18 +84,19 @@ public:
   Context arg? 
  */
 
-void apply_property_operations (Context*tg, SCM pre_init_ops);
-void execute_pushpop_property (Context * trg, SCM prop, SCM eltprop, SCM val);
-SCM updated_grob_properties (Contexttg, SCM sym);
-Context * find_context_below (Context * where,
+void apply_property_operations (Context *tg, SCM pre_init_ops);
+void execute_pushpop_property (Context *trg, SCM prop, SCM eltprop, SCM val);
+SCM updated_grob_properties (Context *tg, SCM sym);
+Context *find_context_below (Context *where,
                              SCM type_sym, String id);
-bool melisma_busy (Context*);
+bool melisma_busy (Context *);
 
 Context *get_voice_to_lyrics (Context *lyrics);
-Grob *get_current_note_head (Context * voice);
+Grob *get_current_note_head (Context *voice);
+Grob *get_current_rest (Context *voice);
 Context *unsmob_context (SCM);
 
-DECLARE_UNSMOB(Context,context);
+DECLARE_UNSMOB(Context, context);
 
 #endif /* CONTEXT_HH */
 
index ed0bab66fc235717bd9957b1a678857ad729e881..b2ca4c1f5d68dfc02eb0110ed388aac83caad09c 100644 (file)
@@ -7,31 +7,34 @@
   Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
+#include "context.hh"
 #include "engraver.hh"
 #include "event.hh"
-#include "item.hh"
-#include "context.hh"
 #include "font-metric.hh"
+#include "item.hh"
+#include "multi-measure-rest.hh"
 #include "note-head.hh"
+#include "rest.hh"
 
 /**
-   Generate texts for lyric syllables.  We only do one lyric at a time.  
+   Generate texts for lyric syllables.  We only do one lyric at a time.
    Multiple copies of this engraver should be used to do multiple voices.
  */
-class Lyric_engraver : public Engraver 
+class Lyric_engraver : public Engraver
 {
 protected:
   virtual void stop_translation_timestep ();
   virtual bool try_music (Music *);
   virtual void process_music ();
-  
+
 public:
   TRANSLATOR_DECLARATIONS (Lyric_engraver);
+
 private:
-  Music * event_;
-  Itemtext_;
+  Music *event_;
+  Item *text_;
 
-  Contextget_voice_context ();
+  Context *get_voice_context ();
 };
 
 Lyric_engraver::Lyric_engraver ()
@@ -43,10 +46,12 @@ Lyric_engraver::Lyric_engraver ()
 bool
 Lyric_engraver::try_music (Music*r)
 {
-  if (event_)
-    return false;
-  event_ =r;
-  return true;
+  if (!event_)
+    {
+      event_ = r;
+      return true;
+    }
+  return false;
 }
 
 void
@@ -54,8 +59,7 @@ Lyric_engraver::process_music ()
 {
   if (event_)
     {
-      text_=  make_item ("LyricText",event_->self_scm ());
-      
+      text_ = make_item ("LyricText", event_->self_scm ());
       text_->set_property ("text", event_->get_property ("text"));
     }
 }
@@ -81,7 +85,7 @@ get_voice_to_lyrics (Context *lyrics)
     }
 
   Context *parent = lyrics;
-  Context *voice = 0; 
+  Context *voice = 0;
   while (parent && !voice)
     {
       voice = find_context_below (parent, ly_symbol2scm ("Voice"), nm);
@@ -92,7 +96,7 @@ get_voice_to_lyrics (Context *lyrics)
     return voice;
 
   parent = lyrics;
-  voice = 0; 
+  voice = 0;
   while (parent && !voice)
     {
       voice = find_context_below (parent, ly_symbol2scm ("Voice"), "");
@@ -103,19 +107,36 @@ get_voice_to_lyrics (Context *lyrics)
 }
 
 Grob *
-get_current_note_head (Context * voice)
+get_current_note_head (Context *voice)
 {
   for (SCM s = voice->get_property ("busyGrobs");
        ly_c_pair_p (s); s = ly_cdr (s))
     {
-      Item*g = dynamic_cast<Item*> (unsmob_grob (ly_cdar (s)));
-         
+      Item *g = dynamic_cast<Item*> (unsmob_grob (ly_cdar (s)));
+       
       if (g && !g->get_column ()
          && Note_head::has_interface (g))
        return g;
     }
-         
-  return 0;  
+       
+  return 0;
+}
+
+Grob *
+get_current_rest (Context *voice)
+{
+  for (SCM s = voice->get_property ("busyGrobs"); ly_c_pair_p (s);
+       s = ly_cdr (s))
+    {
+      Item *g = dynamic_cast<Item*> (unsmob_grob (ly_cdar (s)));
+       
+      if (g && !g->get_column ()
+         && (Rest::has_interface (g)
+             || Multi_measure_rest::has_interface (g)))
+       return g;
+    }
+
+  return 0;
 }
 
 void
@@ -123,7 +144,7 @@ Lyric_engraver::stop_translation_timestep ()
 {
   if (text_)
     {
-      Context * voice = get_voice_to_lyrics (context ());
+      Context *voice = get_voice_to_lyrics (context ());
 
       if (voice)
        {
@@ -133,13 +154,13 @@ Lyric_engraver::stop_translation_timestep ()
            {
              text_->set_parent (head, X_AXIS);
              if (melisma_busy (voice))
-               text_->set_property ("self-alignment-X", scm_int2num (LEFT)); 
+               text_->set_property ("self-alignment-X", scm_int2num (LEFT));
            }
        }
-      
-      text_ =0;
+
+      text_ = 0;
     }
-  event_ =0;
+  event_ = 0;
 }
 
 
index 7343b6bfcd072a3aefc37e6c8dda3fcf60305f23..97a0acfebc4bda860d498006eb677e2ea4fc50d1 100644 (file)
 bool
 Lyric_extender::is_visible (Grob *gr)
 {
-  Spanner*me = dynamic_cast<Spanner*> (gr);
+  Spanner *me = dynamic_cast<Spanner*> (gr);
 
   SCM heads = me->get_property ("heads");
-  int l = scm_ilength (heads);
-  if (l == 0)
-    return false;
-  
-  return true;
+  int il = scm_ilength (heads);
+  return il != 0;
 }
 
-MAKE_SCHEME_CALLBACK (Lyric_extender,print,1)
+MAKE_SCHEME_CALLBACK (Lyric_extender, print, 1)
 SCM 
 Lyric_extender::print (SCM smob) 
 {
   Spanner *me = unsmob_spanner (smob);
-  Item *l = me->get_bound (LEFT);
-  Item *r = me->get_bound (RIGHT);
-  Grob *common = l->common_refpoint (r, X_AXIS);
-  
+  Item *le = me->get_bound (LEFT);
+  Item *ri = me->get_bound (RIGHT);
+  Grob *common = le->common_refpoint (ri, X_AXIS);
 
   Real sl = me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"));  
 
   Link_array<Grob> heads (Pointer_group_interface__extract_grobs (me, (Grob*)0,
                                                                  "heads"));
 
-  if (!heads.size () && r->break_status_dir () == CENTER)
+  if (!heads.size () && ri->break_status_dir () == CENTER)
     return SCM_EOL;
 
   common = common_refpoint_of_array (heads, common, X_AXIS);
   
   Real left_point = 0.0;
-  if (l->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    left_point = l->extent (common, X_AXIS)[RIGHT];
-  else
+  if (le->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
+    left_point = le->extent (common, X_AXIS)[RIGHT];
+  else if (heads.size ())
     left_point = heads[0]->extent (common, X_AXIS)[LEFT];
+  else
+    left_point = le->extent (common, X_AXIS)[RIGHT];
 
   if (isinf (left_point))
     return SCM_EOL;
 
-  /*
-    It seems that short extenders are even lengthened to go past the
-    note head, but haven't found a pattern in it yet. --hwn 1/1/04
-    
-   */
-  SCM minlen =  me->get_property ("minimum-length");
+  /* It seems that short extenders are even lengthened to go past the
+     note head, but haven't found a pattern in it yet. --hwn 1/1/04  */
+  SCM minlen = me->get_property ("minimum-length");
   Real right_point
-    = left_point + (robust_scm2double  (minlen,0));
+    = left_point + (robust_scm2double  (minlen, 0));
 
   Spanner *orig = dynamic_cast<Spanner*> (me->original_);
   bool last_line = orig
     && (me->get_break_index () == orig->broken_intos_.size () - 2)
     && !Lyric_extender::is_visible (orig->broken_intos_.top ());
     
-
   if (heads.size ())
     right_point = right_point >? heads.top ()->extent (common, X_AXIS)[RIGHT];
 
   Real h = sl * robust_scm2double (me->get_property ("thickness"), 0);
   Real pad = 2* h;
 
-  if (r->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
-    right_point = right_point <? (r->extent (common, X_AXIS)[LEFT] - pad);
-  else if (Note_head::has_interface (r))
+  if (ri->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
+    right_point = right_point <? (ri->extent (common, X_AXIS)[LEFT] - pad);
+  else if (Note_head::has_interface (ri))
     ; 
   else if (!last_line)
-    {
-      /*
-       run to end of line.
-       */
-      right_point = right_point >? (r->extent (common, X_AXIS)[LEFT] - pad);
-    }
+    /* run to end of line. */
+    right_point = right_point >? (ri->extent (common, X_AXIS)[LEFT] - pad);
   
   if (isinf (right_point))
     {
       programming_error ("Right point of extender not defined?");
-      right_point = r->relative_coordinate (common, X_AXIS);
+      right_point = ri->relative_coordinate (common, X_AXIS);
     }  
 
   left_point += pad;
@@ -106,9 +96,11 @@ Lyric_extender::print (SCM smob)
   if (w < 1.5 * h)
     return SCM_EOL;
   
-  Stencil  mol (Lookup::round_filled_box (Box (Interval (0,w), Interval (0,h)),
-                                          0.8 * h));
-  mol.translate_axis (left_point - me->relative_coordinate (common, X_AXIS), X_AXIS);
+  Stencil  mol (Lookup::round_filled_box (Box (Interval (0, w),
+                                              Interval (0, h)),
+                                         0.8 * h));
+  mol.translate_axis (left_point - me->relative_coordinate (common, X_AXIS),
+                     X_AXIS);
   return mol.smobbed_copy ();
 }
 
index 61974f9deb7617f21f08aeb518dcfafb3a995d26..cb9cd684e95ff147ea2ca7ce819c6e839caf2572 100644 (file)
@@ -150,7 +150,7 @@ Multi_measure_rest::symbol_stencil (Grob *me, Real space)
 
          s.translate_axis ((space - s.extent (X_AXIS).length ())/2, X_AXIS);
       
-         return s ;
+         return s;
        }
       else
        {
@@ -207,14 +207,12 @@ Multi_measure_rest::big_rest (Grob *me, Real width)
   Kirchenpause (?)
  */
 Stencil
-Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
+Multi_measure_rest::church_rest (Grob *me, Font_metric *musfont, int measures,
                                 Real space)
 {
   SCM mols = SCM_EOL; 
 
-  /*
-   see Wanske pp. 125
-  */
+  /* See Wanske pp. 125  */
   int l = measures;
   int count = 0;
   Real symbols_width = 0.0;
@@ -228,7 +226,7 @@ Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
          int k;
          if (l >= 2)
            {
-             l-=2;
+             l -= 2;
              k = -2;
            }
          else
@@ -246,7 +244,7 @@ Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
          int k;
          if (l >= 4)
            {
-             l-=4;
+             l -= 4;
              k = -2;
            }
          else if (l>= 2)
@@ -257,7 +255,7 @@ Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
          else
            {
              k = 0;
-             l --;
+             l--;
            }
 
          Stencil r (musfont->find_by_name ("rests-" + to_string (k)));
@@ -273,84 +271,78 @@ Multi_measure_rest::church_rest (Grob*me, Font_metric *musfont, int measures,
     }
 
   
-
-  Real outer_padding_factor = 1.5; //     make outer padding this much bigger.
-  Real inner_padding = (space - symbols_width) / (2 * outer_padding_factor + (count-1)); 
+ /* Make outer padding this much bigger.  */
+  Real outer_padding_factor = 1.5;
+  Real inner_padding = (space - symbols_width)
+    / (2 * outer_padding_factor + (count-1)); 
   if (inner_padding < 0)
-    {
-      inner_padding = 1.0;
-    }
+    inner_padding = 1.0;
   
   Stencil mol; 
   for (SCM  s = mols; ly_c_pair_p (s); s = ly_cdr (s))
-    {
-      mol.add_at_edge (X_AXIS, LEFT, *unsmob_stencil (ly_car (s)), inner_padding, 0);
-    }
+      mol.add_at_edge (X_AXIS, LEFT, *unsmob_stencil (ly_car (s)),
+                      inner_padding, 0);
   mol.align_to (X_AXIS, LEFT);
-  mol.translate_axis (outer_padding_factor *  inner_padding, X_AXIS);
+  mol.translate_axis (outer_padding_factor * inner_padding, X_AXIS);
 
   return mol;
 }
 
 void
-Multi_measure_rest::add_column (Grob*me,Item* c)
+Multi_measure_rest::add_column (Grob *me, Item *c)
 {
-  add_bound_item (dynamic_cast<Spanner*> (me),c);
+  add_bound_item (dynamic_cast<Spanner*> (me), c);
 }
 
-
-MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_spacing_rods,1);
+MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_spacing_rods, 1);
 SCM
 Multi_measure_rest::set_spacing_rods (SCM smob)
 {
-  Grob*me = unsmob_grob (smob);
+  Grob *me = unsmob_grob (smob);
 
   Spanner*sp = dynamic_cast<Spanner*> (me);
-  if (! (sp->get_bound (LEFT) && sp->get_bound (RIGHT)))
+  if (!(sp->get_bound (LEFT) && sp->get_bound (RIGHT)))
     {
       programming_error ("Multi_measure_rest::get_rods (): I am not spanned!");
       return SCM_UNSPECIFIED;
     }
 
-  Item * l = sp->get_bound (LEFT)->get_column ();
-  Item * r = sp->get_bound (RIGHT)->get_column ();
-  Item * lb = l->find_prebroken_piece (RIGHT);
-  Item * rb = r->find_prebroken_piece (LEFT);      
+  Item *li = sp->get_bound (LEFT)->get_column ();
+  Item *ri = sp->get_bound (RIGHT)->get_column ();
+  Item *lb = li->find_prebroken_piece (RIGHT);
+  Item *rb = ri->find_prebroken_piece (LEFT);      
   
-  Item* combinations[4][2] = {{l,r},
-                             {lb,r},
-                             {l,rb},
+  Item *combinations[4][2] = {{li,ri},
+                             {lb,ri},
+                             {li,rb},
                              {lb,rb}};
 
   Real sym_width = symbol_stencil (me, 0.0).extent (X_AXIS).length ();
   
   for (int i=0; i < 4; i++)
     {
-      Item *l = combinations[i][0];
-      Item *r = combinations[i][1];
+      Item *li = combinations[i][0];
+      Item *ri = combinations[i][1];
 
-      if (!l || !r)
+      if (!li || !ri)
        continue;
 
       Rod rod;
-      rod.item_l_drul_[LEFT] = l;
-      rod.item_l_drul_[RIGHT] = r;
+      rod.item_l_drul_[LEFT] = li;
+      rod.item_l_drul_[RIGHT] = ri;
 
-      
-      rod.distance_ = l->extent (l, X_AXIS)[BIGGER] - r->extent (r, X_AXIS)[SMALLER]
-       + sym_width  + 2.0;                     // 2.0 = magic!
+      rod.distance_ = li->extent (li, X_AXIS)[BIGGER]
+       - ri->extent (ri, X_AXIS)[SMALLER]
+       /* 2.0 = magic! */
+       + sym_width  + 2.0;
   
-      Real minlen  = robust_scm2double (me->get_property ("minimum-length"), 0.0);
-      rod.distance_ = max (rod.distance_,
-                         minlen);
+      Real minlen = robust_scm2double (me->get_property ("minimum-length"), 0);
+      rod.distance_ = max (rod.distance_, minlen);
       rod.add_to_cols ();
     }
   return SCM_UNSPECIFIED;
 }
 
-
-
-
 ADD_INTERFACE (Multi_measure_rest,"multi-measure-rest-interface",
               "A rest that spans a whole number of measures.",
               "expand-limit measure-count hair-thickness thick-thickness use-breve-rest minimum-length");
index 5d34460076d6befde4bf4170a6ab9c945bc4db92..0cd7eab3fe28104048d74964244a00cd459d7bb7 100644 (file)
   (let*
       ((cmd (string-append "latex \\\\nonstopmode \\\\input " name)))
 
+    (newline (current-error-port))
     (display (format #f (_ "Invoking ~S") cmd) (current-error-port))
     (newline (current-error-port))
 
index 40d8a93b1521d6913d540baa5fe0109e4175756f..b7969de5c792b4cf0b81d269a9d4998ccb2ef046 100644 (file)
@@ -571,7 +571,7 @@ possibly turned off."
     (newline (current-error-port))
     
     (if (ly:get-option 'verbose)
-       (display (format "Invoking `~a'..." cmd) (current-error-port)))
+       (display (format (_"Invoking `~a'...") cmd) (current-error-port)))
 
   (system cmd)))