]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master-git.sv.gnu.org-lilypond.git' of /home/lilydev/vc/gub/downloads...
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 2 Jan 2007 13:43:28 +0000 (14:43 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 2 Jan 2007 13:43:28 +0000 (14:43 +0100)
18 files changed:
.gitignore
GNUmakefile.in
buildscripts/build-coverage.sh
buildscripts/coverage.py
buildscripts/output-distance.py
input/regression/cluster-break.ly [new file with mode: 0644]
input/regression/cluster-style.ly [new file with mode: 0644]
input/regression/cluster.ly
input/regression/lyric-extender-no-heads.ly [new file with mode: 0644]
input/regression/measure-grouping.ly
input/regression/spacing-mark-width.ly [new file with mode: 0644]
input/test/makam.ly
lily/cluster.cc
lily/extender-engraver.cc
lily/note-spacing-engraver.cc
scm/backend-library.scm
scm/lily.scm
scripts/lilypond-book.py

index 1f6b89a514ae8e4c8aadf570a168892d31d88e20..8971860688182ce9d5e3f9ccec2c576b0533c1cd 100644 (file)
@@ -54,5 +54,6 @@ configure
 gcstat*.scm
 lily-[0-9a-f][0-9a-f][0-9a-f]*
 out-scons
+out-cov
 tags
 test-output-distance
index 04a002a282990b69939415516084896dc5c72d90..37fb44abf417c1e4983a1c6b20b4f0b2bae631ed 100644 (file)
@@ -210,14 +210,11 @@ test-clean:
        $(MAKE) -C input/regression/ out=test clean
 
 test:
-## no aa-scaling, no PDF
-       $(MAKE) -C input/regression/ out=test LILYPOND_BOOK_LILYPOND_FLAGS="--backend=eps --formats=ps,png $(LILYPOND_JOBS) -dinclude-eps-fonts -dgs-load-fonts --header=texidoc -I $(top-src-dir)/input/manual -ddump-profile -dcheck-internal-types -ddump-signatures -danti-alias-factor=1" LILYPOND_BOOK_VERBOSE= out-test/collated-files.html 
+       $(MAKE) -C input/regression/ out=test LILYPOND_BOOK_LILYPOND_FLAGS="--backend=eps --formats=ps $(LILYPOND_JOBS) -dinclude-eps-fonts -dgs-load-fonts --header=texidoc -I $(top-src-dir)/input/manual -ddump-profile -dcheck-internal-types -ddump-signatures -danti-alias-factor=1" LILYPOND_BOOK_VERBOSE= out-test/collated-files.html 
        @find input ly -name '*.ly' -print |grep -v 'out.*/' | xargs grep '\\version' -L | grep -v "standard input" |sed 's/^/**** Missing version: /g' 
 
-
-
 RESULT_DIR=$(top-build-dir)/out/test-results/
 local-check: test
        rm -rf $(RESULT_DIR)
        mkdir -p $(RESULT_DIR)
-       $(PYTHON) $(buildscript-dir)/output-distance.py --output-dir $(RESULT_DIR) $(CHECK_SOURCE) input/regression/out-test/
+       $(PYTHON) $(buildscript-dir)/output-distance.py --create-images --output-dir $(RESULT_DIR) $(CHECK_SOURCE) input/regression/out-test/
index 5af2bb1d7f116caf8cb234e5ba41ee48ffdf8e55..13a073188b78e8c5fd928da575143846ee74b427 100755 (executable)
@@ -1,12 +1,31 @@
 #!/bin/sh
-./configure --enable-config=cov --disable-optimising
-make conf=cov -j2 clean
-perl -i~ -pe 's/-pipe /-fprofile-arcs -ftest-coverage -pipe /g' config-cov.make
-perl -i~ -pe 's/ -ldl / -lgcov -ldl /g' config-cov.make
+
+if test "$1" == "--fresh"; then
+  fresh=yes
+fi
+
+if test ! -f config-cov.make; then
+  fresh=yes
+fi
+
+if test "$fresh" = "yes";
+then
+  ./configure --enable-config=cov --disable-optimising
+  make conf=cov -j2 clean
+  perl -i~ -pe 's/-pipe /-fprofile-arcs -ftest-coverage -pipe /g' config-cov.make
+  perl -i~ -pe 's/ -ldl / -lgcov -ldl /g' config-cov.make
+else
+  find -name '*.gcda' -exec rm  '{}' ';'
+fi
+
+
 make conf=cov -j2
 make conf=cov test-clean LILYPOND_JOBS=          
 make conf=cov test LILYPOND_JOBS= >& out-cov/test-run.log
 
+rm -rf out-cov
+mkdir out-cov
+
 cd out-cov
 ln ../lily/* .
 ln ../lily/out-cov/*[ch] .
@@ -16,3 +35,5 @@ for a in *[cyl]
 do
    gcov -o ../lily/out-cov/  -p $a > $a.gcov-summary
 done 
+
+python buildscripts/coverage.py
index e8cb903a97e14b11944675d70eb067e517bb59f9..62a68cb0bb0566a651243d0c028942132d6ea433 100644 (file)
@@ -27,6 +27,12 @@ for f in glob.glob ('*.gcov-summary'):
 
 results.sort ()
 results.reverse()
+
+print 'files sorted by number of untested lines (decreasing)'
+print
+print '%5s (%6s): %s' % ('cov %', 'lines', 'file')
+print '----------------------------------------------'
+
 for (pain, d) in results:
     print '%(cov)5.2f (%(lines)6d): %(file)s' % d
 
index 5a83c490d0e4d3d875182e3bde2d4a241c14a1a2..ec8b5d9e10a769f2a907282d9885997a159c7902 100644 (file)
@@ -435,21 +435,50 @@ class SignatureFileLink (FileLink):
 
         self.add_system_link (link, system_index[0])
 
+    
+    def create_images (self, old_dir, new_dir, dest_dir):
+
+        files_created = [[], []]
+        for oldnew in (0, 1):
+            pat = self.base_names[oldnew] + '.eps'
+
+            for f in glob.glob (pat):
+                infile = f
+                outfile = (dest_dir + '/' + f).replace ('.eps', '.png')
+
+                mkdir (os.path.split (outfile)[0])
+                cmd = ('gs -sDEVICE=png16m -dGraphicsAlphaBits=4 -dTextAlphaBits=4 '
+                       ' -r101 '
+                       ' -sOutputFile=%(outfile)s -dNOSAFER -dEPSCrop -q -dNOPAUSE '
+                       ' %(infile)s  -c quit '  % locals ())
+
+                files_created[oldnew].append (outfile)
+                system (cmd)
+
+        return files_created
+    
     def link_files_for_html (self, old_dir, new_dir, dest_dir):
-        png_linked = [[], []]
-        for ext in ('.png', '.ly', '-page*png'):
-            
+        to_compare = [[], []]
+
+        exts = ['.ly']
+        if options.create_images:
+            to_compare = self.create_images (old_dir, new_dir, dest_dir)
+        else:
+            exts += ['.png', '-page*png']
+        
+        for ext in exts:            
             for oldnew in (0,1):
                 for f in glob.glob (self.base_names[oldnew] + ext):
                     dst = dest_dir + '/' + f
                     link_file (f, dst)
 
                     if f.endswith ('.png'):
-                        png_linked[oldnew].append (f)
+                        to_compare[oldnew].append (f)
                         
         if options.compare_images:                
-            for (old,new) in zip (png_linked[0], png_linked[1]):
+            for (old, new) in zip (to_compare[0], to_compare[1]):
                 compare_png_images (old, new, dest_dir)
+
                 
     def html_record_string (self,  old_dir, new_dir):
         def img_cell (ly, img, name):
@@ -467,7 +496,6 @@ class SignatureFileLink (FileLink):
 </font>
 </td>
 ''' % locals ()
-
         def multi_img_cell (ly, imgs, name):
             if not name:
                 name = 'source'
@@ -800,14 +828,15 @@ def test_paired_files ():
 def test_compare_trees ():
     system ('rm -rf dir1 dir2')
     system ('mkdir dir1 dir2')
-    system ('cp 20{-*.signature,.ly,.png} dir1')
-    system ('cp 20{-*.signature,.ly,.png} dir2')
-    system ('cp 20expr{-*.signature,.ly,.png} dir1')
-    system ('cp 19{-*.signature,.ly,.png} dir2/')
-    system ('cp 19{-*.signature,.ly,.png} dir1/')
+    system ('cp 20{-*.signature,.ly,.png,.eps} dir1')
+    system ('cp 20{-*.signature,.ly,.png,.eps} dir2')
+    system ('cp 20expr{-*.signature,.ly,.png,.eps} dir1')
+    system ('cp 19{-*.signature,.ly,.png,.eps} dir2/')
+    system ('cp 19{-*.signature,.ly,.png,.eps} dir1/')
     system ('cp 19-1.signature 19-sub-1.signature')
     system ('cp 19.ly 19-sub.ly')
     system ('cp 19.png 19-sub.png')
+    system ('cp 19.eps 19-sub.eps')
 
     system ('cp 20multipage* dir1')
     system ('cp 20multipage* dir2')
@@ -815,10 +844,10 @@ def test_compare_trees ():
 
     
     system ('mkdir -p dir1/subdir/ dir2/subdir/')
-    system ('cp 19-sub{-*.signature,.ly,.png} dir1/subdir/')
-    system ('cp 19-sub{-*.signature,.ly,.png} dir2/subdir/')
-    system ('cp 20grob{-*.signature,.ly,.png} dir2/')
-    system ('cp 20grob{-*.signature,.ly,.png} dir1/')
+    system ('cp 19-sub{-*.signature,.ly,.png,.eps} dir1/subdir/')
+    system ('cp 19-sub{-*.signature,.ly,.png,.eps} dir2/subdir/')
+    system ('cp 20grob{-*.signature,.ly,.png,.eps} dir2/')
+    system ('cp 20grob{-*.signature,.ly,.png,.eps} dir1/')
 
     ## introduce differences
     system ('cp 19-1.signature dir2/20-1.signature')
@@ -996,6 +1025,12 @@ def main ():
                   action="store_false",
                   help="Don't run graphical comparisons")
 
+    p.add_option ('--create-images',
+                  dest="create_images",
+                  default=False,
+                  action="store_true",
+                  help="Create PNGs from EPSes")
+
     p.add_option ('-o', '--output-dir',
                   dest="output_dir",
                   default=None,
diff --git a/input/regression/cluster-break.ly b/input/regression/cluster-break.ly
new file mode 100644 (file)
index 0000000..9b42b92
--- /dev/null
@@ -0,0 +1,21 @@
+
+\version "2.10.7"
+\header {
+  texidoc = "Clusters behave well across line breaks."
+}
+
+\layout { ragged-right = ##t }
+
+fragment = \relative c' {
+  \time 2/4 
+  <e d'>4
+  <g a>4 | \break
+  <e a>
+  <f a>
+}
+
+<< \new Staff \makeClusters \fragment
+   \new Staff \fragment
+>>
+
+
diff --git a/input/regression/cluster-style.ly b/input/regression/cluster-style.ly
new file mode 100644 (file)
index 0000000..9d4dfc8
--- /dev/null
@@ -0,0 +1,34 @@
+
+
+\version "2.10.7"
+\header {
+  texidoc = "Clusters behave well across line breaks."
+}
+
+\layout { ragged-right = ##t }
+
+fragment = \relative c' {
+  <e d'>4
+  <g a>4 
+  <e a>4
+}
+
+<<
+  \time 2/4 
+  \new Staff {
+    \override ClusterSpanner #'style = #'ramp
+    \makeClusters \fragment
+    r4
+    \override ClusterSpanner #'style = #'leftsided-stairs
+    \makeClusters \fragment
+    r4
+    \override ClusterSpanner #'style = #'rightsided-stairs
+    \makeClusters \fragment
+    r4
+    \override ClusterSpanner #'style = #'centered-stairs
+    \makeClusters \fragment
+    }
+  
+>>
+
+
index 289c1f8984fa5b419421a169d096aef4a6f59675..a05f2ac73d5b575bdb00b8b7d174b1f5e7b2cdc2 100644 (file)
@@ -15,7 +15,7 @@ fragment = \relative c' {
 
 <<
   \new Staff \fragment
-  \new Staff \applyMusic #notes-to-clusters \fragment
+  \new Staff \makeClusters \fragment
 >>
 
 
diff --git a/input/regression/lyric-extender-no-heads.ly b/input/regression/lyric-extender-no-heads.ly
new file mode 100644 (file)
index 0000000..958805a
--- /dev/null
@@ -0,0 +1,24 @@
+\header
+{
+  texidoc = "Extender engraver also notices the lack of note heads.
+Here the extender ends on the 2nd quarter note, despite the grace note
+without a lyric attached." 
+  
+}
+
+\version "2.10.7"
+
+\layout {
+  ragged-right = ##t
+}
+
+\relative c'' {
+  \time 3/4
+  d4~ d4 r4
+  \grace es8
+
+  d4
+  
+}
+\addlyrics { x __ x  }
+
index 64a1e8153d4a2539b51fd70875bc9bc39016c656..cfea330422831ee7a4af3dbc2de8efb846ec5e57 100644 (file)
@@ -9,10 +9,16 @@ brackets above beats when the beats of a time signature are grouped.  "
 
 \version "2.10.0"
 
+\layout  {
+  ragged-right = ##t
+}
 
 %% TODO: should have 2/4 + 5/8 time sig style.
 
-\context Staff
+\context Staff \with {
+    \consists "Measure_grouping_engraver"
+  }
+
 \relative c' {
   #(set-time-signature 2 4) 
   c8 a'4 a8~
@@ -23,12 +29,5 @@ brackets above beats when the beats of a time signature are grouped.  "
   #(set-time-signature 5 8 '(3 2)) 
   g8 a4 g a4.->
 }
-\layout  {
-  ragged-right = ##t
-  \context {
-    \Staff
-    \consists "Measure_grouping_engraver"
-  }
-}
 
 
diff --git a/input/regression/spacing-mark-width.ly b/input/regression/spacing-mark-width.ly
new file mode 100644 (file)
index 0000000..b0b4614
--- /dev/null
@@ -0,0 +1,18 @@
+\header {
+
+  texidoc = "Width of marks does not affect spacing."
+
+}
+
+\version "2.10.7"
+
+\paper {
+  ragged-right = ##t
+}
+
+\relative c''
+{
+  \override Score.RehearsalMark #'break-visibility = #begin-of-line-invisible
+  c1
+  \mark "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx "
+}
index 53dd69cc1a5b9dfe57f946a852ab49cda8ea57d1..549df765c8a3c4b924648b5edcfc79b0c0f46ff8 100644 (file)
@@ -112,6 +112,20 @@ pitchnames = \makamPitchNames
   ragged-right = ##t
 }
 
+
+makamGlyphs = #'((1 . "accidentals.doublesharp")
+       (8/9 . "accidentals.sharp.slashslashslash.stemstem")
+       (5/9 . "accidentals.sharp.slashslashslash.stem")
+       (4/9 . "accidentals.sharp")
+       (1/9 . "accidentals.sharp.slashslash.stem")
+       (0 . "accidentals.natural")
+       (-1/9 . "accidentals.mirroredflat")
+       (-4/9 . "accidentals.flat.slash")
+       (-5/9 . "accidentals.flat")
+       (-8/9 . "accidentals.flat.slashslash")
+       (-1 . "accidentals.flatflat")
+       )
+
 \relative {
 
   %{ define alteration <-> symbol mapping. The following glyphs are available.
@@ -133,21 +147,12 @@ pitchnames = \makamPitchNames
 
   %}
 
+  \override Accidental #'glyph-name-alist =  \makamGlyphs
   
-  \override Accidental #'glyph-name-alist = #'((1 . "accidentals.doublesharp")
-       (8/9 . "accidentals.sharp.slashslashslash.stemstem")
-       (5/9 . "accidentals.sharp.slashslashslash.stem")
-       (4/9 . "accidentals.sharp")
-       (1/9 . "accidentals.sharp.slashslash.stem")
-       (0 . "accidentals.natural")
-       (-1/9 . "accidentals.mirroredflat")
-       (-4/9 . "accidentals.flat.slash")
-       (-5/9 . "accidentals.flat")
-       (-8/9 . "accidentals.flat.slashslash")
-       (-1 . "accidentals.flatflat")
-       )
-
-  
+  \override Staff.KeySignature #'glyph-name-alist = \makamGlyphs
+  \set Staff.keySignature =  #'(
+    (3 .  4/9)
+    (6 . -1/9))
   
   c cc db fk gbm gfc gfb efk dfbm
 }
index 90c2adcf5054a15f9f8151e878ec8220590890ca..2c41b9a1749e05e3ae7b0257f7e83954bd4845ca 100644 (file)
@@ -164,32 +164,22 @@ Cluster::print (SCM smob)
   /*
     Across a line break we anticipate on the next pitches.
   */
-  if (spanner->original ())
+  if (Spanner *next = spanner->broken_neighbor (RIGHT))
     {
-      Spanner *orig = dynamic_cast<Spanner *> (spanner->original ());
-
-      if (spanner->get_break_index () < orig->broken_intos_.size () - 1)
+      extract_grob_set (next, "columns", next_cols);
+      if (next_cols.size () > 0)
        {
-         Spanner *next = orig->broken_intos_[spanner->get_break_index () + 1];
-         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);
-             Grob *col = next_cols[0];
-
-             Interval v = col->extent (next_commony, Y_AXIS);
-             Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord;
-
-             bottom_points.insert (bottom_points.begin (),
-                                   Offset (x, v[DOWN]));
-             top_points.insert (top_points.begin (), Offset (x, v[UP]));
-           }
+         Grob *next_commony = common_refpoint_of_array (next_cols, next, Y_AXIS);
+         Grob *col = next_cols[0];
+
+         Interval v = col->extent (next_commony, Y_AXIS);
+         Real x = right_bound->relative_coordinate (commonx, X_AXIS) - left_coord;
+
+         bottom_points.push_back (Offset (x, v[DOWN]));
+         top_points.push_back (Offset (x, v[UP]));
        }
     }
 
-  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 ();
@@ -203,9 +193,12 @@ ADD_INTERFACE (Cluster,
               "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",
+
+              /* props */
               "style "
               "padding "
-              "columns ");
+              "columns "
+              );
 
 struct Cluster_beacon
 {
index efea867822abf2b12ebab55865b6d5a5b266a2e1..c6998c5dde2c2025b677e250f82cd99d08c7a593 100644 (file)
@@ -98,7 +98,15 @@ Extender_engraver::stop_translation_timestep ()
                                                 ly_symbol2scm ("heads"), h);
            }
        }
-
+      else
+       {
+         if (pending_extender_)
+           {
+             completize_extender (pending_extender_);
+             pending_extender_ = 0;
+           }
+         
+       }
       if (extender_)
        {
          pending_extender_ = extender_;
index 7b5f2ad7bd33c4f261dde5d08604da7e38373aec..8772ceec7b0daea9b8604cae5c56ee57fe7df129 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "engraver.hh"
 
+#include "grob-array.hh"
 #include "context.hh"
 #include "item.hh"
 #include "pointer-group-interface.hh"
@@ -86,7 +87,8 @@ Note_spacing_engraver::finalize ()
 {
   if (last_spacing_
       && last_spacing_parent_context_
-      && last_spacing_parent_context_ == context ()->get_parent_context ())
+      && last_spacing_parent_context_ == context ()->get_parent_context ()
+      && !unsmob_grob_array (last_spacing_->get_object ("right-items")))
     {
       SCM ccol = get_property ("currentCommandColumn");
       Grob *column = unsmob_grob (ccol);
index 42c04b6e57f573047f922a53a634f5b50a12ce79..eaefaf786752821a525cdfa406a353cbac0e18c9 100644 (file)
   (let* ((completed (completize-formats formats))
         (base (string-regexp-substitute "\\.[a-z]+$" "" filename))
         (intermediate (remove (lambda (x) (member x formats)) completed)))
+    
     (for-each (lambda (f)
                ((eval (string->symbol (format "convert-to-~a" f))
                       module) paper-book filename)) completed)
index 786c075d683c36a015602338a25f273b1a0b7b71..8f2b1e1873a41473f75c7dbc107769d3e3511d81 100644 (file)
@@ -359,8 +359,7 @@ The syntax is the same as `define*-public'."
         (stats (gc-stats)))
     
     (list
-     (- (+ (tms:utime t)
-          (tms:stime t))
+     (- (tms:utime t)
        (ly:assoc-get 'gc-time-taken stats))
 
      ;; difficult to put memory amount stats into here.
index 89a974879e22128165354704774a373f07ef384a..6a8fcc1963eff910910707d0226c6addcd3dbb12 100644 (file)
@@ -1448,10 +1448,12 @@ def process_snippets (cmd, ly_snippets, texstr_snippets, png_snippets):
                             be_verbose=global_options.verbose, 
                             progress_p=1)
 
-    if global_options.format in (HTML, TEXINFO):
+    if global_options.format in (HTML, TEXINFO) and '--formats' not in cmd:
         cmd += ' --formats=png '
-    if global_options.format in (DOCBOOK):
+    elif global_options.format in (DOCBOOK) and '--formats' not in cmd:
         cmd += ' --formats=png,pdf '
+
+        
     # UGH
     # the --process=CMD switch is a bad idea
     # it is too generic for lilypond-book.