]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/beam.cc (brew_molecule): rewrite debug output: split up scores.
authorhanwen <hanwen>
Sat, 3 Jan 2004 01:59:58 +0000 (01:59 +0000)
committerhanwen <hanwen>
Sat, 3 Jan 2004 01:59:58 +0000 (01:59 +0000)
* scm/define-grobs.scm (all-grob-descriptions): use semi-fixed
space after barline.

* mf/feta-eindelijk.mf (tracingvariables): make top of 8th rest fatter.

* lily/spacing-spanner.cc (breakable_column_spacing): take average
of spacing wishes, not maximum. Only do this for delta-t == 0. In
the other case, take standard column-breakable spacing. Do not
warn about "no spacing wishes".

* lily/multi-measure-rest.cc (big_rest): bugfix for blots.

37 files changed:
ChangeLog
Documentation/user/invoking.itexi
VERSION
input/mutopia/F.Schubert/morgenlied.ly
input/mutopia/R.Schumann/romanze-op28-2.ly
lily/arpeggio.cc
lily/bar-line.cc
lily/beam-quanting.cc
lily/beam.cc
lily/horizontal-bracket.cc
lily/hyphen-engraver.cc
lily/hyphen-spanner.cc
lily/include/beam.hh
lily/include/hyphen-spanner.hh
lily/include/lookup.hh
lily/include/paper-def.hh
lily/include/separation-item.hh
lily/include/staff-spacing.hh
lily/lookup.cc
lily/lyric-extender.cc
lily/measure-grouping-spanner.cc
lily/mensural-ligature.cc
lily/multi-measure-rest.cc
lily/note-spacing.cc
lily/paper-column.cc
lily/separation-item.cc
lily/spacing-spanner.cc
lily/staff-spacing.cc
lily/stanza-number-engraver.cc
lily/stem.cc
lily/system-start-delimiter.cc
lily/vaticana-ligature.cc
mf/feta-eindelijk.mf
mf/feta-test-generic.mf
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/new-markup.scm

index e69eca0b98a1c8049a25712d2a02887d05de1e74..8edfd2930623bab1816f7087a9ac0e414b55b995 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,39 @@
+2004-01-03  Han-Wen Nienhuys   <hanwen@cs.uu.nl>
+
+       * lily/beam.cc (brew_molecule): rewrite debug output: split up scores.
+
+       * scm/define-grobs.scm (all-grob-descriptions): use semi-fixed
+       space after barline.
+
+       * mf/feta-eindelijk.mf (tracingvariables): make top of 8th rest fatter.
+
+       * lily/spacing-spanner.cc (breakable_column_spacing): take average
+       of spacing wishes, not maximum. Only do this for delta-t == 0. In
+       the other case, take standard column-breakable spacing. Do not
+       warn about "no spacing wishes".
+
+       This fixes wide spaces after barlines in very loose lines.
+
+       * lily/multi-measure-rest.cc (big_rest): bugfix for blots.
+
 2004-01-02  Han-Wen Nienhuys   <hanwen@cs.uu.nl>
 
+       * lily/stanza-number-engraver.cc (acknowledge_grob): bugfix:
+       acknowledge_grob lyric-syllable, not lyric-text.
+
+       * lily/hyphen-spanner.cc (brew_molecule): rewrite. Make multiple
+       dashes of length #'length separated by #'dash-period. 
+
+       * lily/lyric-extender.cc (brew_molecule): idem
+
+       * lily/multi-measure-rest.cc (big_rest): idem
+
+       * lily/system-start-delimiter.cc (simple_bar): idem
+
+       * lily/bar-line.cc (simple_barline): use rounded box
+
+       * VERSION: release 2.1.5
+
        * Documentation/user/lilypond-book.itely (Integrating LaTeX and
        music): move note about dvips to more visible place.
 
index 7beb95724e78931c3182755a8873d56b1955220a..cc7079a4f4f31ca69d255128fd5e4244a2c75a94 100644 (file)
@@ -84,7 +84,8 @@ in the files. Possible keys: @code{language}, @code{latexheaders},
 @item -v,--version
 Show version information.
 @item -V,--verbose
-Be verbose.
+Be verbose. This prints out commands as they are executed, and more
+information about the formatting process is printed.
 @item --debug
 Print even more information. This is useful when generating bugreports.
 @item -w,--warranty
diff --git a/VERSION b/VERSION
index ddf68a2fd3aa10cdf45e653ae484bef0e80143af..70e82d4388d17271a47ae7b44076dde39cb8aace 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,5 +2,5 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=1
 PATCH_LEVEL=5
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=hwn1
 
index 96d4eafe67d2a703a105a44c63359cdbec440a7d..64d5b3466b962000618c859710dcec81848a7f7a 100644 (file)
@@ -44,7 +44,7 @@ modernAccidentals = {
 melody = \notes   \relative c'' \repeat volta 2 \context Voice = singer {
     \time 6/8
     \autoBeamOff
-    s1*0^\markup { \bold \bigger\bigger { \hspace #-3.0 Lieblich, etwas geschwind } }
+    s1*0^\markup { \bold \large\bigger\bigger { \hspace #-3.0 Lieblich, etwas geschwind } }
   R2.
   r4 r8 c4 g8 |
   e4 c8 << { f8. g16 } \\ { f8.[ g16] } >> a8 |
@@ -60,7 +60,9 @@ melody = \notes   \relative c'' \repeat volta 2 \context Voice = singer {
   e4 g8 d4 g8 e4 r8 b'16[ c d b] g[ f] |
   e4 g8 d4 a'16[ g] |
   c,4 r8 r4 r8 |
-  R2.\fermata 
+
+    % TODO : make \fermata work. 
+  R2.^\fermataMarkup 
 }
 
 
@@ -145,7 +147,7 @@ pianoLH = \notes \relative c'' \repeat volta 2 {
     \paper {
        \translator {
            \LyricsVoiceContext
-           minimumVerticalExtent = ##f
+           minimumVerticalExtent = #'(-1.0 . 0)
            LyricText \set #'font-size = #1.0
        }
        \translator {
index 422109c2d5014ba1c3e92d4634abee94d1dbd70d..b7ec7433664bc868beb675906e3ac2e4408535cb 100644 (file)
@@ -3,7 +3,7 @@
 
 \include "deutsch.ly"
 
-\include "paper19.ly"
+\include "paper16.ly"
 \version "2.1.1"
 
 \header {
index aa14910a2d7d831ad79ee6a9b61d0eb9bba5218f..4eef3d8cafd3a54b66c8f344f5b3ad55a7f8bdec 100644 (file)
@@ -128,7 +128,7 @@ Arpeggio::brew_chord_bracket (SCM smob)
   Real dy = heads.length() + sp;
   Real x = 0.7;
 
-  Molecule mol (Lookup::bracket (Y_AXIS, Interval (0, dy), lt, x));
+  Molecule mol (Lookup::bracket (Y_AXIS, Interval (0, dy), lt, x, lt));
   mol.translate_axis (heads[LEFT] - sp/2.0, Y_AXIS);
   return mol.smobbed_copy();
 }
index cf1999356dcfab26b24845600f8443fad0092ebd..82fdf74bdc2ba7568da0728c2f66d1b4378ded8d 100644 (file)
@@ -130,9 +130,10 @@ Bar_line::compound_barline (Grob*me, String str, Real h)
 }
 
 Molecule
-Bar_line::simple_barline (Grob*,Real w, Real h) 
+Bar_line::simple_barline (Grob *me,Real w, Real h) 
 {
-  return Lookup::filledbox (Box (Interval (0,w), Interval (-h/2, h/2)));
+  Real blot = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
+  return Lookup::round_filled_box (Box (Interval (0,w), Interval (-h/2, h/2)), blot);
 }
 
 MAKE_SCHEME_CALLBACK (Bar_line,before_line_breaking ,1);
index 9576f33cce5545647f835750b8720537b64a3b23..b4efc0a3bcd54c2d4b2f9f193bd6798e41c85885 100644 (file)
@@ -30,6 +30,8 @@ const int DAMPING_DIRECTIION_PENALTY = 800;
 const int MUSICAL_DIRECTION_FACTOR = 400;
 const int IDEAL_SLOPE_FACTOR = 10;
 
+#define DEBUG_QUANTING 1
+
 
 static Real
 shrink_extra_weight (Real x, Real fac)
@@ -43,6 +45,10 @@ struct Quant_score
   Real yl;
   Real yr;
   Real demerits;
+
+#if DEBUG_QUANTING
+  String score_card_;
+#endif
 };
 
 
@@ -203,9 +209,13 @@ Beam::quanting (SCM smob)
      parameters outside of the loop, we can save a lot of time. */
   for (int i = qscores.size (); i--;)
     {
-      qscores[i].demerits
-       += score_slopes_dy (qscores[i].yl, qscores[i].yr,
-                           dy_mus, yr- yl, xstaff); 
+      Real d =  score_slopes_dy (qscores[i].yl, qscores[i].yr,
+                                dy_mus, yr- yl, xstaff);
+      qscores[i].demerits += d;
+
+#if DEBUG_QUANTING
+      qscores[i].score_card_ += to_string ("S%.2f",d);
+#endif
     }
 
   Real rad = Staff_symbol_referencer::staff_radius (me);
@@ -216,34 +226,43 @@ Beam::quanting (SCM smob)
   for (int i = qscores.size (); i--;)
     if (qscores[i].demerits < reasonable_score)
       {
-       qscores[i].demerits
-         += score_forbidden_quants (qscores[i].yl, qscores[i].yr,
+       Real d = score_forbidden_quants (qscores[i].yl, qscores[i].yr,
                                     rad, slt, thickness, beam_translation,
                                     beam_count, ldir, rdir); 
+       qscores[i].demerits += d;
+
+#if DEBUG_QUANTING
+       qscores[i].score_card_ += to_string (" F %.2f", d);
+#endif
       }
 
   for (int i = qscores.size (); i--;)
     if (qscores[i].demerits < reasonable_score)
       {
-       qscores[i].demerits
-         += score_stem_lengths (stems, stem_infos,
+       Real d=score_stem_lengths (stems, stem_infos,
                                 base_lengths, stem_xposns,
                                 xl, xr,
                                 knee_b,
                                 qscores[i].yl, qscores[i].yr);
+       qscores[i].demerits +=  d;
+
+#if DEBUG_QUANTING
+       qscores[i].score_card_ += to_string (" L %.2f", d);
+#endif
       }
 
   int best_idx = best_quant_score_idx (qscores);
+
+  
   me->set_grob_property ("positions",
                         gh_cons (gh_double2scm (qscores[best_idx].yl),
                                  gh_double2scm (qscores[best_idx].yr))
                         );
 
 #if DEBUG_QUANTING
-
   // debug quanting
   me->set_grob_property ("quant-score",
-                        gh_double2scm (qscores[best_idx].demerits));
+                        scm_makfrom0str (qscores[best_idx].score_card_.to_str0 ()));
   me->set_grob_property ("best-idx", scm_int2num (best_idx));
 #endif
 
index 6f509ce91b910cc11e55bfaa60fb163680e74cdd..0db377d09044b071f24b17e991b8a258e896e877 100644 (file)
@@ -44,7 +44,7 @@ Notes:
 #include "warn.hh"
 
 
-#define DEBUG_QUANTING 0
+#define DEBUG_QUANTING 1
 
 
 #if DEBUG_QUANTING
@@ -492,18 +492,10 @@ Beam::brew_molecule (SCM grob)
        parameters.
       */
       String str;
-      if (1)
-       {
-         str += to_string (gh_scm2int (me->get_grob_property ("best-idx")));
-         str += ":";
-       }
-      str += to_string (gh_scm2double (me->get_grob_property ("quant-score")),
-                    "%.2f");
-
       SCM properties = Font_interface::font_alist_chain (me);
 
-      Molecule tm = Text_item::interpret_new_markup
-       (me->self_scm(),  properties, scm_makfrom0str (str.to_str0 ()));
+      Molecule tm = *unsmob_molecule (Text_item::interpret_markup
+       (me->get_paper ()->self_scm (), properties, me->get_grob_property ("quant-score")));
       the_beam.add_at_edge (Y_AXIS, UP, tm, 5.0, 0);
     }
 #endif
index 6f4dbc09dba7e645704ce6ee3790f441ce9a161a..a172d85358199b156081a9f27427368edfe8d94f 100644 (file)
@@ -51,13 +51,14 @@ Horizontal_bracket::brew_molecule (SCM smob)
   ext.unite (gs[0]->extent (cx, X_AXIS));
 
   Direction d = get_grob_direction (me);
-  Real t = me->get_paper()->get_realvar (ly_symbol2scm ("linethickness"));
+  Real lt =me->get_paper()->get_realvar (ly_symbol2scm ("linethickness"));
+  Real t = lt;
 
   SCM lthick = me->get_grob_property ("thickness");
   if (gh_number_p (lthick))
     t *= gh_scm2double (lthick);
   
-  Molecule b = Lookup::bracket (X_AXIS, ext, t, - d* 1.0); 
+  Molecule b = Lookup::bracket (X_AXIS, ext, t, - d* 1.0, lt); 
   
   b.translate_axis ( - sp->get_bound (LEFT)->relative_coordinate (cx, X_AXIS), X_AXIS);
 
index db20eb02b69b8d7bd9dee8828a0655bb2b69afb6..b5f7fd1e2c8e9520bf2f5c260ea05fb85d8d14cc 100644 (file)
@@ -60,10 +60,9 @@ Hyphen_engraver::acknowledge_grob (Grob_info i)
     {
       current_lyric_ = i.grob_;
       if (hyphen_
-         && !hyphen_->get_bound (RIGHT)
-           )
+         && !hyphen_->get_bound (RIGHT))
          {
-           Hyphen_spanner (hyphen_).set_textitem (RIGHT, i.grob_);
+           hyphen_->set_bound (RIGHT, i.grob_);
          }
     }
 }
@@ -102,7 +101,7 @@ Hyphen_engraver::process_acknowledged_grobs ()
       
       hyphen_ = new Spanner (get_property ("LyricHyphen"));
 
-      Hyphen_spanner (hyphen_).set_textitem (LEFT, last_lyric_);
+      hyphen_->set_bound (LEFT, last_lyric_);
       announce_grob(hyphen_, req_->self_scm());
     }
 }
index 094137bef75e6ce13d829589e0602933d20874d8..536ff6feb8fcf8cfb4e268ad687fb41d955b3a2e 100644 (file)
 #include "item.hh"
 
 
-MAKE_SCHEME_CALLBACK (Hyphen_spanner,set_spacing_rods,1);
-SCM
-Hyphen_spanner::set_spacing_rods (SCM smob)
-{
-  Grob*me = unsmob_grob (smob);
-
-  Rod rod;
-  Spanner*sp = dynamic_cast<Spanner*> (me);
-  Item * l = sp->get_bound (LEFT);
-  Item * r =  sp->get_bound (RIGHT);
-  rod.item_l_drul_[LEFT] = l;
-  rod.item_l_drul_[RIGHT] =r;
-  rod.distance_ =
-    gh_scm2double (me->get_grob_property ("minimum-length"))
-    + l->extent (l, X_AXIS)[RIGHT]
-    - r->extent (r, X_AXIS)[LEFT];
-
-  rod.add_to_cols ();
-  return SCM_UNSPECIFIED;
-}
-
 MAKE_SCHEME_CALLBACK (Hyphen_spanner,brew_molecule,1)
 SCM 
 Hyphen_spanner::brew_molecule (SCM smob)
 {
   Spanner * sp = unsmob_spanner (smob);
+  Drul_array<Item*> bounds (sp->get_bound (LEFT),
+                           sp->get_bound (RIGHT));
+  
+  Grob * common = bounds[LEFT]->common_refpoint (bounds[RIGHT], X_AXIS);
 
-  Grob * common = sp;
+  Interval span_points;
   Direction d = LEFT;
   do
     {
-      common = common->common_refpoint (sp->get_bound (d), X_AXIS);
-    }
-  while (flip (&d) != LEFT);
-  Interval bounds;
-  
-  do
-    {
-      Interval iv = sp->get_bound (d)->extent (common, X_AXIS);
+      Interval iv = bounds[d]->extent (common, X_AXIS);
 
-      bounds[d] = iv.is_empty ()
-       ? sp->get_bound (d)->relative_coordinate (common, X_AXIS)
+      span_points[d] = iv.is_empty ()
+       ? bounds[d]->relative_coordinate (common, X_AXIS)
        : iv[-d];
     }
   while (flip (&d) != LEFT);
@@ -71,81 +47,44 @@ Hyphen_spanner::brew_molecule (SCM smob)
   Real h = gh_scm2double (sp->get_grob_property ("height"));
 
   // interval?
-  Real x = gh_scm2double (sp->get_grob_property ("maximum-length"));
-  SCM space =  sp->get_bound (LEFT)->get_grob_property ("word-space");
+  
+  Real dp = gh_scm2double (sp->get_grob_property ("dash-period"));
+  Real dl = gh_scm2double (sp->get_grob_property ("length"));
 
-  Real word_space  = 1.0;
-  if (gh_number_p (space))
-    {
-      word_space = gh_scm2double (space);
-    }
+  if (dp < dl)
+    dp = 1.5 * dl;
+
+  Real l = span_points.length ();
+  int n = int (ceil (l/dp - 0.5));
+  if (n <= 0)
+    n = 1;
+
+  Real space_left = l - dl - (n-1)* dp;
 
   /*
-    We remove word space from the distance so it doesn't look like an extender.
-    
+    If there is not enough space, the hyphen should disappear.
    */
-  Real l = (gh_scm2double (sp->get_grob_property ("minimum-length"))
-    - word_space ) >? word_space;
-  
-  
-  /*
-    we should probably do something more intelligent when bounds is
-    empty, but at least this doesn't crash.
-  */      
-  Real w  = bounds.is_empty () ? 0 : bounds.length ();
+  if (space_left < 0)
+    return SCM_EOL;
   
-  /* for length, use a geometric mean of the available space and some minimum
-   */
-  if (l < w)
-    {
-      l = sqrt (l*w);
-      if (l > x)
-       l = x;
-    }
-  else
+  Box b (Interval (0, dl), Interval (h,h+th));
+  Molecule dash_mol (Lookup::round_filled_box (b, 0.8 * lt));
+
+  Molecule total;
+  for (int i = 0; i < n; i++)
     {
-      /* OK, we have a problem. Usually this means that we're on the
-         first column, and we have a long lyric which extends to near
-         the offset for stuff */
-      /* This test for being on the first column has been shamelessly
-         ripped from spanner.cc */
-      Paper_column *sc = dynamic_cast<Paper_column*> (sp->get_bound (LEFT)->get_column ());
-      if (sc != NULL &&
-         sc->break_status_dir () == RIGHT)
-       {
-         /* We are on the first column, so it's probably harmless to
-             get the minimum length back by extending leftwards into
-             the space under the clef/key sig/time sig */
-         bounds[LEFT] = bounds[RIGHT] - l;
-       }
-      else 
-       {
-         /* We can't get the length desired. Maybe we should warn. */
-         l = w;
-       }
+      Molecule m (dash_mol);
+      m.translate_axis (span_points[LEFT] + i * dp + space_left / 2, X_AXIS);
+      total.add_molecule (m);
     }
-  Box b (Interval (-l/2,l/2), Interval (h,h+th));
-  Molecule mol (Lookup::filledbox (b));
-  Real ct = bounds.is_empty () ? 0 : bounds.center () ;
-  mol.translate_axis (ct -sp->relative_coordinate (common, X_AXIS), X_AXIS);
-  return mol.smobbed_copy ();
-}
-  
-void
-Hyphen_spanner::set_textitem (Direction d, Grob* b)
-{
-  elt_->set_bound (d, b);
-  elt_->add_dependency (b);
-}
 
-Hyphen_spanner::Hyphen_spanner (Spanner*s)
-{
-  elt_ = s;
+  total.translate_axis ( -sp->relative_coordinate (common, X_AXIS), X_AXIS);
+  return total.smobbed_copy ();
 }
 
 
 
 ADD_INTERFACE (Hyphen_spanner, "lyric-hyphen-interface",
               "A centred hyphen is a simple line between lyrics used to divide syllables",
-              "thickness height minimum-length maximum-length word-space");
+              "thickness height dash-period length");
 
index a9e04426a91b9bdb766267d135a016b700adb702..72728d799f31fb4dd2908371c6b2be3591ce0f8e 100644 (file)
@@ -73,7 +73,6 @@ private:
 };
 
 const int REGION_SIZE = 2;
-#define DEBUG_QUANTING 0
 
 
 #endif /* BEAM_HH */
index 68c3e1636081f456c4756dd4e5059b4a2ec8de80..a06ac82f43b84cb969acfcf8f3d2960b94eb5d8e 100644 (file)
 struct Hyphen_spanner 
 {
 public:
-  Spanner* elt_;
-
   DECLARE_SCHEME_CALLBACK(set_spacing_rods, (SCM));
-  Hyphen_spanner (Spanner*);
   void set_textitem (Direction, Grob*);
   bool has_interface (Grob*);
   DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM ));
index 565b907ada0ba72ee0fd1eb6d2cad6c9b8cb5446..5c237fb1626bc4c2cbea906a0e607b1c7a4906bc 100644 (file)
 struct Lookup
 {
   static Molecule dot (Offset p, Real radius);
-  static Molecule bracket (Axis a, Interval iv, Real thick, Real protude);
+  static Molecule bracket (Axis a, Interval iv, Real thick, Real protude, Real blot);
   static Molecule accordion (SCM arg, Real interline_f, Font_metric*fm);
   static Molecule round_filled_polygon (Array<Offset> points, Real blotdiameter);
-  static Molecule frame (Box b, Real thick);
+  static Molecule frame (Box b, Real thick, Real blot);
   static Molecule slur (Bezier controls, Real cthick, Real thick);
   static Molecule bezier_sandwich (Bezier top_curve, Bezier bottom_curve);
   static Molecule horizontal_slope (Real width, Real slope, Real height);
   static Molecule beam (Real slope, Real width, Real thick);
   static Molecule dashed_slur (Bezier, Real thick, Real dash);
   static Molecule blank (Box b);
-  static Molecule filledbox (Box b);
+  static Molecule filled_box (Box b);
   static Molecule round_filled_box (Box b, Real blotdiameter);
   static Molecule repeat_slash (Real w, Real slope, Real th);
   static Molecule line (Real th, Offset from, Offset to);
index ad898a679f4571c96c6ef4745ba1625551148c30..b449dc5c7bda46ea053e261a79b1efe920437e66 100644 (file)
@@ -59,7 +59,6 @@ public:
     JUNKME
    */
   Real get_realvar (SCM symbol) const;
-  Real get_var (String id) const;
   void reinit ();
   Paper_def ();
   Paper_def (Paper_def const&);
index 99f0bbe7a233022234b0fca93262b6a7f64596a4..2beaedd56ad427c7fbdc62ce50ea47d05f47c4c0 100644 (file)
 #define SINGLE_MALT_GROUPING_ITEM_HH
 
 #include "lily-proto.hh"
+#include "direction.hh"
 
 struct Separation_item
 {
   static bool has_interface (Grob*);
   static Interval conditional_width (Grob*,Grob*) ;
   static Interval width (Grob*) ;
-
+  static Grob*extremal_break_aligned_grob (Grob*,Direction, Interval*);
   static void add_item (Grob*,Item*);
   static void add_conditional_item (Grob*,Grob*);  
 };
index 8359dcd53cb44fcf334cfccb974ce5dfa99b1284..a7ef8bf723e00ce5b7f3b99c03f2b6855a218474 100644 (file)
@@ -21,7 +21,6 @@ public:
   static void get_spacing_params (Grob*,Real*,Real*);
 
   static Interval bar_y_positions (Grob*);
-  static  Grob*  extremal_break_aligned_grob (Grob*,Direction, Interval*);
 };
 
 #endif /* STAFF_SPACING_HH */
index 9781002205780066c6ba28ff4522252f95791172..caa1996ed4e928c0134f1bcffa0064a363fdcb91 100644 (file)
@@ -154,7 +154,7 @@ Lookup::blank (Box b)
 }
 
 Molecule
-Lookup::filledbox (Box b) 
+Lookup::filled_box (Box b) 
 {
   SCM  at  = (scm_list_n (ly_symbol2scm ("filledbox"),
                     gh_double2scm (-b[X_AXIS][LEFT]),
@@ -353,8 +353,14 @@ Lookup::round_filled_polygon (Array<Offset> points, Real blotdiameter)
   return polygon;
 }
 
+
+/*
+  TODO: deprecate?
+
+  should use rounded corners.
+ */
 Molecule
-Lookup::frame (Box b, Real thick)
+Lookup::frame (Box b, Real thick, Real blot)
 {
   Molecule m;
   Direction d = LEFT;
@@ -368,12 +374,11 @@ Lookup::frame (Box b, Real thick)
          edges[o][DOWN] = b[o][DOWN] - thick/2;
          edges[o][UP] = b[o][UP] + thick/2;      
          
-         m.add_molecule (filledbox (edges));
+         m.add_molecule (round_filled_box (edges, blot));
        }
       while (flip (&d) != LEFT);
     }
   return m;
-  
 }
 
 /*
@@ -723,23 +728,24 @@ Lookup::repeat_slash (Real w, Real s, Real t)
   return Molecule (b, slashnodot); //  http://slashnodot.org
 }
 
+
 Molecule
-Lookup::bracket (Axis a, Interval iv, Real thick, Real protude)
+Lookup::bracket (Axis a, Interval iv, Real thick, Real protude, Real blot)
 {
   Box b;
   Axis other = Axis((a+1)%2);
   b[a] = iv;
   b[other] = Interval(-1, 1) * thick * 0.5;
   
-  Molecule m =  filledbox (b);
+  Molecule m =  round_filled_box (b, blot);
 
   b[a] = Interval (iv[UP] - thick, iv[UP]);
   Interval oi = Interval (-thick/2, thick/2 + fabs (protude)) ;
   oi *=  sign (protude);
   b[other] = oi;
-  m.add_molecule (filledbox (b));
+  m.add_molecule (round_filled_box (b, blot));
   b[a] = Interval (iv[DOWN], iv[DOWN]  +thick);
-  m.add_molecule (filledbox(b));
+  m.add_molecule (round_filled_box (b,blot));
 
   return m;
 }
@@ -778,7 +784,8 @@ LY_DEFINE(ly_bracket ,"ly:bracket",
 
   return Lookup::bracket ((Axis)gh_scm2int (a), ly_scm2interval (iv),
                          gh_scm2double (t),
-                         gh_scm2double (p)).smobbed_copy ();
+                         gh_scm2double (p),
+                         gh_scm2double (t)).smobbed_copy ();
 }
 
 
index 01c3fda293fdd8e0b12f38454dabfe2d7e967ceb..9471946c10d80688583975a9f864edf496fdc3f7 100644 (file)
@@ -42,7 +42,8 @@ Lyric_extender::brew_molecule (SCM smob)
 
   Real h = sl * gh_scm2double (me->get_grob_property ("thickness"));
   
-  Molecule  mol (Lookup::filledbox (Box (Interval (0,w), Interval (0,h))));
+  Molecule  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 7c42896fe511ef9d462207bacf9a647840e3dcc9..df06b7f30aac300b102f56546278311040cd01e8 100644 (file)
@@ -42,7 +42,7 @@ Measure_grouping::brew_molecule (SCM grob)
   Molecule m; 
   if (which == ly_symbol2scm ("bracket"))
     {
-      m = Lookup::bracket (X_AXIS, iv, t,-gh_scm2double (height));
+      m = Lookup::bracket (X_AXIS, iv, t,-gh_scm2double (height), t);
     }
   else if (which == ly_symbol2scm ("triangle"))
     {
index 77e48816221278c394e6fbaaf1fec526151ebd09..e978d4b518f7d67a66ace8a609e92a12877e4afc 100644 (file)
@@ -57,7 +57,7 @@ brew_flexa (Grob *me,
        -0.5*height - cauda_box_y.length();
 
       Box cauda_box (cauda_box_x, cauda_box_y);
-      Molecule cauda = Lookup::filledbox (cauda_box);
+      Molecule cauda = Lookup::filled_box (cauda_box);
       cauda.translate_axis (y_correction, Y_AXIS);
       molecule.add_molecule (cauda);
     }
index 1fb8e620ca4386c593b3c1466a97dce0c8351b0d..8824ab3596773a3ea93b33ce2ea9c9ad66ff9225 100644 (file)
@@ -171,23 +171,26 @@ Multi_measure_rest::symbol_molecule (Grob *me, Real space)
 }
 
 
-
+/*
+  WIDTH can also be 0 to determine the minimum size of the object.
+ */
 Molecule
 Multi_measure_rest::big_rest (Grob *me, Real width)
 {
-  Real tthick = gh_scm2double (me->get_grob_property ("thick-thickness"));
+  Real thick_thick = gh_scm2double (me->get_grob_property ("thick-thickness"));
   Real hair_thick = gh_scm2double (me->get_grob_property ("hair-thickness"));
 
 
   Real ss = Staff_symbol_referencer::staff_space (me);
-  
   Real slt = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
-  Real y = slt * tthick/2 * ss;
+  Real y = slt * thick_thick/2 * ss;
   Real ythick = hair_thick * slt * ss;
-  Box b(Interval (0, width - 2 * ythick), Interval (-y, y));
+  Box b(Interval (0,  0 >? (width - 2 * ythick)), Interval (-y, y));
+  
+  Real blot = width ? (.8 * (y <? ythick)) : 0.0;
   
-  Molecule m =  Lookup::filledbox (b);
-  Molecule yb = Lookup::filledbox (Box (Interval (-0.5, 0.5)* ythick, Interval (-ss, ss)));
+  Molecule m =  Lookup::round_filled_box (b, blot);
+  Molecule yb = Lookup::round_filled_box (Box (Interval (-0.5, 0.5)* ythick, Interval (-ss, ss)), blot);
 
   m.add_at_edge (X_AXIS, RIGHT, yb, 0, 0);
   m.add_at_edge (X_AXIS, LEFT, yb, 0, 0);
index 9964632f30a68067cf01a7ea356bded13a8f903e..38c84388726853585df403c8904a7f24bef0d51c 100644 (file)
@@ -269,7 +269,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
                      it = it->find_prebroken_piece (rcolumn->break_status_dir ());
                    }
                  
-                 Grob *last = Staff_spacing::extremal_break_aligned_grob (it, LEFT, &bar_xextent);
+                 Grob *last = Separation_item::extremal_break_aligned_grob (it, LEFT, &bar_xextent);
 
                  if (last)
                    bar_yextent = Staff_spacing::bar_y_positions (last);
index 54151c63cb622faa4f7c6309ee69c86d8014362f..58706b60e984f1e804cbcd1a691c13e5b2f5359d 100644 (file)
@@ -127,7 +127,7 @@ Paper_column::brew_molecule (SCM p)
   t.align_to (X_AXIS, CENTER);
   t.align_to (Y_AXIS, DOWN);
   
-  Molecule l = Lookup::filledbox (Box (Interval (-0.01, 0.01),
+  Molecule l = Lookup::filled_box (Box (Interval (-0.01, 0.01),
                                       Interval (-2, -1)));
 
   t.add_molecule (l);
index 3a9b491789b69ef52899aec74d4e6b60b96a3821..c1822616e49c961e8d32ecd06f1239054174edd4 100644 (file)
@@ -128,6 +128,41 @@ Separation_item::width (Grob *me)
 }
 
 
+/*
+  Try to find the break-aligned symbol in SEPARATION_ITEM that is
+  sticking out at direction D. The x size is put in LAST_EXT
+*/
+Grob*
+Separation_item::extremal_break_aligned_grob (Grob *separation_item, Direction d,
+                                           Interval * last_ext)
+{
+  Grob *col = dynamic_cast<Item*> (separation_item)->get_column ();
+  last_ext->set_empty ();
+  Grob *last_grob = 0;
+  for (SCM s = separation_item->get_grob_property ("elements");
+       gh_pair_p (s); s = gh_cdr (s))
+    {
+      Grob * break_item = unsmob_grob (gh_car (s));
+      
+      if (!gh_symbol_p (break_item->get_grob_property ("break-align-symbol")))
+       continue;
+
+      Interval ext = break_item->extent (col, X_AXIS);
+
+      if (ext.is_empty ())
+       continue;
+      if (!last_grob
+         || (last_grob && d * (ext[d]- (*last_ext)[d]) > 0) )
+       {
+         *last_ext = ext;
+         last_grob = break_item; 
+       }
+    }
+
+  return last_grob;  
+}
+
+
 
 
 
index 5d0213b07c8e2e7f43a646503e2d1aa2264ae93e..23f2bd46409a7c45e0fffd4bb116108daec5d19b 100644 (file)
 #include "break-align-interface.hh"
 #include "spacing-interface.hh"
 
+
+/*
+  TODO: this file/class is too complex. Should figure out how to chop
+  this up even more.
+   
+ */
+
 class Spacing_spanner
 {
 public:
@@ -661,7 +668,6 @@ Spacing_spanner::standard_breakable_column_spacing (Grob * me, Item*l, Item*r,
                                   Real * fixed, Real * space,
                                   Moment shortest)
 {
   *fixed = 0.0;
   Direction d = LEFT;
   Drul_array<Item*> cols(l,r);
@@ -675,10 +681,12 @@ Spacing_spanner::standard_breakable_column_spacing (Grob * me, Item*l, Item*r,
            what happens if we do this for non musical columns only.
           */
          Interval lext = cols[d]->extent (cols [d], X_AXIS);
-         *fixed += -d * lext[-d];
+         if (!lext.is_empty ())
+           *fixed += -d * lext[-d];
        }
     }
   while (flip (&d) != LEFT);
+  
 
   if (l->breakable_b (l) && r->breakable_b(r))
     {
@@ -694,91 +702,92 @@ Spacing_spanner::standard_breakable_column_spacing (Grob * me, Item*l, Item*r,
   else
     {
       Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l);
-      bool dummy;
 
-      *space = *fixed + get_duration_space (me, dt, shortest.main_part_, &dummy);
+      if (dt == Moment (0,0))
+       {
+         /*
+           In this case, Staff_spacing should handle the job,
+           using dt when it is 0 is silly.
+          */
+         *space = *fixed + 0.5; 
+       }
+      else
+       {
+         bool dummy;
+         *space = *fixed + get_duration_space (me, dt, shortest.main_part_, &dummy);
+       }
     }
 }
 
 
 /*
   Read hints from L and generate springs.
- */
+*/
 void
 Spacing_spanner::breakable_column_spacing (Grob*me, Item* l, Item *r,Moment shortest)
 {
-  Real max_fixed = -infinity_f;
-  Real max_space = -infinity_f;
-
-  standard_breakable_column_spacing (me, l, r, &max_fixed, &max_space ,
-                                    shortest);
-  
-  for (SCM s = l->get_grob_property ("spacing-wishes");
-       gh_pair_p (s); s = gh_cdr (s))
-    {
-      Item * spacing_grob = dynamic_cast<Item*> (unsmob_grob (gh_car (s)));
-
-      if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob))
-       continue;
+  Real compound_fixed = 0.0;
+  Real compound_space = 0.0;
+  int wish_count = 0;
 
-      Real space;
-      Real fixed_space;
+  Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l);
 
-      /*
-       column for the left one settings should be ok due automatic
-       pointer munging.
+  if (dt == Moment (0,0))
+    {
+      for (SCM s = l->get_grob_property ("spacing-wishes");
+          gh_pair_p (s); s = gh_cdr (s))
+       {
+         Item * spacing_grob = dynamic_cast<Item*> (unsmob_grob (gh_car (s)));
 
-      */
-      assert (spacing_grob-> get_column () == l);
+         if (!spacing_grob || !Staff_spacing::has_interface (spacing_grob))
+           continue;
 
-      Staff_spacing::get_spacing_params (spacing_grob,
-                                        &space, &fixed_space);
+         Real space;
+         Real fixed_space;
 
-      if (Paper_column::when_mom (r).grace_part_)
-       {
          /*
-           Correct for grace notes.
+           column for the left one settings should be ok due automatic
+           pointer munging.
 
-           Ugh. The 0.8 is arbitrary.
-          */
-         space *= 0.8;
-       }
-      if (space > max_space)
-       {
-         max_space = space;
-         max_fixed = fixed_space;
-       }
-    }
+         */
+         assert (spacing_grob-> get_column () == l);
 
-  
-  
-    
-  if (isinf (max_space))
-    {
-    /*
-      One situation where this can happen is when there is a column
-      that only serves as a spanning point for a short staff-symbol.
+         Staff_spacing::get_spacing_params (spacing_grob,
+                                            &space, &fixed_space);
 
-     ===============X===
+         if (Paper_column::when_mom (r).grace_part_)
+           {
+             /*
+               Correct for grace notes.
 
-         |=======Y
+               Ugh. The 0.8 is arbitrary.
+             */
+             space *= 0.8;
+           }
 
 
-      (here no StaffSpacing from Y to X is found.)
-    */      
-      warning ("No spacing wishes found. Does your score have a staff?");
-      max_space = 2.0;
-      max_fixed = 1.0;
+         compound_space += space;
+         compound_fixed += fixed_space;
+         wish_count ++ ;
+       }
     }
 
-  
-  if (l->break_status_dir() == RIGHT
-      && Paper_column::when_mom (l) == Paper_column::when_mom (r))
+  if (compound_space <= 0.0 || !wish_count)
     {
-      /* Start of line: this space is not stretchable */
-      max_fixed = max_space;
+      standard_breakable_column_spacing (me, l, r, &compound_fixed, &compound_space ,
+                                        shortest);
+      wish_count = 1;
+    }
+  else
+    {
+      compound_space /= wish_count;
+      compound_fixed /= wish_count;
     }
 
+  assert (!isinf (compound_space));
+
+
+  
   /*
     Hmm.  we do 1/0 in the next thing. Perhaps we should check if this
     works on all architectures.
@@ -791,8 +800,8 @@ Spacing_spanner::breakable_column_spacing (Grob*me, Item* l, Item *r,Moment shor
     Do it more cleanly, or rename the property. 
     
    */
-  Real strength = 1 / (max_space - max_fixed);
-  Real distance =  max_space;
+  Real strength = 1 / (compound_space - compound_fixed);
+  Real distance = compound_space;
   Spaceable_grob::add_spring (l, r, distance, strength, false);
 }
 
index f1deb19f64e5f949f5c210d0ae2456442ac7484d..dab496820dda708ac78fc0ff0ea4435952e002af 100644 (file)
@@ -142,40 +142,6 @@ Staff_spacing::next_notes_correction (Grob *me, Grob * last_grob)
   return max_corr;
 }
 
-/*
-  Try to find the break-aligned symbol in SEPARATION_ITEM that is
-  sticking out at direction D. The x size is put in LAST_EXT
-*/
-Grob*
-Staff_spacing::extremal_break_aligned_grob (Grob *separation_item, Direction d,
-                                           Interval * last_ext)
-{
-  Grob *col = dynamic_cast<Item*> (separation_item)->get_column ();
-  last_ext->set_empty ();
-  Grob *last_grob = 0;
-  for (SCM s = separation_item->get_grob_property ("elements");
-       gh_pair_p (s); s = gh_cdr (s))
-    {
-      Grob * break_item = unsmob_grob (gh_car (s));
-      
-      if (!gh_symbol_p (break_item->get_grob_property ("break-align-symbol")))
-       continue;
-
-      Interval ext = break_item->extent (col, X_AXIS);
-
-      if (ext.is_empty ())
-       continue;
-      if (!last_grob
-         || (last_grob && d * (ext[d]- (*last_ext)[d]) > 0) )
-       {
-         *last_ext = ext;
-         last_grob = break_item; 
-       }
-    }
-
-  return last_grob;  
-}
-
 void
 Staff_spacing::get_spacing_params (Grob *me, Real * space, Real * fixed)
 {
@@ -202,7 +168,7 @@ Staff_spacing::get_spacing_params (Grob *me, Real * space, Real * fixed)
     }
 
   Interval last_ext;
-  Grob *last_grob = extremal_break_aligned_grob (separation_item, RIGHT,
+  Grob *last_grob = Separation_item::extremal_break_aligned_grob (separation_item, RIGHT,
                                                 &last_ext);
   if (!last_grob)
     {
@@ -231,7 +197,7 @@ Staff_spacing::get_spacing_params (Grob *me, Real * space, Real * fixed)
   if (me_item->break_status_dir () == CENTER)
     {
       SCM nndef = scm_sloppy_assq (ly_symbol2scm ("next-note"), alist);
-      if (gh_pair_p (nndef ))
+      if (gh_pair_p (nndef))
        space_def = nndef;
     }
   
@@ -247,11 +213,30 @@ Staff_spacing::get_spacing_params (Grob *me, Real * space, Real * fixed)
   SCM type = gh_car (space_def) ;
 
   *fixed = last_ext[RIGHT];
-  if (type == ly_symbol2scm ("extra-space"))
-    *space = *fixed + distance;
+  if (type == ly_symbol2scm ("fixed-space"))
+    {
+     *fixed += distance;
+     *space = *fixed;
+    }
+  else if (type == ly_symbol2scm ("extra-space")) 
+    {
+      *space = *fixed + distance;
+    }
+  else if (type == ly_symbol2scm ("semi-fixed-space"))
+    {
+      *fixed += distance / 2; 
+      *space =  *fixed + distance/2;
+    }
   else if (type == ly_symbol2scm("minimum-space"))
-    *space = last_ext[LEFT] + (last_ext.length () >? distance);
-
+    {
+      *space = last_ext[LEFT] + (last_ext.length () >? distance);
+    }
+  else if (type == ly_symbol2scm("minimum-fixed-space"))
+    {
+      *space = last_ext[LEFT] + (last_ext.length () >? distance);
+      *fixed = *space;
+    }
+  
   *space += next_notes_correction (me, last_grob);
 }
 
index 6d76b3804196580db9f1d415c56df305a884c9bb..1977462635525155233e57fb00d357c3101f45e2 100644 (file)
@@ -60,7 +60,7 @@ void
 Stanza_number_engraver::acknowledge_grob (Grob_info inf)
 {
   if (text_
-      && inf.grob_->internal_has_interface (ly_symbol2scm ("lyric-text-interface")))
+      && inf.grob_->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface")))
     {
       Side_position_interface::add_support (text_, inf.grob_);
     }
index 9899a99fcab60845d838bc817628977b18f93430..ce268868663a9d1ce443bc432d65fed81c50b1d2 100644 (file)
@@ -944,7 +944,7 @@ Stem::calc_stem_info (Grob *me)
     /* stem only extends to center of beam */
     - 0.5 * beam_thickness;
 
- Real minimum_y = note_start + minimum_length;
 Real minimum_y = note_start + minimum_length;
   
   
   ideal_y *= my_dir;
index 35bb3aeeebfc5bcf3d3757d9a79a616573621a58..0714d819e7ce7afe59977f46d31c626aa774421a 100644 (file)
@@ -62,9 +62,10 @@ Will not fix it since I'm not sure.
 Molecule
 System_start_delimiter::simple_bar (Grob*me,Real h) 
 {
-  Real w = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")) *
-    gh_scm2double (me->get_grob_property ("thickness"));
-  return Lookup::filledbox (Box (Interval (0,w), Interval (-h/2, h/2)));
+  Real lt =me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")) ;
+  Real w = lt * gh_scm2double (me->get_grob_property ("thickness"));
+  return Lookup::round_filled_box (Box (Interval (0,w), Interval (-h/2, h/2)),
+                                  lt);
 }
 
 MAKE_SCHEME_CALLBACK (System_start_delimiter,after_line_breaking,1);
index d712bfcd86ccab4d5bbcb91058773f2ddd5288b1..e97a7f0f083695eb0831f83dcd11d6fae7e45e6f 100644 (file)
@@ -168,12 +168,12 @@ vaticana_brew_flexa (Grob *me,
        */
       Box left_edge_box (Interval (0, line_thickness),
                         Interval (-0.5*left_height, +0.5*left_height));
-      Molecule left_edge = Lookup::filledbox (left_edge_box);
+      Molecule left_edge = Lookup::filled_box (left_edge_box);
       molecule.add_molecule(left_edge);
 
       Box right_edge_box (Interval (-line_thickness, 0),
                          Interval (-0.5*right_height, +0.5*right_height));
-      Molecule right_edge = Lookup::filledbox (right_edge_box);
+      Molecule right_edge = Lookup::filled_box (right_edge_box);
       right_edge.translate_axis (width, X_AXIS);
       right_edge.translate_axis (corrected_interval / 2.0, Y_AXIS);
       molecule.add_molecule(right_edge);
index d05c97a7492706ef8ebff46991c1ca30ab90119e..29f381484b1f4948c07e7f09fa0d58c023ad512c 100644 (file)
@@ -191,7 +191,7 @@ enddef;
 save bulb_diam, thin, thick;
 
 bulb_diam# := 0.64 staff_space#;
-thin# := 1.2 stafflinethickness#;
+thin# := 1.4 stafflinethickness# - 0.02 staff_space#;
 thick# :=  2.2 stafflinethickness#;
 crook_thin := 0.5 stafflinethickness  + 0.08 staff_space;
 
@@ -199,6 +199,10 @@ lower_brush := 1.5 stafflinethickness;
 
 define_pixels ( bulb_diam, thin, thick);
 
+%
+% PAT is a compact way to pass the brush shape to the routine.
+%
+
 def draw_rest_bulb(expr ycenter, ycut, pat, stretch) =
 begingroup;
        save x,y,pt;
@@ -264,7 +268,7 @@ def draw_eighth_rest =
        fill pat;
        
 
-       draw_rest_bulb(0.5 staff_space , y2r , pat , 1.0);
+       draw_rest_bulb (0.5 staff_space , y2r , pat , 1.0);
        penlabels (1, 2);
        labels(9);
 
index 702e0e63beaa1030c77360e61a330f9caebd3980..72bbee2700601a0cf1771af17bda93efc4e113d0 100644 (file)
@@ -7,12 +7,12 @@
 %input feta-bolletjes; 
 %input feta-banier;
 %input feta-slag;
-%input feta-eindelijk;
+input feta-eindelijk;
 %input feta-klef;
 %      input feta-toevallig;
 %      input feta-schrift;
 %      input feta-haak;
 %      input feta-timesig;
 %      input feta-pendaal;
-       input feta-accordion;
+%      input feta-accordion;
 %      input feta-solfa;
index 2ee3ec233a65d3ffdef72b76d9e620eb648f30e5..8643310e0750a177b200e7712f80aa4810754529 100644 (file)
@@ -300,7 +300,6 @@ use @code{\outputproperty}. @code{\property .. \override} will not
 work: @code{\override} is processed after the StaffSymbol is created,
 and will have no effect.
 ")
-(grob-property-description 'maximum-length ly:dimension? "don't make Grob longer than this")
 (grob-property-description 'maximum-rest-count integer? "kill off rests so we don't more than this number left.")
 (grob-property-description 'measure-length ly:moment? "Length of a
 measure. Used in some spacing situations.")
index 3cf74b20b16691c0bc7091680aa8e8da1aacdeee..2392ee9ee3d70e259601f19b753552fcaa75cfbe 100644 (file)
@@ -46,7 +46,7 @@
                       (key-signature . (extra-space . 0.0))
                       (staff-bar . (extra-space . 0.0))
                       (time-signature . (extra-space . 0.0)) 
-                      (first-note . (extra-space . 0.0))
+                      (first-note . (fixed-space . 0.0))
                       ))
        (meta . ((interfaces . (ambitus-interface staff-symbol-referencer-interface break-aligned-interface item-interface  font-interface))))
        ))
@@ -78,7 +78,8 @@
                        (custos . (minimum-space . 2.0))
                        (clef .   (minimum-space . 1.0))
                        (key-signature . (extra-space . 1.0))
-                       (first-note . (extra-space . 1.3))
+                       (first-note . (fixed-space . 1.3))
+                       (next-note . (semi-fixed-space . 1.3))
                        (right-edge . (extra-space . 0.0))
                        ))
 
        (auto-knee-gap . 5.5)
 
        ;; only for debugging.
-;      (font-name . "cmr10")
+       (font-name . "cmr10")
        
        (space-function . ,Beam::space_function)
        (meta . ((interfaces . (staff-symbol-referencer-interface beam-interface spanner-interface))))
                        (key-signature . (minimum-space . 1.5))
                        (staff-bar . (minimum-space . 1.5))
                        (clef . (minimum-space . 2.0))
-                       (first-note . (minimum-space . 1.0))
+                       (first-note . (fixed-space . 1.0)) ;huh? 
                        (right-edge . (extra-space . 0.1))
                        ))
        (molecule-callback . ,Text_item::brew_molecule)
                        (staff-bar . (extra-space . 0.7))
                        (key-signature . (minimum-space . 4.0))
                        (time-signature . (minimum-space . 4.2))
-                       (first-note . (minimum-space . 5.0))
+                       (first-note . (minimum-fixed-space . 5.0))
                        (next-note . (extra-space . 0.5))
                        (right-edge . (extra-space . 0.5))
                        ))
        (adjust-if-on-staffline . #t)
        (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
        (space-alist . (
-                       (first-note . (minimum-space . 0.0))
+                       (first-note . (minimum-fixed-space . 0.0))
                        (right-edge . (extra-space . 0.1))
                        ))
        (meta . ((interfaces
                        (staff-bar . (extra-space . 0.0))
                        (breathing-sign . (minimum-space  . 0.0))
                        (clef . (extra-space . 0.85))
-                       (first-note . (extra-space . 1.0))
+                       (first-note . (fixed-space . 1.0))
                        (right-edge . (extra-space . 0.0))
                        (key-signature . (extra-space . 0.0))
                        ))
                        (time-signature . (extra-space . 1.25))
                        (staff-bar .  (extra-space . 1.1))
                        (right-edge . (extra-space . 0.5))
-                       (first-note . (extra-space . 2.5))
+                       (first-note . (fixed-space . 2.5))
                        ))
        (Y-offset-callbacks . (,Staff_symbol_referencer::callback))
        (break-align-symbol . key-signature)
     (LyricHyphen
      . (
        (thickness . 1.0)
-       (height . 0.4)
+       (height . 0.42)
+       (dash-period . 10.0)
+       (length . 0.66)
        (minimum-length .  0.5) 
        (maximum-length .  100)
-       (spacing-procedure . ,Hyphen_spanner::set_spacing_rods)
        (molecule-callback . ,Hyphen_spanner::brew_molecule)
        (Y-extent-callback . ,Grob::point_dimension_callback)
        (meta . ((interfaces . (lyric-hyphen-interface spanner-interface))))
      . ((molecule-callback . ,Text_item::brew_molecule)                
        (font-family . roman)
        (font-series . bold)
-       (padding . 1.5)
+       (padding . 1.0)
        (X-offset-callbacks . (,Side_position_interface::aligned_side))
        (direction . ,LEFT) 
        (meta . ((interfaces . (side-position-interface text-interface font-interface item-interface ))))               
 
        ;; default stem direction for note on middle line
        (neutral-direction . -1)
-       
-       ;; [Wanske]: standard length (but no shorter than minimum).
-       ;; (beamed-lengths . (3.5))
-       
+
+
+
        ;; FIXME.  3.5 yields too long beams (according to Ross and
        ;; looking at Baerenreiter examples) for a number of common
        ;; boundary cases.  Subtracting half a beam thickness fixes
        ;; this, but the bug may well be somewhere else.
+
+       ;; FIXME this should come from 'lengths
+
        (beamed-lengths . (3.26 3.26 1.5))
-       
-       ;; [Wanske] lists three sets of minimum lengths.  One
-       ;; set for the nomal case, and one set for beams with "der
-       ;; Balkenendpunkt weiter uber bzw. unter die Systemgrenze
-       ;; hinaus (bei Gruppen mit grossem Tonumfang)" and the extreme
-       ;; case.
-
-       ;; Note that Wanske lists numbers lengths starting from top of
-       ;; head, so we must add half a staff space.
+;      (beamed-lengths . (3.5 3.5 3.5 4.5 5.0))
        
        ;; We use the normal minima as minimum for the ideal lengths,
        ;; and the extreme minima as abolute minimum length.
        (break-align-symbol . time-signature)
        (break-visibility . ,all-visible)
        (space-alist . (
-                       (first-note . (extra-space . 2.0))
+                       (first-note . (fixed-space . 2.0))
                        (right-edge . (extra-space . 0.5))
                        (staff-bar .  (minimum-space . 2.0))
                        ))
index 1d4627aefd2be67aaad20d3be3a9bd3a97dd04cd..cd23437bef9cc569ca129011fd1f84a2535257f4 100644 (file)
@@ -121,15 +121,15 @@ for the reader.
 
 
 (define-public huge-markup
-  (font-markup 'font-relative-size 2))
+  (font-markup 'font-size 2))
 (define-public large-markup
-  (font-markup 'font-relative-size 1))
+  (font-markup 'font-size 1))
 (define-public small-markup
-  (font-markup 'font-relative-size -1))
+  (font-markup 'font-size -1))
 (define-public tiny-markup
-  (font-markup 'font-relative-size -2))
+  (font-markup 'font-size -2))
 (define-public teeny-markup
-  (font-markup 'font-relative-size -3))
+  (font-markup 'font-size -3))
 (define-public dynamic-markup
   (font-markup 'font-family 'dynamic))
 (define-public italic-markup