]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/new-part-combine-iterator.cc (construct_children): create
authorhanwen <hanwen>
Wed, 21 Jan 2004 13:58:22 +0000 (13:58 +0000)
committerhanwen <hanwen>
Wed, 21 Jan 2004 13:58:22 +0000 (13:58 +0000)
Devnull from Voice context

* scm/music-functions.scm (determine-split-list): bugfixes.

* scm/music-functions.scm (determine-split-list): determine split
list from music events.

* lily/new-part-combine-iterator.cc: more states.

ChangeLog
input/regression/new-part-combine.ly [new file with mode: 0644]
lily/horizontal-bracket.cc
lily/line-spanner.cc
lily/measure-grouping-spanner.cc
lily/new-part-combine-iterator.cc
lily/tie.cc
scm/music-functions.scm

index 5f97d1b6f42d1193a048c190f2dd5ae8438edd88..5550ee9e7eb2d1bae5bc659701a8785de5f3446a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2004-01-21  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * lily/new-part-combine-iterator.cc (construct_children): create
+       Devnull from Voice context
+
+       * scm/music-functions.scm (determine-split-list): bugfixes.
+
+       * lily/lily-guile.cc (robust_scm2int): new function
+
+       * lily/staff-symbol-referencer.cc (line_thickness): new
+       function. Use throughout.
+
+       * lily/font-size-engraver.cc (acknowledge_grob): only process grob
+       in its own context.  Add to preset font-size.
+
        * lily/stem.cc (thickness): new function.
 
        * lily/staff-symbol.cc (get_ledger_line_thickness): new function:
diff --git a/input/regression/new-part-combine.ly b/input/regression/new-part-combine.ly
new file mode 100644 (file)
index 0000000..f258691
--- /dev/null
@@ -0,0 +1,23 @@
+
+\header {
+    texidoc ="The new part combiner.
+Apart for:
+@itemize @bullet
+@item different durations (start points)
+@item different articulations (only slur/beam/tie work)
+@item wide pitch ranges
+@end itemize
+"
+    }
+
+theMusic = \context Staff \notes { c4 d8-. }
+
+
+
+vone = \notes \relative a' { g2 g    g  g4 g f' c c( c)  }
+vtwo = \notes \relative a' { f2 f4 f f2 g4 g c, f f  f   }
+
+\score {
+   \newpartcombine \vone \vtwo
+}
index ce9283060b6b221b1616e9abb62796cd2c0361ca..e9e1135a243ba7b55288f0b2334574d2a5be8829 100644 (file)
@@ -12,6 +12,7 @@
 #include "group-interface.hh"
 #include "directional-element-interface.hh"
 #include "paper-def.hh"
+#include "staff-symbol-referencer.hh"
 
 struct Horizontal_bracket
 {
index 3daaab5557711e5dfcdf76c12b77571143edbf12..211caca0eef40e7c657841caa64b84e4e6beecc6 100644 (file)
@@ -30,7 +30,7 @@ zigzag_molecule (Grob *me,
   Real dx = dz[X_AXIS];
   Real dy = dz[Y_AXIS];
 
-  Real thick = Staff_symbol_referencer::thickness (me);
+  Real thick = Staff_symbol_referencer::line_thickness (me);
   thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0); // todo: staff sym referencer? 
   
   Real staff_space = Staff_symbol_referencer::staff_space (me);
index 55a5417f4c8f3a8c353f284ec71ae6b35ec17bee..8f432c3320036c11e4efbaf6227d6f694377b4de 100644 (file)
@@ -1,16 +1,18 @@
 /*   
-measure-grouping-spanner.cc --  implement Measure_grouping
+       measure-grouping-spanner.cc --  implement Measure_grouping
 
-source file of the GNU LilyPond music typesetter
+       source file of the GNU LilyPond music typesetter
 
-(c) 2002--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+       (c) 2002--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
  */
+
 #include "paper-def.hh"
 #include "spanner.hh"
 #include "measure-grouping-spanner.hh"
 #include "lookup.hh" 
 #include "item.hh"
+#include "staff-symbol-referencer.hh"
 
 MAKE_SCHEME_CALLBACK (Measure_grouping, brew_molecule, 1);
 SCM 
@@ -22,9 +24,9 @@ Measure_grouping::brew_molecule (SCM grob)
     TODO: robustify.
    */
   SCM which = me->get_grob_property ("style");
-  SCM height = me->get_grob_property ("height");
+  Real height = robust_scm2double (me->get_grob_property ("height"), 1);
 
-  Real t = Staff_symbol_referencer::thickness (me) * robust_scm2double (me->get_grob_property ("thickness"));
+  Real t = Staff_symbol_referencer::line_thickness (me) * robust_scm2double (me->get_grob_property ("thickness"), 1);
   Grob *common = me->get_bound(LEFT)->common_refpoint (me->get_bound (RIGHT),
                                                       X_AXIS);
 
@@ -45,11 +47,11 @@ Measure_grouping::brew_molecule (SCM grob)
    */
   if (which == ly_symbol2scm ("bracket"))
     {
-      m = Lookup::bracket (X_AXIS, iv, t,-gh_scm2double (height), t);
+      m = Lookup::bracket (X_AXIS, iv, t, -height, t);
     }
   else if (which == ly_symbol2scm ("triangle"))
     {
-      m = Lookup::triangle (iv, t, gh_scm2double (height));
+      m = Lookup::triangle (iv, t, height);
     }
 
   m.align_to (Y_AXIS, DOWN);
index 328efd7572df079b8bb8fd24cef000a1546c90f0..60e5c3649b5e7e93368f73902ab30b4155e3d677 100644 (file)
@@ -75,7 +75,7 @@ New_pc_iterator::derived_mark () const
 
 void
 New_pc_iterator::derived_substitute (Translator_group*f,
-                                                Translator_group*t)
+                                    Translator_group*t)
 {
   if (first_iter_)
     first_iter_->substitute_outlet (f,t);
@@ -205,16 +205,16 @@ New_pc_iterator::construct_children ()
     =  report_to ()->find_create_translator (ly_symbol2scm ("Voice"),
                                             "shared",props);
 
-  Translator_group *null
-    =  report_to ()->find_create_translator (ly_symbol2scm ("Devnull"),
-                                            "", SCM_EOL);
-  null_.set_translator (null);
   tr->execute_pushpop_property (ly_symbol2scm ("NoteHead"),
                                ly_symbol2scm ("font-size"), gh_int2scm (3));
 
   
   shared_ .set_translator (tr); 
   set_translator (tr);
+  Translator_group *null
+    =  report_to ()->find_create_translator (ly_symbol2scm ("Devnull"),
+                                            "", SCM_EOL);
+  null_.set_translator (null);
 
   Translator_group *one = tr->find_create_translator (ly_symbol2scm ("Voice"),
                                                      "one", props);
index ab1c43868fb55380f3f517edc847bfc7976a427c..4e935c95552d435c92874ceb56df9da0714f81d7 100644 (file)
@@ -331,7 +331,7 @@ Tie::brew_molecule (SCM smob)
     }
   
   Real thick
-    = Staff_symbol_referencer::thickness (me)
+    = Staff_symbol_referencer::line_thickness (me)
     *  robust_scm2double (me->get_grob_property ("thickness"), 1);
 
   Bezier b;
index 27269d495ee6023fe46e7073ef3bca6946eb4929..cc85acb355369db9269331891b2b0180c041a69f 100644 (file)
@@ -852,28 +852,39 @@ Rest can contain a list of beat groupings
                          active1
                          active2)
 
-    (define (analyse-span-event active ev)
-      (let*
-         ((name (ly:get-mus-property ev 'name))
-          (key (cond
-                ((equal? name 'SlurEvent) 'slur)
-                ((equal? name 'TieEvent) 'tie)
-                ((equal? name 'Beam) 'beam)
-                (else #f)))
-          (sp (ly:get-mus-property ev 'span-direction)))
-
-       (if (and (symbol? key) (ly:dir? sp))
-           ((if (= sp STOP) delete! cons) key active))
-       ))
+    (define (analyse-span-events active evs)
+      (define (analyse-span-event active ev)
+       (let*
+           ((name (ly:get-mus-property ev 'name))
+            (key (cond
+                  ((equal? name 'SlurEvent) 'slur)
+                  ((equal? name 'TieEvent) 'tie)
+                  ((equal? name 'Beam) 'beam)
+                  (else #f)))
+            (sp (ly:get-mus-property ev 'span-direction)))
+
+          (if (and (symbol? key) (ly:dir? sp))
+              ((if (= sp STOP) delete! cons) key active)
+              active))
+       )
+
+      (if (pair? evs)
+         (analyse-span-events
+          (analyse-span-event active (car evs))
+          (cdr evs))
+         active
+         ))
     
     (define (get-note-evs v i)
       (define (f? x)
        (equal? (ly:get-mus-property  x 'name) 'NoteEvent))
       (filter f? (map car (what v i))))
     
-    (define (put x)
-      (set-cdr! (vector-ref result ri) x) )
+    (define (put x . index)
+      (set-cdr! (vector-ref result (if (pair? index)
+                                      (car index) ri)) x) )
 
+    (display (list ri i1 i2 active1 active2 "\n"))
     (cond
      ((= ri (vector-length result)) '())
      ((= i1 (vector-length ev1)) (put 'apart))
@@ -881,8 +892,15 @@ Rest can contain a list of beat groupings
      (else
       (let*
          ((m1 (when ev1 i1))
-          (m2 (when ev2 i2)))
-
+          (m2 (when ev2 i2))
+          (new-active1
+           (sort
+            (analyse-span-events active1 (map car (what ev1 i1)))
+            symbol<?))
+          (new-active2
+           (sort (analyse-span-events active2 (map car (what ev2 i1)))
+                 symbol<?)))
+       
        (if (not (or (equal? m1 (when result ri))
                     (equal? m2 (when result ri))))
            (begin
@@ -890,24 +908,18 @@ Rest can contain a list of beat groupings
               (list "<? M1,M2 != result :"
                     m1 m2 (when result ri)))
              (scm-error "boem")))
-
-       (set! active1
-             (sort
-              (map (lambda (x) (analyse-span-event active1  (car x)))
-                   (what ev1 i1)) symbol<?))
-       (set! active2
-             (sort (map (lambda (x) (analyse-span-event active2 (car x)))
-                        (what ev2 i2)) symbol<?))
        
        (cond
         ((ly:moment<? m1 m2)
          (put 'apart)
-         (analyse-events (1+ i1) i2 (1+ ri) active1 active2))
+         (if (> ri 0) (put 'apart (1- ri)))
+         (analyse-events (1+ i1) i2 (1+ ri) new-active1 new-active2))
         ((ly:moment<? m2 m1)
          (put 'apart)
-         (analyse-events i1 (1+ i2) (1+ ri) active1 active2))
+         (if (> ri 0) (put 'apart (1- ri)))
+         (analyse-events i1 (1+ i2) (1+ ri) new-active1 new-active2))
         (else
-         (if (not (equal? active1 active2))
+         (if (or (not (equal? active1 active2)) (not (equal? new-active2 new-active1)))
              (put 'apart)
 
              (let*
@@ -923,18 +935,17 @@ Rest can contain a list of beat groupings
                 ((> (length notes1) 1) (put 'apart))
                 ((> (length notes2) 1) (put 'apart))
                 (else
-                 (let* ((diff (ly:pitch-diff (car pitches1) (car pitches1))))
+                 (let* ((diff (ly:pitch-diff (car pitches1) (car pitches2))))
                    (if (< (ly:pitch-steps diff) chord-threshold)
                        (put 'chords)
                        (put 'apart))
                    ))))
              )
-         (analyse-events (1+ i1) (1+ i2) (1+ ri) active1 active2))
+         (analyse-events (1+ i1) (1+ i2) (1+ ri) new-active1 new-active2))
         )))))
 
 
    (analyse-events 0 0  0 '() '())
-   (display result)
    (vector->list result))