]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' of git://git.sv.gnu.org/lilypond
authorGraham Percival <graham@percival-music.ca>
Fri, 31 Aug 2007 04:34:53 +0000 (21:34 -0700)
committerGraham Percival <graham@percival-music.ca>
Fri, 31 Aug 2007 04:34:53 +0000 (21:34 -0700)
Documentation/user/GNUmakefile
VERSION
buildscripts/output-distance.py
lily/beam.cc
lily/include/scm-hash.hh
lily/scm-hash.cc
lily/side-position-interface.cc
lily/staff-performer.cc
scm/define-grobs.scm
scm/paper.scm

index 5de72002c744677ef9bad2a68a8fcfe80e50b937..77c2f3b41071c38ba02908dd52e7ea711cc8b69f 100644 (file)
@@ -3,7 +3,7 @@ depth=../..
 LATEX_FILES =$(call src-wildcard,*.latex)
 
 
-EXTRA_DIST_FILES= $(LATEX_FILES) $(IMAGES) README.txt convert-ly.txt $(EPS_ILLUSTRATIONS)
+EXTRA_DIST_FILES= $(LATEX_FILES) $(IMAGES) README.txt $(EPS_ILLUSTRATIONS)
 
 IMAGES=$(call src-wildcard,*.png)
 EPS_ILLUSTRATIONS=context-example.eps
diff --git a/VERSION b/VERSION
index c0e82d803f5ae32da32f1cede61e7cfd780d8428..fc0b711f75a5362ec983facea04059b52a01b563 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=11
-PATCH_LEVEL=30
+PATCH_LEVEL=31
 MY_PATCH_LEVEL=
 
index cfbd0b4b5750a6c1b0d9f571bc4bfa9c5e4aefc9..fffade13f3ef011277d4d15a67f247d131f1027f 100644 (file)
@@ -484,6 +484,11 @@ class TextFileCompareLink (FileCompareLink):
         str = '<font size="-2"><pre>%s</pre></font>' % str
         return str
 
+class LogFileCompareLink (TextFileCompareLink):
+  def get_content (self, f):
+      c = TextFileCompareLink.get_content (self, f)
+      c = re.sub ("\nProcessing `[^\n]+'\n", '', c)
+      return c
         
 class ProfileFileLink (FileCompareLink):
     def __init__ (self, f1, f2):
@@ -842,7 +847,7 @@ class ComparisonData:
             ext = os.path.splitext (f1)[1]
             klasses = {
                 '.midi': MidiFileLink,
-                '.log' : TextFileCompareLink,
+                '.log' : LogFileCompareLink,
                 '.profile': ProfileFileLink,
                 '.gittxt': GitFileCompareLink, 
                 }
index 843278aff38e8b8f97c645ba73d24ed3f329ab6b..f7cd01f4c95daf261e19925f2730003365784ac7 100644 (file)
@@ -446,7 +446,7 @@ Beam::get_beam_segments (Grob *me_grob, Grob **common)
                            = neighbor_stem->relative_coordinate (commonx, X_AXIS);
 
                          notehead_width = min (notehead_width,
-                                               fabs (neighbor_stem_x - segs[j].stem_x_)/2);
+                                               fabs (neighbor_stem_x - segs[j].stem_x_)/2.5);
                        }
                      current.horizontal_[event_dir] += event_dir * notehead_width;
                    }
index 6ced1f5e216e389a39f0cfed47939a8b342f00ac..9d1bcf8ca74effb26bb120475d3554b0ad4d380b 100644 (file)
 
 #include "smobs.hh"
 
-/**
-   auto resizing hash table.
+/*
+  hash table.
 
-   1. ALWAYS USE THIS AS VIA A POINTER, i.e.
+  1. ALWAYS USE THIS AS VIA A POINTER, i.e.
 
-   class Foo {
-   Scheme_hash_table * tab;
-   };
+  class Foo {
+  Scheme_hash_table * tab;
+  };
 
-   and NOT
+  and NOT
 
-   class Foo {
-   Scheme_hash_table tab;
-   }
+  class Foo {
+  Scheme_hash_table tab;
+  }
 
 
-   2. UPON DESTRUCTION, DO
+  2. UPON DESTRUCTION, DO
 
-   scm_gc_unprotect_object (tab->self_scm_);
+  scm_gc_unprotect_object (tab->self_scm_);
 */
 
 class Scheme_hash_table
@@ -37,23 +37,17 @@ class Scheme_hash_table
 public:
   bool try_retrieve (SCM key, SCM *val);
   bool contains (SCM key) const;
-
-  /**
-     WARNING: putting something in assumes responsibility for cleaning
-     up.  */
   void set (SCM k, SCM v);
   SCM get (SCM k) const;
   void remove (SCM k);
   Scheme_hash_table ();
   void operator = (Scheme_hash_table const &);
   Scheme_hash_table (Scheme_hash_table const &);
-
   SCM to_alist () const;
 
 private:
   SCM hash_tab_;
-  unsigned elt_count_;
-
+  void copy (Scheme_hash_table const &src);
   DECLARE_SMOBS (Scheme_hash_table);
 };
 
index e64de8b3979abe3c9f93b4b5254d7c3a7430fdd1..af68717b4bccbe96ebc32f1085b845b62b6ba425 100644 (file)
@@ -17,46 +17,42 @@ using namespace std;
 /*
   Return: number of objects.
 */
-int
+SCM
+copy_handle (void *closure, SCM handle)
+{
+  SCM tab = (SCM) closure;
+  scm_hashq_set_x (tab, scm_car (handle), scm_cdr (handle));
+  return tab;
+}
+
+static void
 copy_scm_hashes (SCM dest, SCM src)
 {
-  int k = 0;
-  for (int i = scm_c_vector_length (src); i--;)
-    for (SCM s = scm_vector_ref (src, scm_from_int (i)); scm_is_pair (s); s = scm_cdr (s))
-      {
-       scm_hashq_set_x (dest, scm_caar (s), scm_cdar (s));
-       k++;
-      }
-  return k;
+  scm_internal_hash_for_each_handle (  (SCM (*)(GUILE_ELLIPSIS)) &copy_handle, dest, src);
 }
 
 Scheme_hash_table::Scheme_hash_table ()
 {
   hash_tab_ = SCM_EOL;
   smobify_self ();
-  hash_tab_ = scm_make_vector (scm_from_int (119), SCM_EOL);
-  elt_count_ = 0;
+  hash_tab_ = scm_c_make_hash_table (119);
 }
 
 Scheme_hash_table::Scheme_hash_table (Scheme_hash_table const &src)
-
 {
   hash_tab_ = SCM_EOL;
-  elt_count_ = 0;
   smobify_self ();
-
-  hash_tab_ = scm_make_vector (scm_from_int (max ((int) src.elt_count_, 11)), SCM_EOL);
-  elt_count_ = copy_scm_hashes (hash_tab_, src.hash_tab_);
+  copy (src);
 }
 
 void
-Scheme_hash_table::operator = (Scheme_hash_table const &src)
+Scheme_hash_table::copy (Scheme_hash_table const &src)
 {
   if (&src == this)
     return;
 
-  hash_tab_ = scm_make_vector (scm_from_int (max ((int) src.elt_count_, 11)), SCM_EOL);
-  elt_count_ = copy_scm_hashes (hash_tab_, src.hash_tab_);
+  hash_tab_ = scm_c_make_hash_table (SCM_HASHTABLE_N_ITEMS(src.hash_tab_));
+  copy_scm_hashes (hash_tab_, src.hash_tab_);
 }
 
 Scheme_hash_table::~Scheme_hash_table ()
@@ -106,49 +102,34 @@ Scheme_hash_table::set (SCM k, SCM v)
 {
   assert (scm_is_symbol (k));
   SCM handle = scm_hashq_create_handle_x (hash_tab_, k, SCM_UNDEFINED);
-  if (scm_cdr (handle) == SCM_UNDEFINED)
-    elt_count_++;
-
   scm_set_cdr_x (handle, v);
-
-  /*
-    resize if getting too large.
-  */
-  if (elt_count_ > 2 * scm_c_vector_length (hash_tab_))
-    {
-      SCM nh = scm_make_vector (scm_from_int (3 * elt_count_ + 1), SCM_EOL);
-      elt_count_ = copy_scm_hashes (nh, hash_tab_);
-      hash_tab_ = nh;
-    }
 }
 
-// UGH.
 SCM
 Scheme_hash_table::get (SCM k) const
 {
-  /*
-    42 will stick out like a sore thumb, hopefully.
+  /* SCM_UNSPECIFIED will stick out like a sore thumb, hopefully.
   */
-  return scm_hashq_ref (hash_tab_, k, scm_from_int (42));
+  return scm_hashq_ref (hash_tab_, k, SCM_UNSPECIFIED);
 }
 
 void
 Scheme_hash_table::remove (SCM k)
 {
   scm_hashq_remove_x (hash_tab_, k);
-  /* Do not decrease elt_count_ as this may cause underflow.  The exact
-     value of elt_count_ is not important. */
+}
+
+static SCM
+collect_handles (void *closure, SCM key, SCM value, SCM result)
+{
+  (void) closure;
+  return scm_acons(key, value, result);
 }
 
 SCM
 Scheme_hash_table::to_alist () const
 {
-  SCM lst = SCM_EOL;
-  for (int i = scm_c_vector_length (hash_tab_); i--;)
-    for (SCM s = scm_vector_ref (hash_tab_, scm_from_int (i)); scm_is_pair (s);
-        s = scm_cdr (s))
-      lst = scm_acons (scm_caar (s), scm_cdar (s), lst);
-  return lst;
+  return scm_internal_hash_fold ((SCM (*)(GUILE_ELLIPSIS)) &collect_handles, NULL, SCM_EOL, hash_tab_);
 }
 
 IMPLEMENT_SMOBS (Scheme_hash_table);
index 43665211bfeb649b4e172d314018b4385ea09380..19d9a88dc8ac86676ff2496a636c77167dc5dead 100644 (file)
 #include <algorithm>
 using namespace std;
 
-#include "note-head.hh"
-#include "warn.hh"
+#include "directional-element-interface.hh"
+#include "grob.hh"
 #include "main.hh"
-#include "staff-symbol-referencer.hh"
+#include "misc.hh"
+#include "note-head.hh"
 #include "pointer-group-interface.hh"
-#include "directional-element-interface.hh"
 #include "staff-symbol-referencer.hh"
 #include "staff-symbol.hh"
+#include "stem.hh"
 #include "string-convert.hh"
-#include "misc.hh"
-#include "grob.hh"
+#include "warn.hh"
 
 void
 Side_position_interface::add_support (Grob *me, Grob *e)
@@ -80,9 +80,20 @@ Side_position_interface::general_side_position (Grob *me, Axis a, bool use_exten
        dim.unite (staff_extents);
     }
 
+  Direction dir = get_grob_direction (me);
+
   for (vsize i = 0; i < support.size (); i++)
     {
       Grob *e = support[i];
+
+      // In the case of a stem, we will find a note head as well
+      // ignoring the stem solves cyclic dependencies if the stem is
+      // attached to a cross-staff beam.
+      if (a == Y_AXIS
+         && Stem::has_interface (e)
+         && dir == - get_grob_direction (e))
+       continue;
+      
       if (e)
        if (use_extents)
          dim.unite (e->maybe_pure_extent (common, a, pure, start, end));
@@ -96,8 +107,6 @@ Side_position_interface::general_side_position (Grob *me, Axis a, bool use_exten
   if (dim.is_empty ())
     dim = Interval (0, 0);
 
-  Direction dir = get_grob_direction (me);
-
   Real off = me->get_parent (a)->maybe_pure_coordinate (common, a, pure, start, end);
   Real minimum_space = ss * robust_scm2double (me->get_property ("minimum-space"), -1);
 
index 1359af5e01ea512c5f74f24a72bebba8e7bcdc6a..d0ad8e1e05f1fca07b50ac20bf5f83da33d2f8ce 100644 (file)
@@ -13,8 +13,8 @@
 #include "performer-group.hh"
 #include "context.hh"
 
-/** Perform a staff. Individual notes should have their instrument
-    (staff-wide) set, so we override play_element ()
+/* Perform a staff. Individual notes should have their instrument
+  (staff-wide) set, so we override play_element ()
 */
 class Staff_performer : public Performer
 {
index 72a31eddbc87768fb4cb5c3c8c045fd39177e7ef..ba600479635ff0e4f28d4c2c14996b720ba53aa7 100644 (file)
        (Y-extent . ,ly:accidental-interface::height)
        (X-offset . ,(ly:make-simple-closure
                      `(,+
-                       ,(ly:make-simple-closure (list ly:self-alignment-interface::centered-on-x-parent))
-                       ,(ly:make-simple-closure (list ly:self-alignment-interface::x-aligned-on-self)))))
+                       ,(ly:make-simple-closure
+                         (list ly:self-alignment-interface::centered-on-x-parent))
+                       ,(ly:make-simple-closure
+                         (list ly:self-alignment-interface::x-aligned-on-self)))))
        (self-alignment-X . ,CENTER)
        (font-size . -2)
        (glyph-name-alist . ,standard-alteration-glyph-name-alist)
index 87d171802e27a73d16b9e3552f2ba0d83f5248b8..be15759f7a87abefe4f89a27a48198778a3b72ee 100644 (file)
           (* f0 (- x1 staff-space)))
      (- x1 x0))))
 
-(define-public (layout-set-absolute-staff-size-in-module m staff-height)
+(define-public (layout-set-absolute-staff-size-in-module module staff-height)
   (let*
-      ((pt (eval 'pt m))
+      ((pt (eval 'pt module))
        (ss (/ staff-height 4))
-       (factor (/ staff-height (* 20 pt))))
+       (factor (/ staff-height (* 20 pt)))
+       (setm! (lambda (sym val)
+               (module-define! module sym val))))
 
-    (module-define! m 'text-font-size (* 12 factor))
+    (setm! 'text-font-size (* 12 factor))
     
-    (module-define! m 'output-scale ss)
-    (module-define! m 'fonts
+    (setm! 'output-scale ss)
+    (setm! 'fonts
                    (if tex-backend?
                        (make-cmr-tree factor)
                        (make-century-schoolbook-tree factor)))
-    (module-define! m 'staff-height staff-height)
-    (module-define! m 'staff-space ss)
+    (setm! 'staff-height staff-height)
+    (setm! 'staff-space ss)
 
-    (module-define! m 'line-thickness (calc-line-thickness ss pt))
+    (setm! 'line-thickness (calc-line-thickness ss pt))
 
     ;;  sync with feta  
-    (module-define! m 'ledgerline-thickness (+ (* 0.5 pt) (/ ss 10)))
+    (setm! 'ledgerline-thickness (+ (* 0.5 pt) (/ ss 10)))
 
     ;;  sync with feta  
-    (module-define! m 'blot-diameter (* 0.4 pt))
+    (setm! 'blot-diameter (* 0.4 pt))
     ))
 
- (define-public (layout-set-absolute-staff-size sz)
-  "Function to be called inside a \\layout{} block to set the staff size. SZ is in
-points"
-  
+(define-public (layout-set-absolute-staff-size sz)
+  "Function to be called inside a \\layout{} block to set the staff
+size. SZ is in points"
   (layout-set-absolute-staff-size-in-module (current-module) sz))
 
 (define-public (layout-set-staff-size sz)
   "Function to be called inside a \\layout{} block to set the staff
 size. SZ is in points"
-  
+
   (layout-set-absolute-staff-size (* (eval 'pt (current-module)) sz)))
 
 (define-safe-public (set-global-staff-size sz)