]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.1.58 release/1.1.58
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 13 Jul 1999 23:58:22 +0000 (01:58 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 13 Jul 1999 23:58:22 +0000 (01:58 +0200)
107 files changed:
Documentation/tex/lilypond-regtest.doc
NEWS
TODO
VERSION
input/test/dots.fly [new file with mode: 0644]
input/test/grace.ly
lily/abbreviation-beam.cc
lily/align-note-column-engraver.cc
lily/axis-group-engraver.cc
lily/axis-group-item.cc
lily/axis-group-spanner.cc
lily/bar-script-engraver.cc
lily/beam-engraver.cc
lily/bow.cc
lily/break-align-item.cc
lily/break.cc
lily/clef-item.cc
lily/col-info.cc
lily/collision.cc
lily/command-request.cc
lily/dot-column.cc
lily/dots.cc
lily/dynamic-engraver.cc
lily/encompass-info.cc
lily/engraver-group-engraver.cc [new file with mode: 0644]
lily/engraver-group.cc [deleted file]
lily/extender-spanner.cc
lily/gourlay-breaking.cc
lily/grace-engraver-group.cc
lily/grace-position-engraver.cc
lily/heads-engraver.cc [deleted file]
lily/hyphen-spanner.cc
lily/idealspacing.cc
lily/include/command-request.hh
lily/include/dot-column.hh
lily/include/dots.hh
lily/include/grace-engraver-group.hh
lily/include/heads-engraver.hh [deleted file]
lily/include/lily-proto.hh
lily/include/ly-symbols.hh
lily/include/note-head-side.hh
lily/include/note-head.hh
lily/include/note-heads-engraver.hh [new file with mode: 0644]
lily/include/p-col.hh [deleted file]
lily/include/p-score.hh [deleted file]
lily/include/paper-column.hh [new file with mode: 0644]
lily/include/paper-score.hh [new file with mode: 0644]
lily/include/plet-engraver.hh [deleted file]
lily/include/request-chord-iterator.hh [new file with mode: 0644]
lily/include/request-iterator.hh [deleted file]
lily/include/rest.hh
lily/include/rhythmic-head.hh
lily/include/score-column.hh
lily/include/score-element.hh
lily/include/spanner.hh
lily/include/translator-group.hh
lily/item.cc
lily/key-def.cc
lily/line-group-group-engraver.cc
lily/line-of-score.cc
lily/main.cc
lily/multi-measure-rest.cc
lily/music-iterator.cc
lily/note-head-side.cc
lily/note-head.cc
lily/note-heads-engraver.cc [new file with mode: 0644]
lily/p-col.cc
lily/p-score.cc [deleted file]
lily/paper-def.cc
lily/paper-score.cc [new file with mode: 0644]
lily/request-chord-iterator.cc [new file with mode: 0644]
lily/request-iterator.cc [deleted file]
lily/rest.cc
lily/rhythmic-head.cc
lily/rod.cc
lily/score-column.cc
lily/score-element.cc
lily/score-engraver.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/sequential-music-iterator.cc
lily/single-malt-grouping-item.cc
lily/slur-engraver.cc
lily/slur.cc
lily/spacing-engraver.cc
lily/spacing-spanner.cc
lily/spanner.cc
lily/spring-spacer.cc
lily/spring.cc
lily/staff-sym-engraver.cc
lily/stem.cc
lily/super-element.cc
lily/tie.cc
lily/translator-group.cc
lily/tuplet-spanner.cc
lily/vertical-align-engraver.cc
lily/volta-spanner.cc
lily/word-wrap.cc
ly/declarations.ly
ly/engraver.ly
ly/generic-paper.ly [new file with mode: 0644]
ly/paper16.ly
ly/paper20.ly
ly/params.ly
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec

index a92910cdeebf5aae4d8efb0ece2e238d13cf9869..611478d23ad7e4add3c8f59f67b4a3ca9616298c 100644 (file)
@@ -24,6 +24,14 @@ you must create a special context called Thread.
 
 \mudelafile{noteheadstyle.ly}
 
+Noteheads can have dots, and ---although this is bad style--- rests
+can too.  Augmentation dots should never be printed on a staff line,
+but rather be shifted: down stem notes shift dots down, up stem up.
+In case of chords, all dots should be in a column.  The dots go along
+as  rests are shifted to avoid collisions.
+
+\mudelafile{dots.fly}
+
 Multiple measure rests do not collide with barlines and clefs.  They
 are not expanded when you set \verb+Score.SkipBars+.  Although the
 multi-measure-rest is a Spanner, minimum distances are set to keep it
@@ -47,10 +55,12 @@ point) are mixed.
 \section{Grace notes}
 
 Grace notes are typeset as an encapsulated piece of music. You can
-have beams, notes, chords, stems etc. within a \verb|\grace|
-section. Slurs that start within a grace section, but aren't ended are
-attached to the next normal note.  Grace notes have zero duration.  If
-there are tuplets, the grace notes won't be under the brace.
+have beams, notes, chords, stems etc. within a \verb|\grace| section.
+Slurs that start within a grace section, but aren't ended are attached
+to the next normal note.  Grace notes have zero duration.  If there
+are tuplets, the grace notes won't be under the brace.  Grace notes
+can have accidentals, but they are (currently) spaced at a fixed
+distance.
 
 
 
diff --git a/NEWS b/NEWS
index 2a01616cca058639b7df458518aa8844aacc94b1..cc7169ce80e81d7b54739fc6d31f5d263b92a324 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,34 @@
+pl 57.hwn1
+       - bf: accidentals on grace notes.
+       - \property graceAccidentalSpace
+       - bf: ignore grace notes duration for non-grace spacing.
+       - uncommented Key_req::transpose.
+       - Dot_column::do_post_processing (): better dot collisions, see dots.fly.
+       - derive Dot_column from Note_side_item.
+       - renaming of files
+         * heads-engraver
+         * request-iterator
+         * p-score
+         * engraver-group
+
+pl 57.jcn3
+       - bf: no extension: assume .ly
+       - bf: bow::do_width; which in turn allowed
+       - removed broken interstaff slur damping hack, and
+       - bf: slur height damping fixes damping
+
+pl 57.jcn2
+       - bf: ? priority and snap to stem
+
+pl 56.jcn4
+       - interstaff slur fixes and damping
+
+pl 56.mk1
+       - bf: collision.cc: collisions between chords with different
+         stem directions and close heads.
+
+****************s**************
+
 pl 56.jcn3
        - slur de-hairification
          * slurs always attached to noteheads, by default
@@ -272,7 +303,7 @@ pl 49.uu1
        - bf: linebreak at |:
        - doc updates by Adrian Mariano
 
-pl 49-rst
+pl 49.mk1
        - Breathing signs by Michael Krause
 
 ************
diff --git a/TODO b/TODO
index e95bd85eda6075ec4ef4e9cf9b5205ae15f8404f..92e9b48a21fd665ca7ccc568b2409a2d34d6f7db 100644 (file)
--- a/TODO
+++ b/TODO
@@ -10,48 +10,31 @@ Grep for TODO and ugh/ugr/urg.
 
 .* TODO before 1.2
 . * rename 'staff_line_leading' (who is being lead where?) to
-staff_space, interline; (or other meaningful name) and use throughout lily
-. * rename files to class-name:
-.  * heads-engraver
-.  * request-iterator
-.  * p-score
-.  * engraver-group
-. * standardise(d) switches: -v, --version; -d, --debug,
-. * Peter    1.  Key signatures are no longer transposed with the rest
-    of
-        the music.
-
-                \notes\transpose bes  {\key D; d1 }
-        should produce no key signature (key C)
-
-        2.  Crescendos and other dynamic markings that start inside a
-        \grace { } section are ignored.
+staff_space, interline; (or other meaningful name) and use throughout
+lily
 
-        \notes \relative c' { fis4 r4   \grace { [g16 ( \<   a16] }
-        ) b4 \! a8. g16}
+[-> leading are the lead strips between the sticks (lines) of
+typeface. ie. leading is vertical space  --hwn]
 
-        3.  Slurs that end within a grace section but start outside
-        are treated strangely.
-        a2 d,4 ( \grace { [e16 ) d16]} cis8 d
-
-
-        4.  Lyrics and grace sections don't go too well together.
+. * move \version check to lexer.ll
+. * junk delayed spanner breaking.
+. * check dangling_scm_sym working.
+. * revise pianobrace to put font stuff into Lookup
+. * standardise(d) switches: -v, --version; -d, --debug,
+. * spacing of accidentals
+. * restorations & repeats
+. * dotted rests?
+. * input/test/grace.ly spacing (triplet!)
+. * spanners from grace to  normal ctxt
+.* 4.  Lyrics and grace sections don't go too well together.
         The words are aligned with the main note, not the start of the
         grace note.  This is usually wrong, but is sometimes right.
-
-
 . * Auto_beam debugging output (waarom/wanneer heb jij die weggehaald?)
 .  * Rename illegal to invalid
 .  * Mats:
 
 - The Postscript output is still very experimental
 
-- The reference manual contain a number of exampels that don't
-  pass lilypond, among other the chord syntax.
-
-- Accidentals for grace notes are drawn at the wrong place. See
-  comment in grace.ly
-
 - It is impossible to typeset two textual scripts that are stacked
   on top of eachother and avoids note collisions and at the same
   time are typeset with different textStyle. I tried to move around
@@ -63,9 +46,6 @@ staff_space, interline; (or other meaningful name) and use throughout lily
   be stacked vertically, avoiding collisions with the notes
   in all voices.
 
-- If an \alternative is directly followed by a new \repeat, 
-  Lily gives an assertion failure. See the comment in volta.fly
-
 - I'd like to change the \repetitions command to Jan's suggested
   syntax: \repeat "repeatsymbol" 2 {...}, but I'm not sure that
   I understand the implementation of repeats well enough.
@@ -83,38 +63,6 @@ staff_space, interline; (or other meaningful name) and use throughout lily
 GIFs attached for easy reference: #1: time meter and first note on the
 line are too close; #2: last note on the line and next bar are too
 close.
-
-- And I haven't got any feedback on this one, posted last week:
-
-Check out:
-
-\score {
-  \notes \relative c' {
-    \context Staff <
-      \context Voice = one { \stemdown c1 c4 }
-      \context Voice = two { \stemup d1 d4 }
-    >
-  }
-}
-
-Notes are shifted as expected. Now check out:
-
-\score {
-  \notes \relative c' {
-    \context Staff <
-      \context Voice = one { \stemdown c1 <a4 c4> }
-      \context Voice = two { \stemup d1 d4 }
-    >
-  }
-}
-
-i.e. do 
-
--      \context Voice = one { \stemdown c1 c4 }
-+      \context Voice = one { \stemdown c1 <a4 c4> }
-
-Now the chord collides with the note of the other voice!
-
 . * relative mode for midi2ly
 . * 
 Crescendi/diminuendi that cross a line break lose their vertical
@@ -153,15 +101,12 @@ following example.
 . * formatting of input stuff. 
 .  * deps for ly2dvi
 . * decide wether to junk _ in lyrics. 
-. * sane strategy for extensions (assume .ly):
-02:22:24 appel ~/usr/src/lilypond$ lilypond foo
-GNU LilyPond 1.1.54.
-[/home/fred/usr/src/lilypond/scm/lily.scm]
-warning: can't find file: `init'
 . * indent = 0.0 with linewidth=-1.0
 . * collisions & accidentals.
-. * auto-beaming in input/test/spacing.ly.
-huh, snap niks van: gewone beam gaat wel goed.  hoe kan abe nu
+. * auto-beaming in input/test/spacing.ly:
+Non-finished auto-beams (consider_end_and_begin didn't decide to
+end beam), that get typeset in removal_processing (eg: end of a piece)
+Huh, snap niks van: gewone beam gaat wel goed.  hoe kan abe nu
 invloed hebben op beam-creatie, stopt toch gewoon stokken in?
 . * music ending in grace notes.
 . * PostScript
@@ -307,7 +252,6 @@ repeated section with different words for each repeat.
 . * disable spaces in TeX stuff
 . * handle ^C for tmp/file creation.
 . * make LilyPond RPM fully relocatable
-. * dots & rest collisions.
 . * the warning about the negative slur/tie length appears twice
 which is irritating.
 . * better hshift (dots, distance, head dependent)
@@ -641,11 +585,3 @@ hesitate to ask.
 (require 'allout)
 (outline-init 't)
 
-+ pl 56.jcn3
-+      - slur de-hairification
-+        * slurs always attached to noteheads, by default
-+        * corrections for steep and high slurs
-+        * snap to stem end when close
-+      - bow/tie/slur dy/dx fix
-+ 
-+ 
diff --git a/VERSION b/VERSION
index 4cfbcaff7bd172a380178bda5e32f733f2c18642..0e9fb9aa7bd458399e036a65968cb969120180c9 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=1
-PATCH_LEVEL=57
+PATCH_LEVEL=58
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
diff --git a/input/test/dots.fly b/input/test/dots.fly
new file mode 100644 (file)
index 0000000..a111a6d
--- /dev/null
@@ -0,0 +1,9 @@
+
+d''4. b c4 | <b4. c d e>  <f g a b>
+%This doesn't really work yet.
+
+\context Staff <
+       \context Voice = VA { \stemup <b c> r4.  }
+       \context Voice = VB { \stemdown <a b> r4. }
+>
+
index 2155314bed2e3fa24c800843e8e95a0e98c1e401..3c8c8c9030c47a99bd34d81144d4a96c14403607 100644 (file)
@@ -3,7 +3,8 @@
        \grace c8 c4
        \grace { [c32 cis32] } c4
        \grace { [c32 c32] } \times 2/3 { [c8 c c] }    
-        \grace { [b32 ( c32] } c4
+        \grace { [b32 ( c32] } c4
        \grace c16 [c8 c8]
 }
+\paper {linewidth = -1.;}
 }
index 3bf92b841b0c5d6cd99e62c9bddd74974fb8da08..b0307f2e6f07fcf649b3aca969eca254e6ef0a51 100644 (file)
@@ -7,7 +7,7 @@
           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "array.hh"
 #include "proto.hh"
 #include "abbreviation-beam.hh"
index 3c1ff77b427fda56fd0954bfcc778956d62490be..4e00da684007c3774cd6a761246147e155c5a946 100644 (file)
@@ -10,6 +10,8 @@
 #include "engraver.hh"
 #include "grace-align-item.hh"
 #include "note-column.hh"
+#include "local-key-item.hh"
+#include "warn.hh"
 
 /**
    catch notes, and put them in a row.
 class Align_note_column_engraver: public Engraver
 {
   Axis_align_item * align_item_p_;
+  Note_column * now_column_l_;
+  Local_key_item * accidental_l_;
+
+  virtual void process_acknowledged ();
+  virtual void do_post_move_processing ();
   virtual void do_creation_processing ();
   virtual void do_removal_processing ();
   virtual void acknowledge_element (Score_element_info);
@@ -28,6 +35,8 @@ public:
 Align_note_column_engraver::Align_note_column_engraver()
 {
   align_item_p_ =0;
+  now_column_l_ =0;
+  accidental_l_ =0;
 }
 
 void
@@ -50,8 +59,47 @@ Align_note_column_engraver::acknowledge_element (Score_element_info inf)
 {
   if (Note_column * n = dynamic_cast<Note_column*> (inf.elem_l_))
     {
-      align_item_p_->add_element (n);
+      now_column_l_ =n;
+    }
+  else if (Local_key_item * it = dynamic_cast<Local_key_item*> (inf.elem_l_))
+    {
+      accidental_l_ = it;
+    }
+}
+void
+Align_note_column_engraver::process_acknowledged ()
+{
+  if (now_column_l_ && accidental_l_)
+    {
+      
+      /* Can't inspect  width of Local_key_item, since
+
+        A. it may not be fully built
+
+        B. it has no pscore_l_ field.
+
+      */
+      Scalar grsp = get_property ("graceAccidentalSpace", 0);
+      if (grsp.isnum_b ())
+       {
+         Real extra_space = double(grsp);
+         SCM e = gh_cons (gh_double2scm (-extra_space), gh_double2scm (0.0));
+         now_column_l_->set_elt_property (extra_space_scm_sym, e);
+       }
+    }
+
+  if (now_column_l_)
+    {
+      align_item_p_->add_element (now_column_l_);
+      now_column_l_ =0;
     }
 }
 
+void
+Align_note_column_engraver::do_post_move_processing ()
+{
+  now_column_l_ =0;
+  accidental_l_ =0;
+}
+
 ADD_THIS_TRANSLATOR(Align_note_column_engraver);
index 44b85b416e7ac3fc5e7b9a2463ce92bd4dc246f1..a3bf9111fd60ae623368bf889fb73463c407d813 100644 (file)
@@ -8,7 +8,7 @@
 
 #include "axis-group-engraver.hh"
 #include "axis-group-spanner.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 Axis_group_engraver::Axis_group_engraver ()
 {
index 65570d0623698ec725ef0583e423da70dd5a7315..b43f07e270476716a6267c1e73bac1366128cfed 100644 (file)
@@ -6,7 +6,7 @@
   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "axis-group-item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 
 
index b625c6c6b3dcba2916213f0fbafba461e64d697e..aed0954e4738e7d09eeb325f0060ce234fbfeb2e 100644 (file)
@@ -9,7 +9,7 @@
 #include "axis-group-spanner.hh"
 #include "debug.hh"
 #include "item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 /** Do stuff if we're not broken. In this case the last and first
   columns usually are pre- and postbreak respectively,
index b319bdc4bcb8ea05af4187d9725fc266f129d9b9..086f6bd62fc4f7cb02c8ba5f30ef034bf7b004be 100644 (file)
@@ -13,7 +13,7 @@
 #include "staff-side.hh"
 #include "text-item.hh"
 #include "lily-guile.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "paper-def.hh"
 
 Bar_script_engraver::Bar_script_engraver ()
@@ -61,6 +61,7 @@ Bar_script_engraver::do_acknowledge_element (Item *i)
        How do we make sure that staff_side_p_ has a dependency from
        someone else? We can't use i for that,  so we use some other element.
        */
+      // staff_side_p_->set_elt_property (dangling_scm_sym, SCM_BOOL_T)
       get_staff_info ().command_pcol_l ()->add_dependency (staff_side_p_);
     }
 }
index 849163e5be9b043e5f17264886cc8eb2f53e1f06..608167f01bfddc6ea6d2ab12d8b120fa450a7ea6 100644 (file)
@@ -180,7 +180,6 @@ Beam_engraver::acknowledge_element (Score_element_info info)
          return;
        }
       
-
       if (rhythmic_req->duration_.durlog_i_<= 2)
        {
          rhythmic_req->warning (_ ("stem doesn't fit in beam"));
index a3ac0bf073f7220d8fe04e155a36bc9f58821732..588c7f9c74f85261aef863b0dc8a41aafd0896c6 100644 (file)
@@ -70,7 +70,7 @@ Bow::do_height () const
   Array<Offset> c (get_controls());
   for (int i=0; i < c.size (); i++)
     {
-      Real y = c[i][Y_AXIS] + dy_f_drul_[LEFT];
+      Real y = c[i][Y_AXIS];
       iv.unite (Interval (y,y));
     }
   return iv;
index d8e284a388584162f8860d4edd86d0e0d6fda259..5f5079dad550320239e4733f208a3ec4ddfc85d9 100644 (file)
@@ -9,9 +9,9 @@
 #include "lily-guile.hh"
 #include "break-align-item.hh"
 #include "dimensions.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "paper-def.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 
 /*
index f362ef5ff1f773df9a4dbd30828431aab8b86824..8291f81a2372de3c28679f6860dcfad85991a8fd 100644 (file)
@@ -12,8 +12,8 @@
 #include "spring-spacer.hh"
 #include "debug.hh"
 #include "line-of-score.hh"
-#include "p-score.hh"
-#include "p-col.hh"
+#include "paper-score.hh"
+#include "paper-column.hh"
 #include "cpu-timer.hh"
 #include "command-request.hh"
 
index 1e8ce2dae977f49ceb08d04f33c8d3faecff2db8..208365788a49d290632358149902733646f8f3ea 100644 (file)
@@ -13,7 +13,7 @@
 #include "paper-def.hh"
 #include "lookup.hh"
 #include "text-item.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 
 void
 Clef_item::do_pre_processing()
index fa87a8f65396ede486210bdb89d5646ba04fb372..47d9c69c33f26bb8d9abcfd659ec97bf9115fd88 100644 (file)
@@ -6,7 +6,7 @@
   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "col-info.hh"
 #include "debug.hh"
 
index 1ddff7d2f7cc3f880b3edcc1dc967453e8b52dbf..a252a633d3448261036db905106c3c57ca40e303 100644 (file)
@@ -114,8 +114,8 @@ Collision::do_pre_processing()
       Note_column *cd_l =clash_groups[DOWN][0];
       Note_head * nu_l= cu_l->head_l_arr_[0];
       Note_head * nd_l = cd_l->head_l_arr_.top();
-      int downpos =    cd_l->head_positions_interval ()[SMALLER];
-      int uppos =      cu_l->head_positions_interval ()[BIGGER];      
+      int downpos =    cd_l->head_positions_interval ()[BIGGER];
+      int uppos =      cu_l->head_positions_interval ()[SMALLER];      
       
       bool merge  =
        downpos == uppos
index 7ce3b9fd6cc8f4a56457353abd91eff53de441b2..218d283f1bce04f2e4f94c26763f218594c18098 100644 (file)
@@ -170,3 +170,11 @@ Mark_req::do_print () const
 {
   DOUT << str_;
 }
+void
+Key_change_req::transpose (Musical_pitch p)
+{
+  key_.transpose (p);
+}
+
+
+                          
index b673b77092de22500c2a77fbef8c8d56658ba2ea..4bcaff4a67f69c2f2102f252b3fd52c019de3243 100644 (file)
@@ -23,39 +23,60 @@ Dot_column::add_head (Rhythmic_head *r)
 {
   if (!r->dots_l_)
     return ;
-  
-  head_l_arr_.push (r);
-  add_dependency (r);
+
+  add_support (r);
   add_dots (r->dots_l_);
 }
 
 void
 Dot_column::do_substitute_element_pointer (Score_element*o,Score_element*n)
 {
-  Item *oi =dynamic_cast <Item *> (o);
-  
-  if (oi && dynamic_cast<Rhythmic_head *> (oi))
-    head_l_arr_.substitute (dynamic_cast<Rhythmic_head*> (oi),
-                           dynamic_cast<Rhythmic_head*>(n));
-  else if (oi && dynamic_cast<Dots *> (oi))
-    dot_l_arr_.substitute (dynamic_cast<Dots*> (oi),
-                          dynamic_cast<Dots*> (n));
+  Note_head_side::do_substitute_element_pointer (o,n);
+  if (Dots * d = dynamic_cast<Dots*> (o))
+    dot_l_arr_.substitute (d, dynamic_cast<Dots*> (n));
+}
+
+int
+Dot_column::compare (Dots * const &d1, Dots * const &d2)
+{
+  return d1->position_i_ - d2->position_i_;
 }
 
 void
 Dot_column::do_pre_processing ()
 {
-  Interval w;
-  for (int i=0; i < head_l_arr_.size (); i++)
-    w.unite (head_l_arr_[i]->extent (X_AXIS));
-  
-  if (!w.empty_b ())
-    translate_axis (w[RIGHT] - extent(X_AXIS) [LEFT],X_AXIS);
+  dot_l_arr_.sort (Dot_column::compare);
+  Note_head_side::do_pre_processing ();
 }
 
-
-
 Dot_column::Dot_column ()
 {
+  align_dir_ = RIGHT;
   set_axes(X_AXIS,X_AXIS);
 }
+
+void
+Dot_column::do_post_processing ()
+{
+  if (dot_l_arr_.size () < 2)
+    return;
+  Slice s;
+  s.set_empty ();
+  
+  for (int i=0; i < dot_l_arr_.size (); i++)
+    {
+      s.unite (Slice (dot_l_arr_[i]->position_i_,dot_l_arr_[i]->position_i_));      
+    }
+  int  middle = s.center ();
+  /*
+    +1 -> off by one 
+   */
+  int pos = middle - dot_l_arr_.size () + 1;
+  if (!(pos % 2))
+    pos ++;                    // center () rounds down.
+
+  for (int i=0; i  <dot_l_arr_.size (); pos += 2, i++)
+    {
+      dot_l_arr_[i]->position_i_ = pos;
+    }
+}
index 6d9af00dd2fe8ae1dc2b8788f73db1b4682aa71c..e81108b0c607a75fc6ce02c380140b59ae6bf8d7 100644 (file)
 
 Dots::Dots ()
 {
-  no_dots_i_ =0;
+  dots_i_ =0;
   position_i_ =0;
+  resolve_dir_ =CENTER;
 }
 
 void
 Dots::do_post_processing ()
 {
+  if (!resolve_dir_)
+    resolve_dir_ = DOWN;
+  
   if (!(position_i_ % 2))
-    position_i_ ++;
-  if (!no_dots_i_)
+    position_i_ += resolve_dir_;
+  if (!dots_i_)
     {
       set_elt_property (transparent_scm_sym, SCM_BOOL_T);
       set_empty (true);
@@ -41,7 +45,7 @@ Dots::do_brew_molecule_p () const
 
   Real dw = d.dim_[X_AXIS].length ();
   d.translate_axis (-dw, X_AXIS);
-  for (int i=no_dots_i_; i--; )
+  for (int i=dots_i_; i--; )
     {
       d.translate_axis (2*dw,X_AXIS);
       out->add_molecule (d);
index 833e40c83b8982268254e0ae7f2fdc3371b9f501..0d6b61ae257b757cc047382282120221b0d2cda7 100644 (file)
@@ -178,6 +178,8 @@ Dynamic_engraver::do_process_requests()
              new_sss_p = new Staff_side_spanner;
              new_sss_p->set_victim (new_cresc_p);
              new_sss_p->axis_ = Y_AXIS;
+             // UGH.!
+             // new_sss_p->set_elt_property (dangling_scm_sym, SCM_BOOL_T);
              announce_element (Score_element_info (new_sss_p, span_l));
            }
        }
index 8dd95437d4d7cf1a78176fddd419517ff67b4d14..b5fbcf56fee0af6136a908a75310ca618b182a7c 100644 (file)
@@ -20,7 +20,6 @@
 
 Encompass_info::Encompass_info ()
 {
-  assert (0);
 }
 
 Encompass_info::Encompass_info (Note_column const* note_column, Direction dir, Slur const* slur_l)
@@ -37,37 +36,12 @@ Encompass_info::Encompass_info (Note_column const* note_column, Direction dir, S
   
   o_[X_AXIS] = stem_l->hpos_f ();
 
-#if 0
-  /* 
-    Let's not do this; yields ugly assymetric slurs.
-
-    set o_[X_AXIS] to middle of notehead or on the exact position of stem,
-    according to slur direction
-
-    
-     stem_l->dir == dir
-                      ________
-           |   |     /        \
-          x|  x|       |x  |x
-        \________/     |   |
-
-   */
-
-  dx_f_drul_[d] = -d * spanned_drul_[d]->extent (X_AXIS).length ();
-
-  if (stem_l->dir_ != dir)
-    o_[X_AXIS] -= 0.5 * stem_l->dir_ * note_column->extent (X_AXIS).length ();
-
-#else
-
   /*
-    Instead; simply set x to middle of notehead
+    Simply set x to middle of notehead
    */
 
   o_[X_AXIS] -= 0.5 * stem_l->dir_ * note_column->extent (X_AXIS).length ();
 
-#endif
-
   if (stem_l->dir_ == dir)
     {
       o_[Y_AXIS] = stem_l->extent (Y_AXIS)[dir];
diff --git a/lily/engraver-group-engraver.cc b/lily/engraver-group-engraver.cc
new file mode 100644 (file)
index 0000000..8420c7f
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+  engravergroup.cc -- implement Engraver_group_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "proto.hh"
+#include "engraver-group-engraver.hh"
+#include "engraver.hh"
+#include "debug.hh"
+#include "paper-score.hh"
+#include "score-element.hh"
+
+
+ADD_THIS_TRANSLATOR(Engraver_group_engraver);
+
+void
+Engraver_group_engraver::announce_element (Score_element_info info)
+{
+  announce_info_arr_.push (info);
+  Engraver::announce_element (info);
+}
+
+void
+Engraver_group_engraver::do_announces()
+{
+  Link_array<Translator_group> groups = group_l_arr ();
+  for (int i=0; i < groups.size(); i++) 
+    {
+      Engraver_group_engraver * group = dynamic_cast<Engraver_group_engraver*> (groups[i]);
+      if (group)
+       {
+         group->do_announces();
+       }
+    }
+  
+  Request dummy_req;
+
+  Link_array<Translator> nongroups = nongroup_l_arr ();
+  while (announce_info_arr_.size ())
+    {
+      for (int j =0; j < announce_info_arr_.size(); j++)
+       {
+         Score_element_info info = announce_info_arr_[j];
+         
+         if (!info.req_l_)
+           info.req_l_ = &dummy_req;
+         for (int i=0; i < nongroups.size(); i++) 
+           {   // Is this good enough?
+             Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
+             if (eng && eng!= info.origin_trans_l_arr_[0])
+               eng->acknowledge_element (info);
+           }
+       }
+      announce_info_arr_.clear ();
+      for (int i=0; i < nongroups.size(); i++)
+       {
+         Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
+         if (eng)
+           eng->process_acknowledged ();
+       }
+
+    }
+}
+
+
+Staff_info
+Engraver_group_engraver::get_staff_info() const
+{
+  Staff_info inf = Engraver::get_staff_info();
+
+  Link_array<Translator> simple_translators = nongroup_l_arr (); 
+  for (int i=0; i < simple_translators.size(); i++)
+    {
+    Engraver * eng = dynamic_cast<Engraver*> (simple_translators[i]);
+    if (eng)
+      eng->fill_staff_info (inf);
+    }
+  return inf;
+}
+
+
+
diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc
deleted file mode 100644 (file)
index 4636dca..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
-  engravergroup.cc -- implement Engraver_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "proto.hh"
-#include "engraver-group-engraver.hh"
-#include "engraver.hh"
-#include "debug.hh"
-#include "p-score.hh"
-#include "score-element.hh"
-
-
-ADD_THIS_TRANSLATOR(Engraver_group_engraver);
-
-void
-Engraver_group_engraver::announce_element (Score_element_info info)
-{
-  announce_info_arr_.push (info);
-  Engraver::announce_element (info);
-}
-
-void
-Engraver_group_engraver::do_announces()
-{
-  Link_array<Translator_group> groups = group_l_arr ();
-  for (int i=0; i < groups.size(); i++) 
-    {
-      Engraver_group_engraver * group = dynamic_cast<Engraver_group_engraver*> (groups[i]);
-      if (group)
-       {
-         group->do_announces();
-       }
-    }
-  
-  Request dummy_req;
-
-  Link_array<Translator> nongroups = nongroup_l_arr ();
-  while (announce_info_arr_.size ())
-    {
-      for (int j =0; j < announce_info_arr_.size(); j++)
-       {
-         Score_element_info info = announce_info_arr_[j];
-         
-         if (!info.req_l_)
-           info.req_l_ = &dummy_req;
-         for (int i=0; i < nongroups.size(); i++) 
-           {   // Is this good enough?
-             Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
-             if (eng && eng!= info.origin_trans_l_arr_[0])
-               eng->acknowledge_element (info);
-           }
-       }
-      announce_info_arr_.clear ();
-      for (int i=0; i < nongroups.size(); i++)
-       {
-         Engraver * eng = dynamic_cast<Engraver*> (nongroups[i]);
-         if (eng)
-           eng->process_acknowledged ();
-       }
-
-    }
-}
-
-
-Staff_info
-Engraver_group_engraver::get_staff_info() const
-{
-  Staff_info inf = Engraver::get_staff_info();
-
-  Link_array<Translator> simple_translators = nongroup_l_arr (); 
-  for (int i=0; i < simple_translators.size(); i++)
-    {
-    Engraver * eng = dynamic_cast<Engraver*> (simple_translators[i]);
-    if (eng)
-      eng->fill_staff_info (inf);
-    }
-  return inf;
-}
-
-
-
index 541080b60be4bc8071e005a5489d0a4e66f876ae..dc7f4c22aa4e2792164328f681fb02909d947e7a 100644 (file)
@@ -15,7 +15,7 @@
 #include "debug.hh"
 #include "lookup.hh"
 #include "molecule.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "paper-def.hh"
 #include "extender-spanner.hh"
 
index 01f2860d4d64a71140f41cda2d70b9697a6797c9..284f1e83b308063b72ff938cf8c31a5ead2d1d04 100644 (file)
@@ -10,8 +10,8 @@
 #include "colhpos.hh"
 #include "spring-spacer.hh"
 #include "debug.hh"
-#include "p-col.hh"
-#include "p-score.hh"
+#include "paper-column.hh"
+#include "paper-score.hh"
 #include "paper-def.hh"
 
 #include "killing-cons.tcc"
index 8a9db8b171b40d5df4293f41e56baa3bc3515073..220b8c82f37a22818b3bd2047e2831681e4016c1 100644 (file)
@@ -10,6 +10,7 @@
 #include "lily-guile.hh"
 #include "ly-symbols.hh"
 #include "score-element.hh"
+#include "musical-request.hh"
 
 void
 Grace_engraver_group::start ()
@@ -99,12 +100,23 @@ ADD_THIS_TRANSLATOR(Grace_engraver_group);
 bool
 Grace_engraver_group::do_try_music (Music *m)
 {
-  bool hebbes_b =false;
+  bool hebbes_b = try_music_on_nongroup_children (m);
 
-  Link_array<Translator> nongroups (nongroup_l_arr ());
-  
-  for (int i =0; !hebbes_b && i < nongroups.size() ; i++)
-    hebbes_b =nongroups[i]->try_music (m);
+  if (!hebbes_b && pass_to_top_b (m))
+    {
+      hebbes_b = daddy_trans_l_->try_music (m);
+    }
 
   return hebbes_b;
 }
+
+bool
+Grace_engraver_group::pass_to_top_b (Music *m) const
+{
+  if (Span_req * sp = dynamic_cast<Span_req*> (m))
+    {
+      if (sp->span_type_str_ == "slur")
+       return true;
+    }
+  return false;
+}
index 189c2e54d821490ae11414eb42e14d5de02f1291..3d0295f0179ed7a9114c9d2414fe860c01edb8ee 100644 (file)
@@ -44,7 +44,10 @@ Grace_position_engraver::acknowledge_element (Score_element_info i)
     }
   else if (Local_key_item*it = dynamic_cast<Local_key_item*>(i.elem_l_))
     {
-      support_.push (it);
+      if (it->get_elt_property (grace_scm_sym) == SCM_BOOL_F)
+       support_.push (it);
+      else if (align_l_) 
+       it->add_dependency (align_l_);
     }
 }
 
diff --git a/lily/heads-engraver.cc b/lily/heads-engraver.cc
deleted file mode 100644 (file)
index fee3bd4..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-  head-grav.cc -- part of GNU LilyPond
-
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "note-head.hh"
-#include "heads-engraver.hh"
-#include "paper-def.hh"
-#include "musical-request.hh"
-#include "dots.hh"
-#include "dot-column.hh"
-
-Note_heads_engraver::Note_heads_engraver()
-{
-}
-
-bool
-Note_heads_engraver::do_try_music (Music *m) 
-{
-  if (Note_req * n =dynamic_cast <Note_req *> (m))
-    {
-      note_req_l_arr_.push (n);
-      return true;
-    }
-  if (Tonic_req* t = dynamic_cast<Tonic_req*> (m))
-    {
-      return true;
-    }
-  return false;
-}
-
-void
-Note_heads_engraver::do_process_requests()
-{
-  if (note_p_arr_.size ())
-    return ;
-  
-  String noteheadstyle = get_property ("noteHeadStyle", 0);
-  for (int i=0; i < note_req_l_arr_.size (); i++)
-    {
-      Note_head *note_p  = new Note_head;
-      Note_req * note_req_l = note_req_l_arr_[i];
-      note_p->balltype_i_ = note_req_l->duration_.durlog_i_;
-      note_p->dots_i_ = note_req_l->duration_.dots_i_;
-      if (note_p->dots_i_)
-       {
-         Dots * d = new Dots;
-         note_p->dots_l_ = d;
-         announce_element (Score_element_info (d,0));
-         dot_p_arr_.push (d);
-       }
-
-      //      note_p->steps_i_ = note_req_l->pitch_.steps ();
-      note_p->position_i_ = note_req_l->pitch_.steps ();
-
-
-      if (noteheadstyle == "transparent")
-       note_p->set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-      else 
-        note_p->set_elt_property (style_scm_sym,
-                                 gh_str02scm (noteheadstyle.ch_C()));
-
-      
-      Score_element_info itinf (note_p,note_req_l);
-      announce_element (itinf);
-      note_p_arr_.push (note_p);
-    }
-}
-void
-Note_heads_engraver::do_pre_move_processing()
-{
-  for (int i=0; i < note_p_arr_.size (); i++)
-    {
-      typeset_element (note_p_arr_[i]);
-    }
-  note_p_arr_.clear ();
-  for (int i=0; i < dot_p_arr_.size (); i++)
-    {
-      typeset_element (dot_p_arr_[i]);
-    }
-  dot_p_arr_.clear ();
-  
-  note_req_l_arr_.clear ();
-}
-
-void
-Note_heads_engraver::do_post_move_processing()
-{
-
-}
-
-
-
-ADD_THIS_TRANSLATOR(Note_heads_engraver);
index 8636dbb7560efe3c2c4fbacfa797a2c0882917fa..990c24884b4cea53cd088063f1a5f98cf2884cb0 100644 (file)
@@ -17,7 +17,7 @@
 #include "debug.hh"
 #include "lookup.hh"
 #include "molecule.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "paper-def.hh"
 #include "hyphen-spanner.hh"
 
index 3e3859a0c75f2e8d68a9fbab22ef791500fe2cf7..780c224bdf74d821140a093c11ec48f1cb94cce1 100644 (file)
@@ -7,8 +7,8 @@
 */
 
 #include "idealspacing.hh"
-#include "p-col.hh"
-#include "p-score.hh"
+#include "paper-column.hh"
+#include "paper-score.hh"
 #include "debug.hh"
 
 void
index 47507b8c3c23581507344cb9ace51ff237e2631a..d7553339edc15ee19b3551b3d54a4ede72783064 100644 (file)
@@ -133,7 +133,7 @@ public:
 
 protected:
   VIRTUAL_COPY_CONS(Music);
-  //  void transpose (Musical_pitch  d);
+  void transpose (Musical_pitch  d);
   virtual void do_print () const;
 };
 
index 374181e0142fa0ceb2c7f5821fb51811ad679bfc..3562441c8ae758b93798a1be498db97980a20b36 100644 (file)
 #define DOT_COLUMN_HH
 
 #include "axis-group-item.hh"
+#include "note-head-side.hh"
 
 /**
   Group dots.  This is needed because, the dots have to be aligned per voice
  */
-class Dot_column : public Axis_group_item
+class Dot_column : public Axis_group_item, public Note_head_side
 {
-  Link_array<Rhythmic_head> head_l_arr_;
   Link_array<Dots> dot_l_arr_;
-
+  static int compare (Dots * const&,Dots * const&);
 public:
-  
+  VIRTUAL_COPY_CONS (Score_element);
   void add_head (Rhythmic_head*);
   void add_dots (Dots*);
   Dot_column ();
+
 protected:
+
   virtual void do_pre_processing ();
+  virtual void do_post_processing ();
   virtual void do_substitute_element_pointer (Score_element *o, Score_element*n);
 };
 #endif // DOT_COLUMN_HH
index 919da6fb8ddcbad7071926401f8c715c201d55a5..29e1bd5b114d7a59a3adcb0926d5621573556aea 100644 (file)
@@ -22,8 +22,9 @@ protected:
   virtual Molecule * do_brew_molecule_p () const;
   virtual void do_post_processing ();
 public:
-  int no_dots_i_;
+  int dots_i_;
   int position_i_;
+  Direction resolve_dir_;
   
   Dots ();
 };
index cb31244aeb11709a6a4fc6e8520dba05dd6c9dd5..8d2f823a830c12e775e51d9a112b4eed5c9e25c0 100644 (file)
@@ -18,6 +18,7 @@ class Grace_engraver_group : public Engraver_group_engraver, public Global_trans
   Link_array<Score_element> typeset_us_;
   Array<Score_element_info> announce_to_top_;
   bool calling_self_b_;
+  bool pass_to_top_b (Music *) const;
 public:
   VIRTUAL_COPY_CONS(Translator);
   Grace_engraver_group ();
diff --git a/lily/include/heads-engraver.hh b/lily/include/heads-engraver.hh
deleted file mode 100644 (file)
index 433a05f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-  head-engraver.hh -- part of GNU LilyPond
-
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef HEADSGRAV_HH
-#define HEADSGRAV_HH
-#include "engraver.hh"
-
-/**
-  make balls and rests
- */
-class Note_heads_engraver : public Engraver {
-  Link_array<Note_head> note_p_arr_;
-  Link_array<Dots> dot_p_arr_;
-  Link_array<Note_req> note_req_l_arr_;
-
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  Note_heads_engraver();
-  
-protected:
-  virtual bool do_try_music (Music *req_l) ;
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-};
-
-
-#endif // HEADSGRAV_HH
index a4cbf4e77b00449a0ea126d66657b21892dc96a4..e702c3334bec48ddb06a5a507e22d19d7e52a422 100644 (file)
@@ -48,7 +48,6 @@ struct Bar_req;
 struct Barcheck_req;
 struct Beam;
 struct Beam_engraver;
-struct Beam_req;
 struct Beaming_info;
 struct Beaming_info_list;
 struct Blank_req;
@@ -75,12 +74,9 @@ struct Collision_engraver;
 struct Command_req;
 struct Command_script_req;
 struct Command_tie_engraver;
-struct Command_tie_req;
 struct Time_scaled_music;
 struct Time_scaled_music_iterator;
-struct Cresc_req;
 struct Crescendo ;
-struct Decresc_req;
 struct Dots;
 struct Dot_column;
 struct Directional_spanner;
@@ -186,9 +182,6 @@ struct Paper_stream;
 struct Partial_measure_req;
 struct Performance;
 struct Performer;
-struct Plet;
-struct Plet_engraver;
-struct Plet_req;
 struct Tuplet_spanner;
 struct Piano_brace;
 struct Performer;
@@ -223,11 +216,9 @@ struct Single_malt_grouping_item;
 struct Skip_req;
 struct Slur;
 struct Slur_engraver;
-struct Slur_req;
 struct Spacing_spanner;
 struct Span_bar;
 struct Span_score_bar;
-struct Span_dynamic_req;
 struct Span_req;
 struct Spanner;
 struct Spring;
index be99f08c74e625c27c3e5fa85f28e43dd8db8747..25a2b8b38b2b0301f435990887ea69467be5245c 100644 (file)
@@ -31,6 +31,7 @@ DECLARE_LY_SYMBOL(char);
 DECLARE_LY_SYMBOL(change);
 DECLARE_LY_SYMBOL(damping);
 DECLARE_LY_SYMBOL(dashed);
+DECLARE_LY_SYMBOL(dangling);
 DECLARE_LY_SYMBOL(extremal);
 DECLARE_LY_SYMBOL(extra_space);
 DECLARE_LY_SYMBOL(dir_forced);
index 7ecc0f2588d6ebad64721993cc68519593c625c0..c5f7b0167c0e09e61ed2293a92373aa746e0ae5c 100644 (file)
@@ -21,6 +21,9 @@ class Note_head_side: public virtual Item
 {
   Link_array<Item> support_l_arr_;
 public:
+  Direction align_dir_;
+
+  Note_head_side ();
   void add_support (Item*);
   VIRTUAL_COPY_CONS (Score_element);
 protected:
index e931ede0ea9931b7674b848b99afc1dce43f3905..9b2650f486f29e80d806aa64b296e5ecebf67ff7 100644 (file)
@@ -17,7 +17,6 @@
 
 class Note_head : public Rhythmic_head {
 public:
-  int position_i_;
 
   Note_head ();
   void flip_around_stem (Direction);
diff --git a/lily/include/note-heads-engraver.hh b/lily/include/note-heads-engraver.hh
new file mode 100644 (file)
index 0000000..433a05f
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+  head-engraver.hh -- part of GNU LilyPond
+
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef HEADSGRAV_HH
+#define HEADSGRAV_HH
+#include "engraver.hh"
+
+/**
+  make balls and rests
+ */
+class Note_heads_engraver : public Engraver {
+  Link_array<Note_head> note_p_arr_;
+  Link_array<Dots> dot_p_arr_;
+  Link_array<Note_req> note_req_l_arr_;
+
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  Note_heads_engraver();
+  
+protected:
+  virtual bool do_try_music (Music *req_l) ;
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+};
+
+
+#endif // HEADSGRAV_HH
diff --git a/lily/include/p-col.hh b/lily/include/p-col.hh
deleted file mode 100644 (file)
index bf2d032..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-  p-col.hh -- declare  Paper_column
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef P_COL_HH
-#define P_COL_HH
-
-#include "axis-group-item.hh"
-#include "rod.hh"
-#include "spring.hh"
-
-/**
-   stuff grouped vertically.
-    This is a class to address items vertically. It contains the data for:
-    \begin{itemize}
-    \item
-    unbroken score
-    \item
-    broken score
-    \item
-    the linespacing problem
-    \end{itemize}
-  */
-
-class Paper_column : public Axis_group_item { 
-public:
-  VIRTUAL_COPY_CONS(Score_element);
-  Drul_array<Array<Column_rod> > minimal_dists_arr_drul_;
-  Drul_array<Array<Column_spring> > spring_arr_drul_;
-  void preprocess ();
-  /// set a minimum distance
-  void add_rod (Paper_column * to, Real distance);
-  void add_spring (Paper_column * to, Real dist, Real strength);
-
-  virtual Paper_column * column_l () const;
-  /// if lines are broken then this column is in #line#
-  Line_of_score *line_l_;
-
-  virtual Line_of_score *line_l () const;
-
-  /// which  one (left =0)
-  int rank_i() const;
-
-  bool breakpoint_b() const;
-  void add_item (Item *i);
-
-  Paper_column();
-
-  void set_rank (int);
-
-  void OK() const;
-  virtual void do_print() const;
-private:
-    
-  /**
-    The ranking: left is smaller than right 
-    -1 is uninitialised.
-    */
-  int rank_i_;
-
-};
-
-
-// #include "compare.hh"
-// INSTANTIATE_COMPARE(Paper_column &, Paper_column::compare);
-     
-#endif // P_COL_HH
-
diff --git a/lily/include/p-score.hh b/lily/include/p-score.hh
deleted file mode 100644 (file)
index 339b894..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-  p-score.hh -- declare Paper_score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef P_SCORE_HH
-#define P_SCORE_HH
-
-#include "colhpos.hh"
-#include "parray.hh"
-#include "lily-proto.hh"
-#include "music-output.hh"
-#include "lily-guile.hh"
-
-/** all stuff which goes onto paper. notes, signs, symbols in a score
-     #Paper_score# contains the items, the columns.
-    
-    */
-
-class Paper_score : public Music_output
-{
-  /// crescs etc; no particular order
-  Link_array<Spanner> span_p_arr_;
-
-  /// other elements
-  Link_array<Score_element> elem_p_arr_;
-  Link_array<Score_element> break_helpers_arr_;
-
-  SCM protected_scms_;
-public:
-  Paper_def *paper_l_;
-
-  /// the columns, ordered left to right
-  Link_array<Paper_column> col_l_arr_;
-
-  Paper_outputter *outputter_l_;  
-  Line_of_score * line_l_;
-  
-  Paper_score ();
-
-
-  /// add to bottom of pcols
-  void add_column (Paper_column*);
-
-  /**
-    @return index of argument.
-    */
-  int find_col_idx (Paper_column const *) const;
-
-  Link_array<Item> broken_col_range (Item const*,Item const*) const;
-    
-    
-  /* STANDARD ROUTINES */
-  void print() const;
-  
-  void typeset_element (Score_element*);
-  void typeset_broken_spanner (Spanner*);
-  /// add a Spanner
-  void typeset_unbroken_spanner (Spanner*);
-  
-    
-  virtual ~Paper_score();
-protected:
-    /* MAIN ROUTINES */
-  virtual void process();
-
-private:
-  /// before calc_breaking
-  void preprocess();
-
-  void calc_idealspacing();
-  /// calculate where the lines are to be broken, and use results
-  Array<Column_x_positions> calc_breaking();
-
-  /// after calc_breaking
-  void postprocess();
-  Paper_score (Paper_score const &);
-};
-
-#endif
diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh
new file mode 100644 (file)
index 0000000..9505542
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+  paper-column.hh -- declare  Paper_column
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef P_COL_HH
+#define P_COL_HH
+
+#include "axis-group-item.hh"
+#include "rod.hh"
+#include "spring.hh"
+
+/**
+   stuff grouped vertically.
+    This is a class to address items vertically. It contains the data for:
+    \begin{itemize}
+    \item
+    unbroken score
+    \item
+    broken score
+    \item
+    the linespacing problem
+    \end{itemize}
+  */
+
+class Paper_column : public Axis_group_item { 
+public:
+  VIRTUAL_COPY_CONS(Score_element);
+  Drul_array<Array<Column_rod> > minimal_dists_arr_drul_;
+  Drul_array<Array<Column_spring> > spring_arr_drul_;
+  void preprocess ();
+  /// set a minimum distance
+  void add_rod (Paper_column * to, Real distance);
+  void add_spring (Paper_column * to, Real dist, Real strength);
+
+  virtual Paper_column * column_l () const;
+  /// if lines are broken then this column is in #line#
+  Line_of_score *line_l_;
+
+  virtual Line_of_score *line_l () const;
+
+  /// which  one (left =0)
+  int rank_i() const;
+
+  bool breakpoint_b() const;
+  void add_item (Item *i);
+
+  Paper_column();
+
+  void set_rank (int);
+
+  void OK() const;
+  virtual void do_print() const;
+private:
+    
+  /**
+    The ranking: left is smaller than right 
+    -1 is uninitialised.
+    */
+  int rank_i_;
+
+};
+
+
+// #include "compare.hh"
+// INSTANTIATE_COMPARE(Paper_column &, Paper_column::compare);
+     
+#endif // P_COL_HH
+
diff --git a/lily/include/paper-score.hh b/lily/include/paper-score.hh
new file mode 100644 (file)
index 0000000..e27fe72
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+  paper-score.hh -- declare Paper_score
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef P_SCORE_HH
+#define P_SCORE_HH
+
+#include "colhpos.hh"
+#include "parray.hh"
+#include "lily-proto.hh"
+#include "music-output.hh"
+#include "lily-guile.hh"
+
+/** all stuff which goes onto paper. notes, signs, symbols in a score
+     #Paper_score# contains the items, the columns.
+    
+    */
+
+class Paper_score : public Music_output
+{
+  /// crescs etc; no particular order
+  Link_array<Spanner> span_p_arr_;
+
+  /// other elements
+  Link_array<Score_element> elem_p_arr_;
+  Link_array<Score_element> break_helpers_arr_;
+
+  SCM protected_scms_;
+public:
+  Paper_def *paper_l_;
+
+  /// the columns, ordered left to right
+  Link_array<Paper_column> col_l_arr_;
+
+  Paper_outputter *outputter_l_;  
+  Line_of_score * line_l_;
+  
+  Paper_score ();
+
+
+  /// add to bottom of pcols
+  void add_column (Paper_column*);
+
+  /**
+    @return index of argument.
+    */
+  int find_col_idx (Paper_column const *) const;
+
+  Link_array<Item> broken_col_range (Item const*,Item const*) const;
+    
+    
+  /* STANDARD ROUTINES */
+  void print() const;
+  
+  void typeset_element (Score_element*);
+  void typeset_broken_spanner (Spanner*);
+  /// add a Spanner
+  void typeset_unbroken_spanner (Spanner*);
+  
+    
+  virtual ~Paper_score();
+protected:
+    /* MAIN ROUTINES */
+  virtual void process();
+
+private:
+  /// before calc_breaking
+  void preprocess();
+
+  void calc_idealspacing();
+  /// calculate where the lines are to be broken, and use results
+  Array<Column_x_positions> calc_breaking();
+
+  /// after calc_breaking
+  void postprocess();
+  Paper_score (Paper_score const &);
+};
+
+#endif
diff --git a/lily/include/plet-engraver.hh b/lily/include/plet-engraver.hh
deleted file mode 100644 (file)
index 67af5cc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  plet-engraver.hh -- declare Plet_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef PLET_ENGRAVER_HH
-#define PLET_ENGRAVER_HH
-
-#include "engraver.hh"
-#include "drul-array.hh"
-#include "plet-spanner.hh"
-
-/**
-  Generate a plet.
-  Should make a Plet_spanner that typesets a nice bracket.
- */
-class Plet_engraver : public Engraver
-{
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-  Plet_engraver ();
-
-protected:
-  virtual void acknowledge_element (Score_element_info);
-  virtual void do_removal_processing();
-  virtual void do_process_requests();
-  virtual bool do_try_music (Music*);
-  virtual void do_pre_move_processing();
-  
-private:
-  Drul_array<Plet_req*> span_reqs_drul_;
-  Drul_array<Moment> beam_mom_drul_;
-  Drul_array<Moment> span_mom_drul_;
-  Plet_spanner* plet_spanner_p_;
-};
-
-#endif // PLET_ENGRAVER_HH
diff --git a/lily/include/request-chord-iterator.hh b/lily/include/request-chord-iterator.hh
new file mode 100644 (file)
index 0000000..0b35c44
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+  request-iter.hh -- declare Request_chord_iterator
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef REQUEST_ITER_HH
+#define REQUEST_ITER_HH
+
+#include "music-iterator.hh"
+
+/**
+   Walk through a Request_chord
+ */
+class Request_chord_iterator : public Music_iterator {
+  Request_chord * elt_l () const;
+  /**
+     cache elt_l ()->length_mom ().
+   */
+  Moment elt_length_mom_;
+  bool last_b_;
+  Cons<Music>* cursor_;
+
+public:
+  Request_chord_iterator ();
+  
+
+protected:
+  virtual void do_process_and_next (Moment);
+  virtual Moment next_moment() const;
+  virtual Music* next_music_l ();
+  virtual void construct_children();
+  virtual bool ok() const;
+  virtual void do_print() const;
+};
+
+
+#endif // REQUEST_ITER_HH
diff --git a/lily/include/request-iterator.hh b/lily/include/request-iterator.hh
deleted file mode 100644 (file)
index 0b35c44..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  request-iter.hh -- declare Request_chord_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef REQUEST_ITER_HH
-#define REQUEST_ITER_HH
-
-#include "music-iterator.hh"
-
-/**
-   Walk through a Request_chord
- */
-class Request_chord_iterator : public Music_iterator {
-  Request_chord * elt_l () const;
-  /**
-     cache elt_l ()->length_mom ().
-   */
-  Moment elt_length_mom_;
-  bool last_b_;
-  Cons<Music>* cursor_;
-
-public:
-  Request_chord_iterator ();
-  
-
-protected:
-  virtual void do_process_and_next (Moment);
-  virtual Moment next_moment() const;
-  virtual Music* next_music_l ();
-  virtual void construct_children();
-  virtual bool ok() const;
-  virtual void do_print() const;
-};
-
-
-#endif // REQUEST_ITER_HH
index c88e7789733a7ab627a25df8f140bc278cec0f23..611ddd7103466fd85ce660c6e53426ac43f1108a 100644 (file)
 class  Rest : public Rhythmic_head
 {
 public:
-  
-  
-  int position_i_;
   Rest ();
   void add_dots (Dots*);
 protected:
   virtual void do_add_processing ();
+  virtual void do_post_processing ();
   virtual Molecule * do_brew_molecule_p () const;
 };
 #endif // REST_HH
index 21988a85d7ff6ea99249e85001723f99efbbc98c..98ebcc5bfd92fd6dc48ebb5eabcaa489a98c1871 100644 (file)
@@ -19,11 +19,14 @@ public:
   Stem * stem_l_;
   int balltype_i_;
   int dots_i_;
+  int position_i_;
+
   Dots * dots_l_;
 
   void add_dots (Dots *);
   Rhythmic_head ();
 protected:
+  virtual void do_post_processing ();
   virtual void do_add_processing ();
   virtual void do_print () const;
   virtual void do_substitute_element_pointer (Score_element*,Score_element*);
index 56dcf59d92eddde3481c11383acbe9f42303075f..9c2097367e39360f56875bad8648ea1da4652bfb 100644 (file)
@@ -13,7 +13,7 @@
 #include "lily-proto.hh"
 #include "array.hh"
 #include "moment.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 /**
   Column with durational info.
index 2a0a7805eff19ad5e42a1055bdf7db684e571f45..723cf5a2836da9079507fb18d35347677107019d 100644 (file)
@@ -135,6 +135,7 @@ protected:
   virtual void handle_broken_dependencies ();
   virtual void handle_prebroken_dependencies ();
   virtual void handle_prebroken_dependents ();
+  virtual void handle_broken_dependents ();
   virtual Link_array<Score_element> get_extra_dependencies () const;
 
   static Interval dim_cache_callback (Dimension_cache*);
index 9e4ee574a39806e9258f6bd83c456ff15715a3fd..287492989fe429b46f762fb008244142189e16ba 100644 (file)
@@ -72,6 +72,7 @@ protected:
   friend Axis_group_spanner; // UGH
 
   virtual void do_space_processing ();
+  void handle_broken_dependents ();
   virtual void do_break_processing ();
   virtual Interval do_width () const;
   virtual void do_print () const;
index b907c452b5b6e0b52c4daf2e0ad988d2cd1f326d..4868940bb86f20924ec54331ba05dd04541c1385 100644 (file)
@@ -66,6 +66,7 @@ public:
   void check_removal ();
 
 
+
   Translator *get_simple_translator (String) const;
   Translator_group *find_existing_translator_l (String n, String id);
   Translator_group *find_create_translator_l (String n, String id);
@@ -73,6 +74,8 @@ public:
 
   Translator_group*get_default_interpreter();
 protected:
+  bool try_music_on_nongroup_children (Music *m);
+  
   virtual ~Translator_group ();
   virtual void do_print () const;
   virtual void do_process_requests ();
index 40da38cb8c34f4f8f01f1e5edf254fc647f8e120..cf3891cb0be38bac2b7a640177ecbfcadbb60887 100644 (file)
@@ -6,10 +6,10 @@
   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "debug.hh"
 #include "item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "spanner.hh"
 #include "lily-guile.hh"
 
index 7c492b23f3c298aec087dc4b4c3c9bdba818849a..67bbc4f7b6e8392474e682f999beeaa902efe2c7 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  key-def.cc --  implement 
+  key-def.cc --  implement Key_def
   
   source file of the GNU LilyPond music typesetter
   
index e269689cc896c64bc36bcab402048bed9c47aa1c..43aaeb602117b1732626a8f3a6ead4ec78b61b1b 100644 (file)
@@ -12,7 +12,7 @@
 #include "bar.hh"
 #include "debug.hh"
 #include "line-group-group-engraver.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 Line_group_engraver_group::Line_group_engraver_group()
 {
index ec786d7815cb2f4797bc5b14ceaab285b6cf84fd..be7a5e8dac47fcf806b2a81e2d3759e200ae5fe5 100644 (file)
@@ -9,8 +9,8 @@
 #include "line-of-score.hh"
 #include "paper-def.hh"
 #include "paper-outputter.hh"
-#include "p-col.hh"
-#include "p-score.hh"
+#include "paper-column.hh"
+#include "paper-score.hh"
 #include "warn.hh"
 
 Line_of_score::Line_of_score()
index b5f0c3170eb779cbe49dbf9513126ecd1447e74b..04e883c4dec46816b7019cdacf3f51e4306eaa4b 100644 (file)
@@ -405,7 +405,7 @@ distill_inname_str (String name_str, String& ext_r)
          split_path (str,a,b,c,ext_r);
 
          // add extension if not present.
-         char const* extensions[] = {"", "", ".ly", ".fly", ".sly", 0};
+         char const* extensions[] = {"", ".ly", ".fly", ".sly", "", 0};
          extensions[0] = ext_r.ch_C ();
          for (int i = 0; extensions[i]; i++)
            {
@@ -416,6 +416,9 @@ distill_inname_str (String name_str, String& ext_r)
                }
            }
          str = a+b+c+ext_r;
+         // in any case, assume (init).ly
+         if (!ext_r.length_i ())
+           ext_r = ".ly";
        }
     }
   else 
index fede70beb408b9c381abe2fddfa30d701e2ff8c1..7a952f0135590318da4425bf5cac11fb8a3f48a9 100644 (file)
@@ -10,7 +10,7 @@
 #include "multi-measure-rest.hh"
 #include "debug.hh"
 #include "paper-def.hh"
-#include "p-col.hh" // urg
+#include "paper-column.hh" // urg
 #include "bar.hh"
 #include "lookup.hh"
 #include "rest.hh"
index b3e99c8f63c8a57a123bd0086c49d4315937f299..0dcba0a2b40691e5bb07fa6b9b542bd54612799c 100644 (file)
@@ -9,7 +9,7 @@
 #include "music-list.hh"
 #include "music-iterator.hh"
 #include "property-iterator.hh"
-#include "request-iterator.hh"
+#include "request-chord-iterator.hh"
 #include "sequential-music-iterator.hh"
 #include "simultaneous-music-iterator.hh"
 #include "translator-group.hh"
index 5d073f0a105134844231bdfd66a976c61abd796a..0d360c4d02e4cb284caf5ade54b24d3706c36cae 100644 (file)
@@ -36,7 +36,7 @@ Note_head_side::do_pre_processing ()
   if (x_int.empty_b ())
     x_int = Interval(0,0);
   
-  translate_axis (-extent(X_AXIS)[RIGHT] + x_int[LEFT], X_AXIS);
+  translate_axis (-extent(X_AXIS)[-align_dir_] + x_int[align_dir_], X_AXIS);
 }
 
 void
@@ -45,3 +45,8 @@ Note_head_side::do_substitute_element_pointer (Score_element*o,Score_element*n)
   if (Item* o_l = dynamic_cast <Item *> (o))
     support_l_arr_.substitute (o_l,dynamic_cast <Item *> (n));
 }
+
+Note_head_side:: Note_head_side()
+{
+  align_dir_ = LEFT;
+}
index 9561ba341faf46d0a85cca4ce8b09e62332f5e47..8e6ec890dcb442407e0ef84abdacd5c8dbc4a80d 100644 (file)
@@ -13,6 +13,7 @@
 #include "lookup.hh"
 #include "molecule.hh"
 #include "musical-request.hh"
+#include "stem.hh"
 
 void
 Note_head::flip_around_stem (Direction d)
@@ -22,7 +23,6 @@ Note_head::flip_around_stem (Direction d)
 
 Note_head::Note_head ()
 {
-  position_i_ = 0;
 }
 
 void
@@ -35,6 +35,8 @@ Note_head::do_pre_processing ()
     dots_l_->position_i_ = position_i_;
 }
 
+
+
 int
 Note_head::compare (Note_head *const  &a, Note_head * const &b)
 {
diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc
new file mode 100644 (file)
index 0000000..099c8bf
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+  head-grav.cc -- part of GNU LilyPond
+
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "note-head.hh"
+#include "note-heads-engraver.hh"
+#include "paper-def.hh"
+#include "musical-request.hh"
+#include "dots.hh"
+#include "dot-column.hh"
+
+Note_heads_engraver::Note_heads_engraver()
+{
+}
+
+bool
+Note_heads_engraver::do_try_music (Music *m) 
+{
+  if (Note_req * n =dynamic_cast <Note_req *> (m))
+    {
+      note_req_l_arr_.push (n);
+      return true;
+    }
+  if (Tonic_req* t = dynamic_cast<Tonic_req*> (m))
+    {
+      return true;
+    }
+  return false;
+}
+
+void
+Note_heads_engraver::do_process_requests()
+{
+  if (note_p_arr_.size ())
+    return ;
+  
+  String noteheadstyle = get_property ("noteHeadStyle", 0);
+  for (int i=0; i < note_req_l_arr_.size (); i++)
+    {
+      Note_head *note_p  = new Note_head;
+      Note_req * note_req_l = note_req_l_arr_[i];
+      note_p->balltype_i_ = note_req_l->duration_.durlog_i_;
+      note_p->dots_i_ = note_req_l->duration_.dots_i_;
+      if (note_p->dots_i_)
+       {
+         Dots * d = new Dots;
+         note_p->dots_l_ = d;
+         announce_element (Score_element_info (d,0));
+         dot_p_arr_.push (d);
+       }
+
+      //      note_p->steps_i_ = note_req_l->pitch_.steps ();
+      note_p->position_i_ = note_req_l->pitch_.steps ();
+
+
+      if (noteheadstyle == "transparent")
+       note_p->set_elt_property (transparent_scm_sym, SCM_BOOL_T);
+      else 
+        note_p->set_elt_property (style_scm_sym,
+                                 gh_str02scm (noteheadstyle.ch_C()));
+
+      
+      Score_element_info itinf (note_p,note_req_l);
+      announce_element (itinf);
+      note_p_arr_.push (note_p);
+    }
+}
+void
+Note_heads_engraver::do_pre_move_processing()
+{
+  for (int i=0; i < note_p_arr_.size (); i++)
+    {
+      typeset_element (note_p_arr_[i]);
+    }
+  note_p_arr_.clear ();
+  for (int i=0; i < dot_p_arr_.size (); i++)
+    {
+      typeset_element (dot_p_arr_[i]);
+    }
+  dot_p_arr_.clear ();
+  
+  note_req_l_arr_.clear ();
+}
+
+void
+Note_heads_engraver::do_post_move_processing()
+{
+
+}
+
+
+
+ADD_THIS_TRANSLATOR(Note_heads_engraver);
index fee4a083b78764d5fbd6549d31c25b5db645b6dd..4138548797bae192e005af5a3edf4ddfbec5e9e6 100644 (file)
@@ -1,13 +1,13 @@
 /*
-  p-col.cc -- implement Paper_column
+  paper-column.cc -- implement Paper_column
 
   source file of the GNU LilyPond music typesetter
 
   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "p-col.hh"
-#include "p-score.hh"
+#include "paper-column.hh"
+#include "paper-score.hh"
 #include "debug.hh"
 
 void
diff --git a/lily/p-score.cc b/lily/p-score.cc
deleted file mode 100644 (file)
index 261d379..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
-  p-score.cc -- implement Paper_score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "main.hh"
-#include "debug.hh"
-#include "lookup.hh"
-#include "spanner.hh"
-#include "paper-def.hh"
-#include "line-of-score.hh"
-#include "p-col.hh"
-#include "p-score.hh"
-#include "p-col.hh"
-#include "scope.hh"
-#include "word-wrap.hh"
-#include "gourlay-breaking.hh"
-#include "paper-stream.hh"
-#include "paper-outputter.hh"
-#include "file-results.hh"
-#include "misc.hh"
-
-Paper_score::Paper_score ()
-{
-  protected_scms_ = scm_protect_object (gh_cons (SCM_BOOL_T, SCM_EOL));
-  paper_l_ =0;
-  outputter_l_ =0;
-  Line_of_score * line_p = new Line_of_score;
-  typeset_unbroken_spanner (line_p);
-
-  line_l_ = line_p;
-}
-
-Paper_score::Paper_score (Paper_score const &s)
-  : Music_output (s)
-{
-  assert (false);
-}
-
-Paper_score::~Paper_score ()
-{
-  for (int i=span_p_arr_.size (); --i >=0 ; )
-    delete span_p_arr_[i];
-  for (int i=elem_p_arr_.size (); --i >=0 ; )
-    delete elem_p_arr_[i];
-
-  scm_unprotect_object (protected_scms_);
-}
-
-void
-Paper_score::typeset_element (Score_element * elem_p)
-{
-  elem_p_arr_.push (elem_p);
-  elem_p->pscore_l_ = this;
-
-  // take over protection.
-  SCM_CDR(protected_scms_) = gh_cons (elem_p->element_property_alist_,
-                                     SCM_CDR (protected_scms_));
-  scm_unprotect_object (elem_p->element_property_alist_);
-  
-  SCM p =  elem_p->remove_elt_property (break_helper_only_scm_sym);
-  if (p != SCM_BOOL_F)
-    break_helpers_arr_.push (elem_p);
-}
-
-
-void
-Paper_score::typeset_unbroken_spanner (Spanner*span_p)
-{
-  span_p_arr_.push (span_p);
-  span_p->pscore_l_=this;
-
-  SCM p =  span_p->remove_elt_property (break_helper_only_scm_sym);
-  if (p != SCM_BOOL_F)
-    break_helpers_arr_.push (span_p);
-}
-
-void
-Paper_score::add_column (Paper_column *p)
-{
-  p->set_rank (col_l_arr_.size ());
-  col_l_arr_.push (p);
-  typeset_element(p);
-}
-
-
-
-void
-Paper_score::print () const
-{
-#ifndef NPRINT
-  if (!check_debug)
-    return ;
-  DOUT << "Paper_score { ";
-  DOUT << "\n elements: ";
-  for (int i=0; i < span_p_arr_.size (); i++)
-    span_p_arr_[i]->print ();
-  for (int i=0; i < elem_p_arr_.size (); i++)
-    elem_p_arr_[i]->print();
-  
-  DOUT << "}\n";
-#endif
-}
-
-int
-Paper_score::find_col_idx (Paper_column const *c) const
-{
-  Paper_column const *what = c;
-
-  return col_l_arr_.find_i ((Paper_column*)what);
-}
-
-Array<Column_x_positions>
-Paper_score::calc_breaking ()
-{
-  Break_algorithm *algorithm_p=0;
-  Array<Column_x_positions> sol;
-  bool try_wrap = !paper_l_->get_var ("castingalgorithm");
-
-  if (!try_wrap)
-    {
-      algorithm_p = new Gourlay_breaking ;
-      algorithm_p->set_pscore (this);
-      sol = algorithm_p->solve ();
-      delete algorithm_p;
-      if (! sol.size ())
-       {
-         warning (_ ("Can't solve this casting problem exactly; revert to Word_wrap"));
-         try_wrap = true;
-       }
-    }
-  if  (try_wrap)
-    {
-      algorithm_p = new Word_wrap;
-      algorithm_p->set_pscore (this);
-      sol = algorithm_p->solve ();
-      delete algorithm_p;
-    }
-  return sol;
-}
-
-
-
-void
-Paper_score::process ()
-{
-  Dictionary<int> type_stats;
-  type_stats["Item"] =0;
-  type_stats["Spanner"] =0;
-  type_stats["Total"]=0;
-
-  print ();
-  *mlog << _ ("Preprocessing elements...") << " " << flush;
-  line_l_->breakable_col_processing ();
-  line_l_->pre_processing ();
-  
-  *mlog << '\n' << _ ("Calculating column positions...") << " " << flush;
-  line_l_->space_processing ();
-
-  Array<Column_x_positions> breaking = calc_breaking ();
-
-
-  Paper_stream* paper_stream_p = paper_l_->paper_stream_p ();
-  outputter_l_ = paper_l_->paper_outputter_p (paper_stream_p, header_l_, origin_str_);
-
-  Link_array<Line_of_score> lines;
-  for (int i=0; i < breaking.size (); i++)
-    {
-      Line_of_score *line_l = line_l_->set_breaking (breaking, i);
-      lines.push (line_l);
-      if (line_l != line_l_)
-       typeset_element (line_l);
-    }
-
-  if (experimental_features_global_b)
-    *mlog << elem_p_arr_.size ()  + span_p_arr_.size () << _ (" elements. ");
-
-  *mlog << "\n";
-  *mlog << _ ("Line ... ");
-  line_l_->break_processing ();
-  for (int i=0; i < lines.size (); i++)
-    {
-      *mlog << '[' << flush;
-      
-      Line_of_score *line_l = lines[i];
-
-      line_l->post_processing ();
-      *mlog << i << flush;
-      line_l->output_all (i + 1 == lines.size());
-      if (experimental_features_global_b)
-       *mlog << '(' << elem_p_arr_.size () + span_p_arr_.size () << ')';
-      
-      *mlog << ']' << flush;
-     }
-  
-  // huh?
-  delete outputter_l_;
-  delete paper_stream_p;
-  outputter_l_ = 0;
-
-
-  /*
-    todo: sort output
-   */
-  if (experimental_features_global_b)
-    {
-      for (Dictionary_iter<int> i(type_stats); i.ok(); i++)
-       {
-         *mlog << i.key () << ": " << i.val () << " objects\n";
-       }
-    }
-  *mlog << '\n' << flush;
-      
-}
-
-Link_array<Item>
-Paper_score::broken_col_range (Item const*l, Item const*r) const
-{
-  Link_array<Item> ret;
-
-  l = l->column_l ();
-  r = r->column_l ();
-  
-  int  start = l
-    ? find_col_idx (dynamic_cast<Paper_column*> ((Item*)l))+1
-    : 0;
-
-  int stop = r
-    ? find_col_idx (dynamic_cast<Paper_column*>((Item*)r))
-    : col_l_arr_.size ();
-
-  while (start < stop)
-    {
-      Paper_column *c = col_l_arr_[start];
-      if (c->breakable_b () && !c->line_l_)
-       ret.push (c);
-      start++;
-    }
-
-  return ret;
-}
index 4cd2101032181b4a57994f42f9fbd36b22d04986..f6ed231d349684a521c43fe4ba232c0510da7244 100644 (file)
@@ -13,7 +13,7 @@
 #include "debug.hh"
 #include "lookup.hh"
 #include "score-engraver.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "identifier.hh"
 #include "main.hh"
 #include "scope.hh"
diff --git a/lily/paper-score.cc b/lily/paper-score.cc
new file mode 100644 (file)
index 0000000..38ecdc3
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+  p-score.cc -- implement Paper_score
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996,  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "main.hh"
+#include "debug.hh"
+#include "lookup.hh"
+#include "spanner.hh"
+#include "paper-def.hh"
+#include "line-of-score.hh"
+#include "paper-column.hh"
+#include "paper-score.hh"
+#include "paper-column.hh"
+#include "scope.hh"
+#include "word-wrap.hh"
+#include "gourlay-breaking.hh"
+#include "paper-stream.hh"
+#include "paper-outputter.hh"
+#include "file-results.hh"
+#include "misc.hh"
+
+Paper_score::Paper_score ()
+{
+  protected_scms_ = scm_protect_object (gh_cons (SCM_BOOL_T, SCM_EOL));
+  paper_l_ =0;
+  outputter_l_ =0;
+  Line_of_score * line_p = new Line_of_score;
+  typeset_unbroken_spanner (line_p);
+
+  line_l_ = line_p;
+}
+
+Paper_score::Paper_score (Paper_score const &s)
+  : Music_output (s)
+{
+  assert (false);
+}
+
+Paper_score::~Paper_score ()
+{
+  for (int i=span_p_arr_.size (); --i >=0 ; )
+    delete span_p_arr_[i];
+  for (int i=elem_p_arr_.size (); --i >=0 ; )
+    delete elem_p_arr_[i];
+
+  scm_unprotect_object (protected_scms_);
+}
+
+void
+Paper_score::typeset_element (Score_element * elem_p)
+{
+  elem_p_arr_.push (elem_p);
+  elem_p->pscore_l_ = this;
+
+  // take over protection.
+  SCM_CDR(protected_scms_) = gh_cons (elem_p->element_property_alist_,
+                                     SCM_CDR (protected_scms_));
+  scm_unprotect_object (elem_p->element_property_alist_);
+  
+  SCM p =  elem_p->remove_elt_property (break_helper_only_scm_sym);
+  if (p != SCM_BOOL_F)
+    break_helpers_arr_.push (elem_p);
+}
+
+
+void
+Paper_score::typeset_unbroken_spanner (Spanner*span_p)
+{
+  span_p_arr_.push (span_p);
+  span_p->pscore_l_=this;
+
+  SCM p =  span_p->remove_elt_property (break_helper_only_scm_sym);
+  if (p != SCM_BOOL_F)
+    break_helpers_arr_.push (span_p);
+}
+
+void
+Paper_score::add_column (Paper_column *p)
+{
+  p->set_rank (col_l_arr_.size ());
+  col_l_arr_.push (p);
+  typeset_element(p);
+}
+
+
+
+void
+Paper_score::print () const
+{
+#ifndef NPRINT
+  if (!check_debug)
+    return ;
+  DOUT << "Paper_score { ";
+  DOUT << "\n elements: ";
+  for (int i=0; i < span_p_arr_.size (); i++)
+    span_p_arr_[i]->print ();
+  for (int i=0; i < elem_p_arr_.size (); i++)
+    elem_p_arr_[i]->print();
+  
+  DOUT << "}\n";
+#endif
+}
+
+int
+Paper_score::find_col_idx (Paper_column const *c) const
+{
+  Paper_column const *what = c;
+
+  return col_l_arr_.find_i ((Paper_column*)what);
+}
+
+Array<Column_x_positions>
+Paper_score::calc_breaking ()
+{
+  Break_algorithm *algorithm_p=0;
+  Array<Column_x_positions> sol;
+  bool try_wrap = !paper_l_->get_var ("castingalgorithm");
+
+  if (!try_wrap)
+    {
+      algorithm_p = new Gourlay_breaking ;
+      algorithm_p->set_pscore (this);
+      sol = algorithm_p->solve ();
+      delete algorithm_p;
+      if (! sol.size ())
+       {
+         warning (_ ("Can't solve this casting problem exactly; revert to Word_wrap"));
+         try_wrap = true;
+       }
+    }
+  if  (try_wrap)
+    {
+      algorithm_p = new Word_wrap;
+      algorithm_p->set_pscore (this);
+      sol = algorithm_p->solve ();
+      delete algorithm_p;
+    }
+  return sol;
+}
+
+
+
+void
+Paper_score::process ()
+{
+  Dictionary<int> type_stats;
+  type_stats["Item"] =0;
+  type_stats["Spanner"] =0;
+  type_stats["Total"]=0;
+
+  print ();
+  *mlog << _ ("Preprocessing elements...") << " " << flush;
+  line_l_->breakable_col_processing ();
+  line_l_->pre_processing ();
+  
+  *mlog << '\n' << _ ("Calculating column positions...") << " " << flush;
+  line_l_->space_processing ();
+
+  Array<Column_x_positions> breaking = calc_breaking ();
+
+
+  Paper_stream* paper_stream_p = paper_l_->paper_stream_p ();
+  outputter_l_ = paper_l_->paper_outputter_p (paper_stream_p, header_l_, origin_str_);
+
+  Link_array<Line_of_score> lines;
+  for (int i=0; i < breaking.size (); i++)
+    {
+      Line_of_score *line_l = line_l_->set_breaking (breaking, i);
+      lines.push (line_l);
+      if (line_l != line_l_)
+       typeset_element (line_l);
+    }
+
+  if (experimental_features_global_b)
+    *mlog << elem_p_arr_.size ()  + span_p_arr_.size () << _ (" elements. ");
+
+  *mlog << "\n";
+  *mlog << _ ("Line ... ");
+  line_l_->break_processing ();
+  for (int i=0; i < lines.size (); i++)
+    {
+      *mlog << '[' << flush;
+      
+      Line_of_score *line_l = lines[i];
+
+      line_l->post_processing ();
+      *mlog << i << flush;
+      line_l->output_all (i + 1 == lines.size());
+      if (experimental_features_global_b)
+       *mlog << '(' << elem_p_arr_.size () + span_p_arr_.size () << ')';
+      
+      *mlog << ']' << flush;
+     }
+  
+  // huh?
+  delete outputter_l_;
+  delete paper_stream_p;
+  outputter_l_ = 0;
+
+
+  /*
+    todo: sort output
+   */
+  if (experimental_features_global_b)
+    {
+      for (Dictionary_iter<int> i(type_stats); i.ok(); i++)
+       {
+         *mlog << i.key () << ": " << i.val () << " objects\n";
+       }
+    }
+  *mlog << '\n' << flush;
+      
+}
+
+Link_array<Item>
+Paper_score::broken_col_range (Item const*l, Item const*r) const
+{
+  Link_array<Item> ret;
+
+  l = l->column_l ();
+  r = r->column_l ();
+  
+  int  start = l
+    ? find_col_idx (dynamic_cast<Paper_column*> ((Item*)l))+1
+    : 0;
+
+  int stop = r
+    ? find_col_idx (dynamic_cast<Paper_column*>((Item*)r))
+    : col_l_arr_.size ();
+
+  while (start < stop)
+    {
+      Paper_column *c = col_l_arr_[start];
+      if (c->breakable_b () && !c->line_l_)
+       ret.push (c);
+      start++;
+    }
+
+  return ret;
+}
diff --git a/lily/request-chord-iterator.cc b/lily/request-chord-iterator.cc
new file mode 100644 (file)
index 0000000..47d28ce
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+  request-chord-iterator.cc -- implement Request_chord_iterator
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "translator-group.hh"
+#include "debug.hh"
+#include "request-chord-iterator.hh"
+#include "music-list.hh"
+#include "request.hh"
+
+
+
+void
+Request_chord_iterator::construct_children()
+{
+  elt_length_mom_ =elt_l ()->length_mom ();
+  get_req_translator_l();
+}
+
+Request_chord*
+Request_chord_iterator::elt_l () const
+{
+  return (Request_chord*) music_l_;
+}
+
+Request_chord_iterator::Request_chord_iterator ()
+{
+  last_b_ = false;
+  //  cursor_ = elt_l ()->music_p_list_p_->head_;
+  cursor_ = 0;
+}
+
+
+bool
+Request_chord_iterator::ok() const
+{
+  return (elt_length_mom_ && !last_b_) || first_b_;
+}
+
+Moment
+Request_chord_iterator::next_moment() const
+{
+  Moment m (0);
+  if  (!first_b_)
+    m = elt_length_mom_;
+  return m;
+}
+
+Music*
+Request_chord_iterator::next_music_l ()
+{
+  if (first_b_)
+    {
+      cursor_ = elt_l ()->music_p_list_p_->head_;
+      first_b_ = false;
+    }
+  else
+    {
+      if (cursor_)
+       cursor_ = cursor_->next_;
+    }
+  if (cursor_)
+    return cursor_->car_;
+  else
+    return 0;
+}
+
+void
+Request_chord_iterator::do_print() const
+{
+#ifndef NPRINT
+  DOUT << "duration: " << elt_length_mom_;
+#endif
+}
+
+void
+Request_chord_iterator::do_process_and_next (Moment mom)
+{
+  if (first_b_)
+    {
+      for (Cons<Music> *i = elt_l ()->music_p_list_p_->head_; i; i = i->next_)
+       {
+         if (Request * req_l = dynamic_cast<Request*> (i->car_))
+           {
+             bool gotcha = report_to_l()->try_music (req_l);
+             if (!gotcha)
+               req_l->warning (_f ("junking request: `%s\'", classname( req_l)));
+           }
+         else
+           i->car_->warning (_f ("Huh? Not a Request: `%s\'",
+                                  classname (i->car_)));
+       }
+      first_b_ = false;
+    }
+
+  if (mom >= elt_length_mom_)
+    last_b_ = true;
+}
diff --git a/lily/request-iterator.cc b/lily/request-iterator.cc
deleted file mode 100644 (file)
index 9cbf798..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-  request-iterator.cc -- implement Request_chord_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "translator-group.hh"
-#include "debug.hh"
-#include "request-iterator.hh"
-#include "music-list.hh"
-#include "request.hh"
-
-
-
-void
-Request_chord_iterator::construct_children()
-{
-  elt_length_mom_ =elt_l ()->length_mom ();
-  get_req_translator_l();
-}
-
-Request_chord*
-Request_chord_iterator::elt_l () const
-{
-  return (Request_chord*) music_l_;
-}
-
-Request_chord_iterator::Request_chord_iterator ()
-{
-  last_b_ = false;
-  //  cursor_ = elt_l ()->music_p_list_p_->head_;
-  cursor_ = 0;
-}
-
-
-bool
-Request_chord_iterator::ok() const
-{
-  return (elt_length_mom_ && !last_b_) || first_b_;
-}
-
-Moment
-Request_chord_iterator::next_moment() const
-{
-  Moment m (0);
-  if  (!first_b_)
-    m = elt_length_mom_;
-  return m;
-}
-
-Music*
-Request_chord_iterator::next_music_l ()
-{
-  if (first_b_)
-    {
-      cursor_ = elt_l ()->music_p_list_p_->head_;
-      first_b_ = false;
-    }
-  else
-    {
-      if (cursor_)
-       cursor_ = cursor_->next_;
-    }
-  if (cursor_)
-    return cursor_->car_;
-  else
-    return 0;
-}
-
-void
-Request_chord_iterator::do_print() const
-{
-#ifndef NPRINT
-  DOUT << "duration: " << elt_length_mom_;
-#endif
-}
-
-void
-Request_chord_iterator::do_process_and_next (Moment mom)
-{
-  if (first_b_)
-    {
-      for (Cons<Music> *i = elt_l ()->music_p_list_p_->head_; i; i = i->next_)
-       {
-         if (Request * req_l = dynamic_cast<Request*> (i->car_))
-           {
-             bool gotcha = report_to_l()->try_music (req_l);
-             if (!gotcha)
-               req_l->warning (_f ("junking request: `%s\'", classname( req_l)));
-           }
-         else
-           i->car_->warning (_f ("Huh? Not a Request: `%s\'",
-                                  classname (i->car_)));
-       }
-      first_b_ = false;
-    }
-
-  if (mom >= elt_length_mom_)
-    last_b_ = true;
-}
index 2c9c91eff56083e1af632ca54b2e0ce00b6cb32d..b0a0cce179da6f99367360e50153a5747f966267 100644 (file)
@@ -12,7 +12,7 @@
 #include "rest.hh"
 #include "dots.hh"
 #include "axis-group-element.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 
 void
 Rest::do_add_processing ()
@@ -21,9 +21,15 @@ Rest::do_add_processing ()
     position_i_ += 2;
 
   Rhythmic_head::do_add_processing ();
+}
+
+void
+Rest::do_post_processing ()
+{
+  Rhythmic_head::do_post_processing ();
   if (dots_l_ && balltype_i_ > 4)
     {
-      dots_l_->position_i_ = position_i_ + 3;
+      dots_l_->position_i_ += 3;
       if (balltype_i_ == 7)
        dots_l_->position_i_++;
     }
index e188abe59e590b39f476142243bebaabfe773584..d329ca93e5e8755cc27ee1bbce906e801c4dcf9f 100644 (file)
@@ -14,7 +14,7 @@
 #include "rest.hh"
 #include "dots.hh"
 #include "axis-group-element.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "stem.hh"
 
 void
@@ -26,10 +26,22 @@ Rhythmic_head::do_add_processing ()
     }
   if (dots_l_)
     {
-      dots_l_->no_dots_i_ = dots_i_;
+      dots_l_->dots_i_ = dots_i_;
     }
 }
 
+void
+Rhythmic_head::do_post_processing ()
+{
+  if (dots_l_)
+    {
+      if (stem_l_)
+       dots_l_->resolve_dir_ = stem_l_->dir_;
+      dots_l_->position_i_ = position_i_;
+    }
+}
+
+
 void
 Rhythmic_head::add_dots (Dots *dot_l)
 {
@@ -37,13 +49,13 @@ Rhythmic_head::add_dots (Dots *dot_l)
   dot_l->add_dependency (this);  
 }
 
-
 Rhythmic_head::Rhythmic_head ()
 {
   dots_l_ =0;
   balltype_i_ =0;
   dots_i_ = 0;
   stem_l_ =0;
+  position_i_ =0;
 }
 
 void
index 0bb861423271231cb8eddaf2a069b52b5080b51f..129d9bb3c63545c35880991228fe92b758784331 100644 (file)
@@ -7,7 +7,7 @@
   
  */
 #include "rod.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "debug.hh"
 #include "dimensions.hh"
 #include "single-malt-grouping-item.hh"
index 9744e3106a1a03a58dad199477748d4e7aa09c5f..0470fb71f7c6db7d4fa0ef0897604cefa40f216b 100644 (file)
@@ -7,7 +7,7 @@
 */
 
 #include "debug.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "score-column.hh"
 #include "command-request.hh"
 
index 3215b80930d5fc9b811c444133a4a56a9e9606c6..302b6dd352946dd6f98d8b1867c49211bae5e32a 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <string.h>
 
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
 #include "molecule.hh"
@@ -18,7 +18,7 @@
 #include "spanner.hh"
 #include "line-of-score.hh"
 #include "item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "molecule.hh"
 #include "misc.hh"
 #include "paper-outputter.hh"
@@ -410,6 +410,11 @@ Score_element::handle_prebroken_dependents()
 {
 }
 
+void
+Score_element::handle_broken_dependents()
+{
+}
+
 
 
 Link_array<Score_element>
index 70d2943c74a2bfe7d2fad7265f083c9e7d486ede..815e7366755f1dfc35180f33bc46299d5e2acde9 100644 (file)
 #include "debug.hh"
 #include "item.hh"
 #include "score-engraver.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "musical-request.hh"
 #include "score-column.hh"
 #include "command-request.hh"
 #include "paper-def.hh"
 
-
-
 Score_engraver::Score_engraver()
 {
   break_penalty_i_ = 0;
@@ -125,6 +123,17 @@ Score_engraver::typeset_all()
     {
       Score_element * elem_p = elem_p_arr_[i];
       elem_p->add_processing ();
+
+#if 0                          // TODO!
+      /*
+       elem_p wants to be connected to the rest of the
+       dependency graph.
+       */
+      
+      if (elem_p->get_elt_property (dangling_scm_sym) != SCM_BOOL_F)
+       scoreline_l_->add_dependency (elem_p);
+#endif
+      
       if (Spanner *s = dynamic_cast <Spanner *> (elem_p))
        {
            /*
index 2db95f52f40f70ab841616b508e51b1fd585c9f8..8890ddbdd7aec24f890796fc0398616a12d23cd2 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "separating-group-spanner.hh"
 #include "single-malt-grouping-item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "paper-def.hh"
 #include "dimensions.hh"
 
index f60ccd5730bd889ae60758e71bc535c824fa6612..99fc66a9079781895152b86121988dfa59511576 100644 (file)
@@ -10,7 +10,7 @@
 #include "separating-line-group-engraver.hh"
 #include "separating-group-spanner.hh"
 #include "single-malt-grouping-item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "paper-def.hh"
 
 Separating_line_group_engraver::Separating_line_group_engraver ()
index eb572cd81775f1344b8ddd9ddf5c884884af0836..6714625393c079a154c670dd5500331bbc05b19a 100644 (file)
@@ -10,9 +10,8 @@
 #include "debug.hh"
 #include "sequential-music-iterator.hh"
 #include "music-list.hh"
-// hmm
-//#include "request-chord-iterator.hh"
-#include "request-iterator.hh"
+#include "request-chord-iterator.hh"
+
 
 void
 Sequential_music_iterator::do_print() const
index 77848e79faec7f323b472c56f5d2499611f6c3d7..8ce4cdbd17e285400cc62022ef0cfc9fbfd1ace9 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 #include "single-malt-grouping-item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "debug.hh"
 
 Single_malt_grouping_item ::Single_malt_grouping_item()
index 23fc2ebbe397bb7e94c6e16063e893933a652503..d2464fc5a74198c5429890eab50a20c8d046c492 100644 (file)
@@ -45,10 +45,11 @@ Slur_engraver::do_removal_processing ()
       typeset_element (slur_l_stack_[i]);
     }
   slur_l_stack_.clear ();
-  for (int i=0; i < requests_arr_.size(); i++)
-    {
-      requests_arr_[i]->warning (_ ("unterminated slur"));
-    }
+  if (!get_property ("weAreGraceContext",0).to_bool ())
+    for (int i=0; i < requests_arr_.size(); i++)
+      {
+       requests_arr_[i]->warning (_ ("unterminated slur"));
+      }
 }
 
 void
index 82aaa7e544f3d867864efe50ebb03730c75de16e..5e8055a9f4bf737b1c7e175b8cd4287976640228 100644 (file)
@@ -19,7 +19,7 @@
 #include "paper-def.hh"
 #include "note-column.hh"
 #include "stem.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "molecule.hh"
 #include "debug.hh"
 #include "box.hh"
@@ -198,12 +198,39 @@ Slur::do_post_processing ()
     }
   while (flip (&d) != LEFT);
 
+  int interstaff_i = 0;
+  for (int i = 0; i < encompass_arr_.size (); i++)
+    {
+      Encompass_info info (encompass_arr_[i], dir_, this);
+      if (info.interstaff_f_)
+       {
+         interstaff_i++;
+       }
+    }
+  bool interstaff_b = interstaff_i && (interstaff_i < encompass_arr_.size ());
+
+  Drul_array<Encompass_info> info_drul;
+  info_drul[LEFT] = Encompass_info (encompass_arr_[0], dir_, this);
+  info_drul[RIGHT] = Encompass_info (encompass_arr_.top (), dir_, this);
+  Real interstaff_f = info_drul[RIGHT].interstaff_f_
+    - info_drul[LEFT].interstaff_f_;
+
   if (fix_broken_b)
-    do {
-      if (dy_f_drul_[d])
-       dy_f_drul_[-d] = dy_f_drul_[d];
+    {
+      Direction d = (encompass_arr_.top () != spanned_drul_[RIGHT]) ?
+       RIGHT : LEFT;
+      dy_f_drul_[d] = info_drul[d].o_[Y_AXIS];
+      if (!interstaff_b)
+       {
+         dy_f_drul_[d] -= info_drul[d].interstaff_f_;
+         
+         if (interstaff_i)
+           {
+             dy_f_drul_[LEFT] += info_drul[d].interstaff_f_;
+             dy_f_drul_[RIGHT] += info_drul[d].interstaff_f_;
+           }
+       }
     }
-    while (flip (&d) != LEFT);
        
 
   /*
@@ -211,13 +238,30 @@ Slur::do_post_processing ()
     Catch and correct some ugly cases
    */
 
-  Real dx_f = do_width ().length () + dx_f_drul_[RIGHT] - dx_f_drul_[LEFT];
+  Real height_damp_f;
+  Real slope_damp_f;
+  Real snap_f;
+  Real ratio_f;
+
+  if (!fix_broken_b)
+    dy_f_drul_[RIGHT] += interstaff_f;
   Real dy_f = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
+
+  Real dx_f = do_width ().length () + dx_f_drul_[RIGHT] - dx_f_drul_[LEFT];
   Real height_f = do_height ().length ();
 
-  Real height_damp_f = paper_l ()->get_var ("slur_height_damping");
-  Real slope_damp_f = paper_l ()->get_var ("slur_slope_damping");
-  Real ratio_f;
+  if (!interstaff_b)
+    {
+      height_damp_f = paper_l ()->get_var ("slur_height_damping");
+      slope_damp_f = paper_l ()->get_var ("slur_slope_damping");
+      snap_f = paper_l ()->get_var ("slur_snap_to_stem");
+    }
+  else
+    {
+      height_damp_f = paper_l ()->get_var ("slur_interstaff_height_damping");
+      slope_damp_f = paper_l ()->get_var ("slur_interstaff_slope_damping");
+      snap_f = paper_l ()->get_var ("slur_interstaff_snap_to_stem");
+    }
 
 
   /*
@@ -241,27 +285,28 @@ Slur::do_post_processing ()
       Direction d = (Direction)(- dir_ * (sign (dy_f)));
       if (!d)
        d = LEFT;
-      dy_f_drul_[d] += dir_ * height_f * height_damp_f;
+      Real damp_f = dir_ * (ratio_f - height_damp_f) * dx_f;
+      dy_f_drul_[d] += damp_f;
       /*
-       if y positions at same height, correct both ends
+       if y positions at about the same height, correct both ends
        */
       if (abs (dy_f / dx_f ) < slope_damp_f)
        {
-         dy_f_drul_[-d] += dir_ * height_f * height_damp_f;
+         dy_f_drul_[-d] += damp_f;
        }
     }
 
   /*
     If, after correcting, we're close to stem-end...
   */
-  Real snap_f = paper_l ()->get_var ("slur_snap_to_stem");
   do
     {
       if ((note_column_drul[d] == spanned_drul_[d])
          && (note_column_drul[d]->stem_l_)
          && (note_column_drul[d]->stem_l_->dir_ == dir_)
          && (abs (note_column_drul[d]->stem_l_->extent (Y_AXIS)[dir_]
-                  - dy_f_drul_[d]) <= snap_f))
+                  - dy_f_drul_[d] + (d == LEFT ? 0 : interstaff_f))
+             <= snap_f))
        {
          /*
            attach to stem-end
@@ -270,6 +315,7 @@ Slur::do_post_processing ()
          dx_f_drul_[d] = stem_l->hpos_f ()
            - spanned_drul_[d]->absolute_coordinate (X_AXIS);
          dy_f_drul_[d] = stem_l->extent (Y_AXIS)[dir_];
+         dy_f_drul_[d] += info_drul[d].interstaff_f_;
          dy_f_drul_[d] += dir_ * 2 * y_gap_f;
        }
     }
@@ -280,20 +326,43 @@ Array<Offset>
 Slur::get_encompass_offset_arr () const
 {
   Array<Offset> offset_arr;
+#if 0
+  /*
+    check non-disturbed slur
+    FIXME: x of ends off by a tiny bit!!
+  */
+  offset_arr.push (Offset (0, dy_f_drul_[LEFT]));
+  offset_arr.push (Offset (0, dy_f_drul_[RIGHT]));
+  return offset_arr;
+#endif
+
+  int interstaff_i = 0;
+  for (int i = 0; i < encompass_arr_.size (); i++)
+    {
+      Encompass_info info (encompass_arr_[i], dir_, this);
+      if (info.interstaff_f_)
+       {
+         interstaff_i++;
+       }
+    }
+  bool interstaff_b = interstaff_i && (interstaff_i < encompass_arr_.size ());
+  
   Offset origin (absolute_coordinate (X_AXIS), 0);
 
   int first = 1;
   int last = encompass_arr_.size () - 2;
 
+  offset_arr.push (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
   /*
     left is broken edge
   */
   if (encompass_arr_[0] != spanned_drul_[LEFT])
     {
       first--;
+      Encompass_info left_info (encompass_arr_[0], dir_, this);
+      if (interstaff_b)
+       offset_arr[0][Y_AXIS] += left_info.interstaff_f_;
     }
-  Encompass_info left_info (encompass_arr_[0], dir_, this);
-  offset_arr.push (Offset (0, left_info.interstaff_f_));
 
   /*
     right is broken edge
@@ -309,20 +378,9 @@ Slur::get_encompass_offset_arr () const
       offset_arr.push (info.o_ - origin);
     }
 
-  offset_arr.push (Offset (do_width ().length (), 0));
+  offset_arr.push (Offset (do_width ().length () + dx_f_drul_[RIGHT],
+                          dy_f_drul_[RIGHT]));
 
-#if 1
-  offset_arr[0] += Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]);
-  offset_arr.top () += Offset (dx_f_drul_[RIGHT], dy_f_drul_[RIGHT]);
-#else
-  /*
-    check non-disturbed slur
-    FIXME: ends off by a tiny bit!!
-  */
-  offset_arr[0] += Offset (0, dy_f_drul_[LEFT]);
-  offset_arr.top () += Offset (0, dy_f_drul_[RIGHT]);
-#endif
-  
   return offset_arr;
 }
 
index c61dd3df3f9222e405240b1cbe68458690af3ecc..a7785e47b47aba98cc1b13b10fe4a8d64a776227 100644 (file)
@@ -52,6 +52,9 @@ Spacing_engraver::do_removal_processing ()
 void
 Spacing_engraver::acknowledge_element (Score_element_info i)
 {
+  if (i.elem_l_->get_elt_property (grace_scm_sym) != SCM_BOOL_F)
+    return;
+
   if (Rhythmic_req * r = dynamic_cast<Rhythmic_req*>(i.req_l_))
     {
       Rhythmic_tuple t(i, now_mom () + r->length_mom ());
index 646d37cd97b9baed08b1a7800583c60f6cd3415a..1860a77d82b6997e54587ed7b4bf1d21c9b48e1b 100644 (file)
@@ -12,7 +12,7 @@
 #include "dimensions.hh"
 #include "paper-def.hh"
 #include "warn.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "line-of-score.hh"
 
 Spacing_spanner::Spacing_spanner ()
index 9fbd9b8226cdffdf3c9c4b2d8d0797441580bbe1..4d4659f66aa0d43b3ea0e9963234ac1cae21484b 100644 (file)
@@ -8,8 +8,8 @@
 
 #include "debug.hh"
 #include "spanner.hh"
-#include "p-col.hh"
-#include "p-score.hh"
+#include "paper-column.hh"
+#include "paper-score.hh"
 #include "molecule.hh"
 #include "paper-outputter.hh"
 
@@ -208,3 +208,31 @@ Spanner::do_space_processing ()
       ss[i].add_to_cols ();
     }
 }
+
+void
+Spanner::handle_broken_dependents ()
+{
+#if 0 // need to remove delayd breaking.
+  if (original_l_ && !original_l_->line_l ())
+    {
+      
+      /* we're the broken pieces of a spanner.
+        Check if our Y-leaning point is sane.
+       */
+      Dimension_cache *d = dim_cache_[Y_AXIS]->parent_l_;
+      if (d)
+       return;
+
+      Score_element *  ref_elt = dynamic_cast<Score_element*>(d->element_l());
+      Spanner *ref_span = dynamic_cast<Spanner*> (ref_elt);      
+      if (!ref_elt->line_l () && ref_span)
+       {
+         Spanner *broken_refpoint =  ref_span->find_broken_piece (line_l ());
+         if (broken_refpoint)
+           dim_cache_[Y_AXIS]->parent_l_ = broken_refpoint->dim_cache_[Y_AXIS];
+         else
+           programming_error ("Spanner y -refpoint lost.");
+       }
+    }
+#endif
+}
index aee2bba8bce4b42e1b43ad84ddb154950d04297c..79ec147d692217b43943ffc4b0da2cac16544c03 100644 (file)
@@ -11,7 +11,7 @@
 #include <limits.h>
 #include "killing-cons.tcc"
 #include "spring-spacer.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "debug.hh"
 #include "dimensions.hh"
 #include "qlp.hh"
index 8ba0ff79667b3261c665fcdb977ad1f49d408cb8..57c99c1fcd2e16163bfd1e8f243a76c7dd993211 100644 (file)
@@ -10,7 +10,7 @@
 #include "spring.hh"
 #include "debug.hh"
 #include "item.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 
 Spring::Spring ()
 {
index ba0431f4e36e108e2fb31a93da3bae2e1e38c02e..b665200f35c84388ec995e939319e8b9ae95af3d 100644 (file)
@@ -9,7 +9,7 @@
 #include "staff-sym-engraver.hh"
 #include "staff-symbol.hh"
 #include "score.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "staff-symbol-referencer.hh"
 #include "paper-def.hh"
 
index 0fd640c795e997a67a9eafed7764cb8941e9f893..3551ad97cfdf43cf191fe80ff1e40b34458fc9c4 100644 (file)
@@ -14,7 +14,7 @@
 #include "note-head.hh"
 #include "lookup.hh"
 #include "molecule.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "misc.hh"
 #include "beam.hh"
 #include "rest.hh"
index 0401602c7ad5248a479c90a32a9db74433e647b2..03788e8f403a90bce79702ec0de5abe46567ecb2 100644 (file)
@@ -8,7 +8,7 @@
 
 #include "super-element.hh"
 #include "line-of-score.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "string.hh"
 #include "paper-outputter.hh"
 
@@ -26,6 +26,7 @@ enum Score_element_status {
   SPACING,
   SPACED,
   BROKEN,
+  BROKEN_SECOND,
   POSTCALCING,         // busy calculating. This is used to trap cyclic deps.
   POSTCALCED,          // after spacing calcs done
   BREWING,
@@ -59,6 +60,8 @@ void
 Super_element::break_processing ()
 {
   calculate_dependencies (BROKEN, BROKEN, &Score_element::do_break_processing);
+  calculate_dependencies (BROKEN_SECOND, BROKEN_SECOND,
+                         &Score_element::handle_broken_dependents);
 }
 void
 Super_element::post_processing ()
index 86eab96d1d58ec54f971115cba59ebf9962b19ff..e6c1902d778a42d470edcca27b166a10380f35f4 100644 (file)
@@ -9,7 +9,7 @@
 #include "paper-def.hh"
 #include "tie.hh"
 #include "note-head.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "debug.hh"
 
 
index 2959bb7280135c59f170f0f03743aaadff22bdc8..ccd0dd7dbe6588709efa9b6f50b39aeba6456b09 100644 (file)
@@ -210,18 +210,25 @@ Translator_group::find_create_translator_l (String n, String id)
   return ret;
 }
 
-
 bool
-Translator_group::do_try_music (Music* req_l)
+Translator_group::try_music_on_nongroup_children (Music *m)
 {
   bool hebbes_b =false;
 
   Link_array<Translator> nongroups (nongroup_l_arr ());
   
   for (int i =0; !hebbes_b && i < nongroups.size() ; i++)
-    hebbes_b =nongroups[i]->try_music (req_l);
+    hebbes_b =nongroups[i]->try_music (m);
+  return hebbes_b;
+}
+
+bool
+Translator_group::do_try_music (Music* m)
+{
+  bool hebbes_b = try_music_on_nongroup_children (m);
+  
   if (!hebbes_b && daddy_trans_l_)
-    hebbes_b = daddy_trans_l_->try_music (req_l);
+    hebbes_b = daddy_trans_l_->try_music (m);
   return hebbes_b ;
 }
 
index aa17ba79728cdb66c77cd8ade4b96425fc8508c2..8ea56cdd42b9cc41fce0d5d20ab298527ec9b3af 100644 (file)
@@ -11,7 +11,7 @@
 #include "debug.hh"
 #include "lookup.hh"
 #include "molecule.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "paper-def.hh"
 #include "tuplet-spanner.hh"
 #include "stem.hh"
index 7a212641598d251101e132f39305f95384c710c8..d02875c1d051deedc2ce739cf12548f83f077514 100644 (file)
@@ -7,7 +7,7 @@
 */
 #include "translator-group.hh"
 #include "axis-group-engraver.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "vertical-align-engraver.hh"
 #include "axis-align-spanner.hh"
 #include "axis-group-spanner.hh"
index db955da97ee60fd690f2876b82c180a8a290efa5..9b0566af2f219caa8fddfa84985cf23977adfeaa 100644 (file)
@@ -12,7 +12,7 @@
 #include "lookup.hh"
 #include "molecule.hh"
 #include "note-column.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "bar.hh"
 #include "paper-def.hh"
 #include "volta-spanner.hh"
index 789117b757b6071992533dc69d7597d5bae500ca..f9c7ea8dfa5c5bcf215f42537ad2a2dbef556e34 100644 (file)
@@ -8,9 +8,9 @@
 
 #include "word-wrap.hh"
 #include "paper-def.hh"
-#include "p-score.hh"
+#include "paper-score.hh"
 #include "debug.hh"
-#include "p-col.hh"
+#include "paper-column.hh"
 #include "spring-spacer.hh"
 
 
index 28bcabd43e67305f267ff8e86f6799dcea81f5ca..30677bb55ede8d6b6cc6b9881f3ac8316f7b9e50 100644 (file)
@@ -39,7 +39,7 @@ dorian = 10
 
 
 papersize = "a4"
-
+\include "generic-paper.ly"
 \include "paper20.ly"
 
 \paper{
index f340a29c9a47625ffed043e2242fc0b6843111be..36fe34569181b6663b971b9b310d168afd9ed27d 100644 (file)
@@ -114,10 +114,9 @@ GraceContext=\translator {
        \consists "Note_heads_engraver";
        \consists "Local_key_engraver";
        \consists "Stem_engraver";
-       \consists "Slur_engraver";
-       \consists "Timing_engraver";    %UGH.
        \consists "Beam_engraver";
        beamAuto = "1";
+       \consists "Slur_engraver";
        \consists "Auto_beam_engraver";
        \include "auto-beam-settings.ly";
        \consists "Align_note_column_engraver";
@@ -129,6 +128,7 @@ GraceContext=\translator {
        fontSize = "-1";
        stemLength = "6.0";
        verticalDirection = "1";
+       graceAccidentalSpace= 1.5 * \interline;
 };
 
 \translator{\GraceContext}
diff --git a/ly/generic-paper.ly b/ly/generic-paper.ly
new file mode 100644 (file)
index 0000000..206c771
--- /dev/null
@@ -0,0 +1,5 @@
+\paper {
+       texsetting = "\\input lilyponddefs ";
+       pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n";
+       scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n";
+}
index 264691e06828c4e3f8435026b58da3ae4b533e10..c015aa2a1e752224d61fdbcefad47f68b171c9a4 100644 (file)
@@ -18,15 +18,13 @@ paper_sixteen = \paper {
        font_finger = 4.;
        font_volta = 5.;
        font_number = 8.;
-             font_dynamic = 10.;
-   font_mark = 10.;
+       font_dynamic = 10.;
+       font_mark = 10.;
 
        arithmetic_basicspace = 2.;
         arithmetic_multiplier = 4.8\pt;
-       texsetting = "\\input lilyponddefs ";
-       pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n";
-       scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n";
-       scmsetting = "\"\\\\input lilyponddefs \\\\musixsixteendefs\";\n";
+
+%      scmsetting = "\"\\\\input lilyponddefs \";\n";
 
        0 = \font "feta16" 
        -1 = \font "feta13"
index 91594546997af6b0fc5b009c9337d9da479952d2..800ad6038bc6cbfca6780efced2d2364e5318f3e 100644 (file)
@@ -30,13 +30,8 @@ paper_twenty = \paper {
 
        arithmetic_basicspace = 2.;
         arithmetic_multiplier = 6.\pt;
-       texsetting = "\\input lilyponddefs ";
-       pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n";
-       % urg, debugging only
-       scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n";
-       scmsetting = "\"\\\\input lilyponddefs \\\\musixtwentydefs\";\n";
 
-       -2 = \font "feta13"
+               -2 = \font "feta13"
        -1 = \font "feta16"
        0 = \font "feta20"
 
index 47b28f061efea9675ced4a79ffed37f09b29ddac..ca52e36fab29b2b3a8410fe85f01cd67f46fdf95 100644 (file)
@@ -93,10 +93,14 @@ slur_x_minimum = 3.0 * \interline;
 
 % slope damping: keep dy/dx < slur_slope_damping
 slur_slope_damping = 0.3;
+slur_interstaff_slope_damping = 0.8;
 % height damping: keep h/dx < slur_height_damping
-slur_height_damping = 0.5;
+slur_height_damping = 0.6;
+slur_interstaff_height_damping = 1.5;
 % snap to stem if slur ends closer to stem than
 slur_snap_to_stem = 1.5 * \interline;
+slur_interstaff_snap_to_stem = 2.5 * \interline;
+
 
 tie_x_minimum = \slur_x_minimum;
 % OSU: tie gap == slur gap
index b72fd64cc019a4ab5f1251988858a68d6a599b62..369539b369ee47ac6bb3239e5b1df06e40be76b9 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Titel: LilyPond
-Versie: 1.1.57
-Inschrijf datum: 13JUL99
+Versie: 1.1.58
+Inschrijf datum: 14JUL99
 Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       770k lilypond-1.1.57.tar.gz 
+       770k lilypond-1.1.58.tar.gz 
 Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.57.tar.gz 
+       770k lilypond-1.1.58.tar.gz 
 Copi-eer voorwaarden: GPL
 End
index 5a29149615f913606ed0274ce4ba96b3ce737970..07d36ef0548521587be4e28ca07db6c6a6763acd 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 1.1.57
-Entered-date: 13JUL99
+Version: 1.1.58
+Entered-date: 14JUL99
 Description: 
 
 LilyPond is the GNU Project music typesetter. It transforms a musical
@@ -12,8 +12,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
        janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       770k lilypond-1.1.57.tar.gz 
+       770k lilypond-1.1.58.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       770k lilypond-1.1.57.tar.gz 
+       770k lilypond-1.1.58.tar.gz 
 Copying-policy: GPL
 End
index 6f42f2001d66fb16716d14f12fcbfb7b6e1c6c66..a6c7f5316a163645e4c3d5b5ddff06cfb869facf 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.1.57
+Version: 1.1.58
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.57.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.58.tar.gz
 Summary: A program for printing sheet music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>