]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.2.4 release/1.2.4
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 30 Aug 1999 11:05:24 +0000 (13:05 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 30 Aug 1999 11:05:24 +0000 (13:05 +0200)
120 files changed:
AUTHORS.txt
CHANGES
Documentation/metadoc/test.tely
Documentation/tex/mudela-book-doc.doc
Documentation/tex/reference-manual.yo
INSTALL.txt
NEWS
PATCHES.txt
TODO
VERSION
aclocal.m4
buildscripts/mf-to-table.py
buildscripts/set-lily.sh
configure
flower/file-path.cc
flower/getopt-long.cc
flower/include/libc-extension.hh
flower/international.cc
input/test/xaxisscript.ly [new file with mode: 0644]
lib/binary-source-file.cc
lily/align-element.cc
lily/axis-align-spanner.cc
lily/axis-group-element.cc
lily/bar-script-engraver.cc
lily/bar.cc
lily/base-span-bar-engraver.cc
lily/beam.cc
lily/bezier.cc
lily/break-align-item.cc
lily/breathing-sign.cc
lily/clef-item.cc
lily/collision-engraver.cc
lily/collision.cc
lily/command-request.cc
lily/dimension-cache.cc
lily/dots.cc
lily/encompass-info.cc
lily/global-ctor.cc
lily/global-translator.cc
lily/gourlay-breaking.cc
lily/grace-position-engraver.cc
lily/graphical-axis-group.cc
lily/graphical-element.cc
lily/hara-kiri-vertical-group-spanner.cc
lily/include/align-element.hh
lily/include/axis-group-element.hh
lily/include/breathing-sign.hh
lily/include/change-iterator.hh
lily/include/command-request.hh
lily/include/dimension-cache.hh
lily/include/file-results.hh
lily/include/grace-engraver-group.hh
lily/include/grace-iterator.hh
lily/include/grace-music.hh
lily/include/grace-performer-group.hh
lily/include/graphical-element.hh
lily/include/key-def.hh
lily/include/lyric-combine-music-iterator.hh
lily/include/rhythmic-head.hh
lily/include/single-malt-grouping-item.hh
lily/include/staff-symbol-referencer.hh
lily/include/tie-performer.hh
lily/include/transposed-music.hh
lily/item.cc
lily/lily-guile.cc
lily/lily-version.cc
lily/main.cc
lily/melisma-engraver.cc
lily/multi-measure-rest.cc
lily/note-column.cc
lily/note-head-side.cc
lily/note-head.cc
lily/note-heads-engraver.cc
lily/p-col.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/score-element.cc
lily/score-engraver.cc
lily/score-priority-engraver.cc
lily/script-column-engraver.cc
lily/script-column.cc
lily/script-engraver.cc
lily/script.cc
lily/single-malt-grouping-item.cc
lily/slur-engraver.cc
lily/slur.cc
lily/span-bar.cc
lily/span-score-bar-engraver.cc
lily/spanner.cc
lily/spring-spacer.cc
lily/staff-margin-engraver.cc
lily/staff-side.cc
lily/staff-symbol-referencer.cc
lily/stem-info.cc
lily/stem-staff-side.cc
lily/stem.cc
lily/text-engraver.cc
lily/tie-performer.cc
lily/tie.cc
make/mudela-rules.make
make/out/lilypond.lsm
make/out/lilypond.spec
midi2ly/main.cc
midi2ly/midi2ly-version.cc
scm/lily.scm
scripts/mudela-book.py
stepmake/aclocal.m4
stepmake/configure
stepmake/stepmake/c++-targets.make
stepmake/stepmake/c++-vars.make
stepmake/stepmake/c-targets.make
stepmake/stepmake/c-vars.make
stepmake/stepmake/executable-targets.make
stepmake/stepmake/generic-vars.make
stepmake/stepmake/library-targets.make
tex/lily-ps-defs.tex
tex/lilyponddefs.tex

index a9440caf71ed4647e2c3a8b8d7c96c3618ee0297..824ab30814e0b50c7b3ae99c4a8bd1afe7130949 100644 (file)
@@ -67,5 +67,7 @@ o    Jeffrey B. Reed <daboys@austin.rr.com>, Windows-NT sup-
 
 o    Shay Rojanski Some mudela source.
 
+o    Laura Conrad (lconrad@world.std.com) fixes to abc2ly
+
 Your name could be here! If you want to fix something, do
 it, and send us a patch!
diff --git a/CHANGES b/CHANGES
index 85ca28b41716e3e93987cbee11868f97177ebb1f..8fa3170237c8d612fdd784105290b2aba3a14a64 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,23 @@
+pl 3.hwn1
+       - mudela-book tweaks for surviving texinfo
+       - include feta  command seqs. in .tex 
+       - guile 1.3.2 fixes.
+       - include  config.h directly.
+       - bf: mudela-book.  Now linear in size of document.
+       - scriptHorizontal property; more or less works.
+       - changes in Graphical_element, Graphical_axis_group
+offset removed from public interface, now use relative_coordinate ().
+extent () is given relative to this.
+       - removed Rhythmic_head::dots_i_
+       - bf: Rhythmic_head::do_substitute_element_pointer ()
+       - Direct access to dim_cache_ replaced by methods in
+Graphical_element.
+3.mk1
+       - left endings of various spanners adjusted
+
+**********
+
+
 pl 2.mk1
        - bf, tie.cc: handle postbreak left align correctly
 pl 2.lec1
index ae2662fa5470e48438344b5192e7b32e65ffb217..e22d3c3541fe6b7c8aca2e562c814fc48b1ee085 100644 (file)
 @node foo
 @section foo
 
-@mudela[veryverbatim, intertext="produces this music:"]
+@mudela[verbatim, intertext="produces this music:"]
+\include "paper16.ly"
 \score{
   \notes\relative c'{
        a b c
   }
 }
 @end mudela
+
+@bye
index 97fd452457176bdcb7aa374f3974efd253ecbf4f..46c2423c9bd2400d87ced16ef1a2df6273deba13 100644 (file)
@@ -189,6 +189,7 @@ There is an even shorter way to write small musical fragments. This
 triad, \mudela{<c' e g>}, was created with this code:
 \verb|\mudela{<c' e g>}|
 
+\def\obsolete{
 Mudela-book defines the \verb|\mudela| command, and let you define
 your own commands in a file specified by 
 the command line option \verb|--initfile=filename|. The format for the
@@ -224,6 +225,7 @@ send fontsize options to the defined commands.
   \paper{linewidth = -1.\cm;}
 }
 \end{mudela}
+}
 
 \section{More options}
 \begin{itemize}
index a07e17480567e07f23cad8035b9f3056044d034f..0d17437b98e04a613a9935b137f2357f08cfd205 100644 (file)
@@ -27,6 +27,8 @@ COMMENT(
   
     accordeon symbols
     Music expression / music expression
+    property lists  should be alphabetic.
+    
 )
 
 
@@ -2266,20 +2268,23 @@ subsubsect(Voice properties)
 cindex(properties!Voice)
 
 description(  
-  dit(code(stemLength))indexcode(stemLength) nl()
-    Set length of stems.  Unit is `code(interline)/2', so
-    code(stemLength) defaults bind(to)7.
-
-  dit(code(stemLeftBeamCount))indexcode(stemLeftBeamCount) nl()
-    Specify the number of beams to draw on the left side of the next
-    note.  Overrides automatic beaming.  The value is only used once,
-    and then it is erased.
+  dit(code(abbrev))indexcode(abbrev) nl()
+    Set length for tremolo to be used if no length is explicitly
+    specified. 
 
-  dit(code(stemRightBeamCount))indexcode(stemRightBeamCount) nl()
-    Specify the number of beams to draw on the right side of the next
-    note.  Overrides automatic beaming.  The value is only used once,
-    and then it is erased.
+  dit(code(articulationScriptPadding))indexcode(articulationScriptPadding)
+    nl()
+    Determines the extra space added between articulation marks, such
+    as staccato, tenuto, trill, up/down bow or fermata, and the
+    closest staff line or note.
 
+  dit(code(articulationScriptVerticalDirection))
+    indexcode(articulationScriptVerticalDirection) nl()
+    Determines the location of articulation marks.  Set to code(\up)
+    to print marks above the staff; set to code(\down) to print marks
+    below the staff.  This property does not override explicit
+    directions marked with `code(^)' or `code(_)' in the mudela file.
+    
   dit(code(noAutoBeaming))indexcode(beamAuto) nl()
     If set bind(to)1 then beams are not generated automatically.
 
@@ -2291,10 +2296,6 @@ description(
     Specifies when automatically generated beams can start.  See
     bind(section)ref(autobeam).
 
-  dit(code(textEmptyDimension))indexcode(textEmptyDimension) nl()
-    If set bind(to)1 then text placed above or below the staff is
-    assumed to have zero width.
-
   dit(code(beamquantisation))indexcode(beamquantisation) nl()
     Set to code(\none) for no quantization.  Set to code(\normal) to
     quantize position and slope.  Set to code(\traditional) to avoid
@@ -2312,11 +2313,41 @@ description(
     code(\beamslopezero)keyindex(beamslopezero) each set the
     corresponding value.
 
-  dit(code(restStyle))indexcode(restStyle) nl()
-    Change the layout of rests shorter than quarter notes. 
-    Currently, the standard layout code("") and mensural notation
-    code("mensural") are available. Mensural rests of duration
-    32 or shorter are not available.
+  dit(code(dynamicDirection))indexcode(dynamicDirection) nl()
+    Determines location of dynamic marks.  Set to code(\up) to print
+    marks above the staff; set to code(\down) to print marks below
+    the staff.
+
+  dit(code(dynamicStyle))indexcode(dynamicStyle) nl()
+    Set the text style for dynamics.  
+
+  dit(code(fontSize))indexcode(fontSize) nl()
+    Can be used to select smaller font sizes for music.  The normal
+    font size bind(is)0, and the two smaller sizes are -1
+    bind(and)-2.
+
+
+   dit(code(forceHorizontalShift))indexcode(forceHorizontalShift) nl()
+    Force horizontal shift for collision resolution.  It overrides
+    automatic collision resolution.  The value is the shift amount
+    expressed in code(note_width), as set in the paper section.
+    
+
+  dit(code(horizontalNoteShift))indexcode(horizontalNoteShift) nl()
+    Enable LilyPond to shift notes horizontally if they collide with
+    other notes.  This is useful when typesetting many voices on one
+    staff.  The identifier code(\shift)keyindex(shift) is defined to
+    enable this.  Traditionally, the outer chords (the upmost and
+    downmost voices), should have no code(horizontalNoteShift).
+
+  dit(code(markScriptPadding))indexcode(markScriptPadding) nl()
+    Determines the extra space added between the mark and the closest
+    staff line or note.
+
+  dit(code(markDirection))indexcode(markDirection) nl()
+    Determines if marks should be printed above or below the staff.
+    Set to code(\up) to print marks above the staff; set to
+    code(\down) to print marks below the staff.
 
   dit(code(midiInstrument))indexcode(midiInstrument) nl()
     Sets the instrument for MIDI output.  If this property is not set
@@ -2325,24 +2356,22 @@ description(
     appears in bind(section)ref(midilist).  If you use a string which
     is not listed, LilyPond will silently substitute piano.
 
-  dit(code(transposing))indexcode(transposing) nl()
-    Transpose the MIDI output.  Set this property to the number of
-    half-steps to transpose by.
 
   dit(code(oldTieBehavior))indexcode(oldTieBehavior) nl()
     Set bind(to)1 in order to get old tie behavior where ties would
     connect unequal pitches.  This property is deprecated, and its
     use is not recommended.
 
-  dit(code(verticalDirection))indexcode(verticalDirection) nl()
-    Determines the direction of stems, subscripts, beams, slurs, and
-    ties.  Set to code(\down) to force them down, code(\up) to force
-    them up, or code(\free) to let LilyPond decide.  This can be used
-    to distinguish between voices on the same staff.  The
-    code(\stemdown)keyindex(stemdown), code(\stemup)keyindex(stemup),
-    and code(\stemboth)keyindex(stemboth) identifiers set this
-    property.
-
+  dit(code(restStyle))indexcode(restStyle) nl()
+    Change the layout of rests shorter than quarter notes. 
+    Currently, the standard layout code("") and mensural notation
+    code("mensural") are available. Mensural rests of duration
+    32 or shorter are not available.
+    
+  dit(code(scriptHorizontal))indexcode(scriptHorizontal) nl()
+    Put scripts left or right of note heads.  Support for this is
+    limited.  Accidentals will collide with scripts.
+    
   dit(code(slurVerticalDirection))indexcode(slurVerticalDirection) nl()
     Set to code(\free) for free choice of slur direction, set to
     code(\up) to force slurs up, set to code(\down) to force slurs
@@ -2350,10 +2379,6 @@ description(
     code(\slurdown)keyindex(slurdown), and
     code(\slurboth)keyindex(slurboth) are available.
 
-  dit(code(tieVerticalDirection))indexcode(tieVerticalDirection) nl()
-    Set to code(\free) for free choice of tie direction, set to
-    code(\up) to force ties up, set to code(\down) to force ties
-    down.
 
   dit(code(slurDash))indexcode(slurDash) nl()
     Set bind(to)0 for normal slurs, bind(1)for dotted slurs, and a
@@ -2362,26 +2387,33 @@ description(
     code(\slurdotted)keyindex(slurdotted) are predefined to set the
     first two settings.
 
-  dit(code(horizontalNoteShift))indexcode(horizontalNoteShift) nl()
-    Enable LilyPond to shift notes horizontally if they collide with
-    other notes.  This is useful when typesetting many voices on one
-    staff.  The identifier code(\shift)keyindex(shift) is defined to
-    enable this.  Traditionally, the outer chords (the upmost and
-    downmost voices), should have no code(horizontalNoteShift).
+dit(code(stemLength))indexcode(stemLength) nl()
+    Set length of stems.  Unit is `code(interline)/2', so
+    code(stemLength) defaults bind(to)7.
 
-   dit(code(forceHorizontalShift))indexcode(forceHorizontalShift) nl()
-    Force horizontal shift for collision resolution.  It overrides
-    automatic collision resolution.  The value is the shift amount
-    expressed in code(note_width), as set in the paper section.
+  dit(code(stemLeftBeamCount))indexcode(stemLeftBeamCount) nl()
+    Specify the number of beams to draw on the left side of the next
+    note.  Overrides automatic beaming.  The value is only used once,
+    and then it is erased.
 
-  dit(code(dynamicDirection))indexcode(dynamicDirection) nl()
-    Determines location of dynamic marks.  Set to code(\up) to print
-    marks above the staff; set to code(\down) to print marks below
-    the staff.
+  dit(code(stemRightBeamCount))indexcode(stemRightBeamCount) nl()
+    Specify the number of beams to draw on the right side of the next
+    note.  Overrides automatic beaming.  The value is only used once,
+    and then it is erased.
+  dit(code(tieVerticalDirection))indexcode(tieVerticalDirection) nl()
+    Set to code(\free) for free choice of tie direction, set to
+    code(\up) to force ties up, set to code(\down) to force ties
+    down.
 
-  dit(code(dynamicStyle))indexcode(dynamicStyle) nl()
-    Set the text style for dynamics.  
+  dit(code(transposing))indexcode(transposing) nl()
+    Transpose the MIDI output.  Set this property to the number of
+    half-steps to transpose by.
 
+  
+  dit(code(textEmptyDimension))indexcode(textEmptyDimension) nl()
+    If set bind(to)1 then text placed above or below the staff is
+    assumed to have zero width.
+  
   dit(code(textStyle))indexcode(textStyle) nl()
     Set the text style for superscripts and subscripts.  See above
     for list of text styles.
@@ -2390,14 +2422,15 @@ description(
     Determines the extra space added between superscripted resp.
     subscripted text and the closest staff line or note.
 
-  dit(code(fontSize))indexcode(fontSize) nl()
-    Can be used to select smaller font sizes for music.  The normal
-    font size bind(is)0, and the two smaller sizes are -1
-    bind(and)-2.
-
-  dit(code(abbrev))indexcode(abbrev) nl()
-    Set length for tremolo to be used if no length is explicitly
-    specified.
+  dit(code(verticalDirection))indexcode(verticalDirection) nl()
+    Determines the direction of stems, subscripts, beams, slurs, and
+    ties.  Set to code(\down) to force them down, code(\up) to force
+    them up, or code(\free) to let LilyPond decide.  This can be used
+    to distinguish between voices on the same staff.  The
+    code(\stemdown)keyindex(stemdown), code(\stemup)keyindex(stemup),
+    and code(\stemboth)keyindex(stemboth) identifiers set this
+    property.
+    
 
   dit(code(tupletDirection))indexcode(tupletDirection) nl()
     Determines the direction of triplets and other tuplets.  Set to
@@ -2412,36 +2445,19 @@ description(
     it adds a bracket; setting bind(to)4 shows both a number and a
     bracket unconditionally.
 
-  dit(code(markScriptPadding))indexcode(markScriptPadding) nl()
-    Determines the extra space added between the mark and the closest
-    staff line or note.
-
-  dit(code(markDirection))indexcode(markDirection) nl()
-    Determines if marks should be printed above or below the staff.
-    Set to code(\up) to print marks above the staff; set to
-    code(\down) to print marks below the staff.
-
-  dit(code(articulationScriptPadding))indexcode(articulationScriptPadding)
-    nl()
-    Determines the extra space added between articulation marks, such
-    as staccato, tenuto, trill, up/down bow or fermata, and the
-    closest staff line or note.
-
-  dit(code(articulationScriptVerticalDirection))
-    indexcode(articulationScriptVerticalDirection) nl()
-    Determines the location of articulation marks.  Set to code(\up)
-    to print marks above the staff; set to code(\down) to print marks
-    below the staff.  This property does not override explicit
-    directions marked with `code(^)' or `code(_)' in the mudela file.
 )
 
 subsubsubsect(Staff properties)
 cindex(properties!Staff)
 
 description(
-  dit(code(createInitdefaultClef))indexcode(createInitdefaultClef) nl()
-    Specify whether clefs are created on default?  (Doesn't seem to
-    do anything.)
+  dit(code(barNonAuto))indexcode(barNonAuto) nl()
+    If set bind(to)1 then bar lines will not be printed
+    automatically; they must be explicitly created with code(\bar)
+    keywords.  Unlike with the code(\cadenza) keyword, measures are
+    still counted.  Bar generation will resume according to that
+    count if this property is set to zero.
 
   dit(code(barNumberDirection))indexcode(barNumberDirection) nl()
     Set to code(\up) or code(\down) to put bar numbers above or below
@@ -2459,6 +2475,29 @@ description(
     Specify the height of the bar lines if it should be different
     than the staff height.
 
+  dit(code(barAtLineStart))indexcode(barAtLineStart) nl()
+    Set bind(to)1 to produce a bar line after the clef at the start
+    of each line (but not at the beginning of the music).
+
+  dit(code(clefStyle))indexcode(clefStyle) nl()
+    Determines how clefs are typeset.  If set to code(transparent),
+    the clefs are not printed at all, if set to
+    code(fullSizeChanges), clef changes in the middle of a line are
+    typeset with a full size clef.  By default, clef changes are
+    typeset in smaller size.
+
+  dit(code(createKeyOnClefChange))indexcode(createKeyOnClefChange) nl()
+    Set to a nonempty string if you want key signatures to be printed
+    when the clef changes.  Set to the empty string if you do not
+    want key signatures printed.
+
+  dit(code(createInitdefaultClef))indexcode(createInitdefaultClef) nl()
+    Specify whether clefs are created on default?  (Doesn't seem to
+    do anything.)
+
+  dit(code(defaultClef))indexcode(defaultClef) nl()
+    Determines the default clef.  See code(\clef) keyword.
+
   dit(code(markHangOnClef))indexcode(markHangOnClef) nl()
     Set bind(to)1 to cause marks to appear by clefs instead of by bar
     lines.  Deprecated, use is not recommended.
@@ -2489,33 +2528,10 @@ description(
     Extra space in points to be added after the clef, time signature
     and key signature on the staff.  Deprecated, do not use.
 
-  dit(code(barAtLineStart))indexcode(barAtLineStart) nl()
-    Set bind(to)1 to produce a bar line after the clef at the start
-    of each line (but not at the beginning of the music).
-
   dit(code(noVoltaBraces))indexcode(noVoltaBraces) nl()
     Set to true to suppress the printing of brackets over alternate
     endings specified by the command code(\alternative).
 
-  dit(code(voltaSpannerDuration))indexcode(voltaSpannerDuration) nl()
-    Set to an integer to control the size of the brackets printed by
-    code(\alternative).  The integer specifies the number of whole
-    notes duration to use for the brackets.  It is rounded to the
-    nearest measure.  This can be used to shrink the length of
-    brackets in the situation where one alternative is very large. 
-    It may have odd effects if the specified duration is longer than
-    the music given in an code(\alternative).
-
-  dit(code(barNonAuto))indexcode(barNonAuto) nl()
-    If set bind(to)1 then bar lines will not be printed
-    automatically; they must be explicitly created with code(\bar)
-    keywords.  Unlike with the code(\cadenza) keyword, measures are
-    still counted.  Bar generation will resume according to that
-    count if this property is set to zero.
-
-  dit(code(defaultClef))indexcode(defaultClef) nl()
-    Determines the default clef.  See code(\clef) keyword.
-
   dit(code(numberOfStaffLines))indexcode(numberOfStaffLines) nl()
     Sets the number of lines that the staff has.
  
@@ -2526,6 +2542,15 @@ description(
     Sets the default type of bar line. See bind(Section)ref(barlines) 
     for a list of available bar types.
 
+  dit(code(instrument), code(instr))
+    indexcode(instrument)indexcode(instr) nl()
+    If code(Staff_margin_engraver)cindex(Staff_margin_engraver) is
+    added to the Staff translator, then the code(instrument) property
+    is used to label the first line of the staff and the code(instr)
+    property is used to label subsequent lines.  If the
+    code(midiInstrument) property is not set, then code(instrument)
+    is used to determine the instrument for MIDI output.
+
   dit(code(keyOctaviation))indexcode(keyOctaviation) nl()
     If set bind(to)1, then keys are the same in all octaves.  If set
     bind(to)0 then the key signature for different octaves can be
@@ -2538,20 +2563,6 @@ description(
     The default value bind(is)1.  Can be set to zero with
     code(\specialkey) or reset bind(to)1 with code(\normalkey).
 
-  dit(code(instrument), code(instr))
-    indexcode(instrument)indexcode(instr) nl()
-    If code(Staff_margin_engraver)cindex(Staff_margin_engraver) is
-    added to the Staff translator, then the code(instrument) property
-    is used to label the first line of the staff and the code(instr)
-    property is used to label subsequent lines.  If the
-    code(midiInstrument) property is not set, then code(instrument)
-    is used to determine the instrument for MIDI output.
-
-  dit(code(createKeyOnClefChange))indexcode(createKeyOnClefChange) nl()
-    Set to a nonempty string if you want key signatures to be printed
-    when the clef changes.  Set to the empty string if you do not
-    want key signatures printed.
-
   dit(code(timeSignatureStyle))indexcode(timeSignatureStyle) nl()
     Changes the default two-digit layout for time signatures.  The
     following values are recognized:
@@ -2614,12 +2625,14 @@ description(
       }
     )
 
-  dit(code(clefStyle))indexcode(clefStyle) nl()
-    Determines how clefs are typeset.  If set to code(transparent),
-    the clefs are not printed at all, if set to
-    code(fullSizeChanges), clef changes in the middle of a line are
-    typeset with a full size clef.  By default, clef changes are
-    typeset in smaller size.
+  dit(code(voltaSpannerDuration))indexcode(voltaSpannerDuration) nl()
+    Set to an integer to control the size of the brackets printed by
+    code(\alternative).  The integer specifies the number of whole
+    notes duration to use for the brackets.  It is rounded to the
+    nearest measure.  This can be used to shrink the length of
+    brackets in the situation where one alternative is very large. 
+    It may have odd effects if the specified duration is longer than
+    the music given in an code(\alternative).
 )
    
 subsubsect(GrandStaff properties)
index 59eace9b6fd93a79f8dbe9a2ad6f052f481d8701..7968bdb5233f3090069f9b7d9ce66dc3fc675dc1 100644 (file)
@@ -303,11 +303,23 @@ Precompiled i386 RedHat RPMS are available from ftp://fresh-
 meat.net/pub/rpms/lilypond/ and http://linux.umbc.edu/soft-
 ware/lilypond/rpms/.
 
+For compilation on a RedHat system you need these packages,
+in addition to the thoes needed for running:
+
+o    glibc-devel
+
+o    libstdc++-devel
+
+o    guile-devel
+
+o    flex
+
+o    bison
+
 10: DEBIAN GNU/LINUX
 
 A Debian package is also available; contact Anthony Fok
 foka@debian.org.  The build scripts are in the subdirectory
-
 debian/.
 
 11: WINDOWS NT/95
diff --git a/NEWS b/NEWS
index ec51328dcd7770775137a11d1e5956b97236d620..46cf0a67b59035067f163e612c17e5cf015ec174 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,3 @@
-
-
 WHAT'S NEW?
 
 * Large cleanups, enhanced design and GUILE integration for smaller
index f0601c00d782b8088e8d9e1b761955501fafaa93..8c30d96ee8c0e8c4aaea15669ec4a21fb41a8dd0 100644 (file)
@@ -17,7 +17,7 @@ tributing a change normally goes like this:
 o    make your fix/add your code
 
 o    Add changes to NEWS, and add yourself to Documenta-
-     tion/AUTHORS.yo
+     tion/topdocs/AUTHORS.yo
 
 o    generate a patch,
 
diff --git a/TODO b/TODO
index dcef3fa46feecd904b6ba8f4edc32605ff4f33da..ae058662c9bad1a5b2330eadd4e9ca18ff701221 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,16 +9,14 @@ Most of the items are marked in the code as well
 Grep -i for TODO, FIXME and ugh/ugr/urg.  
 
 .* TODO
-. * don't take Dimension_cache::offset in Dimension_cache::extent
+. * use Rhythmic_head::position_i () for all Staff_referenced 
 . * Break_req handling is silly (break_forbid () + \break fucks up.)
-. * redo all --help  messages.
+. * script engraver
+
 . * HaraKiriStaffContext removes bar lines and doesn't remove
     staff margin text on removed staff lines.
 . * Mondrup:
 
-- I would like to avoid that ties across line breaks run _through_ the
-clef on the new line
-
 - I would like the possibility of forcing clef- and key- changes to be
 printed _after_ the new bar line
 
@@ -43,19 +41,9 @@ the mensural music notation.
 bar line fully drawn across the staves and after that keep to the
 ChoirStaff bar line types in the rest of the scores
 
-- I would like to be able to define invisible melismatic slurs in order
-to avoid printing slurs conflicting with an original ms of printing. Of
-course I can achieve that by just inserting empty syllables in the
-lyrics. But this facility implemented in the MusiXTeX preprocessor M-tx
-is nice so ...
-
-- if I explicitly beam notes in a staff with auto beaming disabled I
+. * autoBeamMelisma: if I explicitly beam notes in a staff with auto beaming disabled I
 would like to have these beams also to be melismatic.
 
-- do I need to get warnings on 'No one to print a repeat brace' when I
-issue a '\repeat fold 2 \alternative' statement with an empty leading
-text item in a \lyrics context in order to achieve multiple lyrics lines
-in a _section_ of a score ?
 . * make all Feta (including dynamics) available to the user in
     textual scripts. Examples: "D.S. al \coda", "\mf espress.".
  
@@ -84,7 +72,6 @@ abc2ly, midi2ly?
 . * Key_engraver, Local_key_item
 . * Think of comprehensive solution for "if (grace_b == self_grace_b_)"
 . * String[String.length] doesn't trap.
-. * y dimension units: staffspace vs. Point
 . * Beam
 . * Stem
 . * Rhythmic_column and interaction stem/rhythmic_column/note_head/dots.
@@ -129,9 +116,6 @@ vertically between the two staves):
 .* STUFF
 . * We need feta-din*.mf files for more sizes than 10.
 . *
-- It's clumsy to have to set Staff.instr = " " to get instrument name
-  on only the first line.
-
 - The syntax for chords looks clumsy with two different meanings of 
   '-' and different syntax for separating modifiers from the tonic
   and from other modifiers. Why not use for example ':' between
diff --git a/VERSION b/VERSION
index d05f557d1ef4f335a5622b95222e1d3a135a5c98..9747bff5a377424bf16f340037a9ad50a5266d51 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=2
-PATCH_LEVEL=3
+PATCH_LEVEL=4
 MY_PATCH_LEVEL=
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
index 5d6b023d4004ffcf68c2a3974569daa5856ae11c..7417b337a51d7eab838f745ec236ef798e988965 100644 (file)
@@ -152,7 +152,7 @@ AC_DEFUN(AC_STEPMAKE_GXX, [
     # ugh autoconf
     # urg, egcs: how to check for egcs >= 1.1?
     changequote(<<, >>)dnl
-    if $CXX --version | grep '2\.8' > /dev/null ||
+    if $CXX --version | egrep '2\.8|2\.9' > /dev/null ||
        $CXX --version | grep 'egcs' > /dev/null
     changequote([, ])dnl
     then
@@ -175,14 +175,7 @@ AC_DEFUN(AC_STEPMAKE_GUILE, [
       AC_DEFINE(HAVE_LIBGUILE)], , $GUILE_LDFLAGS dnl
     )
     if test "$ac_cv_lib_guile_gh_scm2doubles" != yes ; then
-      GUILE_LDFLAGS="`echo $GUILE_LDFLAGS | sed -e 's/-lreadline//g'`"
-      AC_CHECK_LIB(guile, gh_doubles2scm,
-        [LIBS="`echo $GUILE_LDFLAGS | sed -e 's/-L[[/-_a-zA-Z0-9]]\+ //g'` $LIBS"
-       AC_DEFINE(HAVE_LIBGUILE)], , $GUILE_LDFLAGS dnl
-      )
-      if test "$ac_cv_lib_guile_gh_doubles2scm" != yes ; then
-       AC_STEPMAKE_WARN(You should install guile 1.3 or newer)
-      fi
+       AC_STEPMAKE_WARN(You should install guile 1.3 or newer)
     fi
 ])
 
@@ -1091,37 +1084,3 @@ main ()
   AC_SUBST(GTK___CFLAGS)
   AC_SUBST(GTK___LIBS)
 ])
-
-dnl   GUILE_FLAGS --- set flags for compiling and linking with Guile
-dnl
-dnl   This macro runs the `guile-config' script, installed with Guile,
-dnl   to find out where Guile's header files and libraries are
-dnl   installed.  It sets two variables, marked for substitution, as
-dnl   by AC_SUBST.
-dnl   
-dnl     GUILE_CFLAGS --- flags to pass to a C or C++ compiler to build
-dnl             code that uses Guile header files.  This is almost
-dnl             always just a -I flag.
-dnl   
-dnl     GUILE_LDFLAGS --- flags to pass to the linker to link a
-dnl             program against Guile.  This includes `-lguile' for
-dnl             the Guile library itself, any libraries that Guile
-dnl             itself requires (like -lqthreads), and so on.  It may
-dnl             also include a -L flag to tell the compiler where to
-dnl             find the libraries.
-
-AC_DEFUN([GUILE_FLAGS],[
-## The GUILE_FLAGS macro.
-  ## First, let's just see if we can find Guile at all.
-  AC_MSG_CHECKING(for Guile)
-  guile-config link > /dev/null || {
-    echo "configure: cannot find guile-config; is Guile installed?" 1>&2
-    exit 1
-  }
-  GUILE_CFLAGS="`guile-config compile`"
-  GUILE_LDFLAGS="`guile-config link`"
-  AC_SUBST(GUILE_CFLAGS)
-  AC_SUBST(GUILE_LDFLAGS)
-  AC_MSG_RESULT(yes)
-])
-
index efbcb7e6613ab8b3f2017cd784c9dd9197ffb820..4722fea6cd90ebd30abe716843521238b38ff836 100644 (file)
@@ -115,7 +115,7 @@ class Log_reader:
        label = tags[0]
        name = tags[1]
        afm = self.afmfile
-       print tags
+
        if tags[0] == 'font':
            self.texfile.write("% name\n")
 
@@ -138,7 +138,7 @@ class Log_reader:
            xdim = tags[3:5]
            ydim = tags[5:7]
            
-           self.texfile.write("\\fetdef\\%s{%s}\n" % (texstr, code))
+           self.texfile.write("\\def\\feta%s{\\char%s}\n" % (texstr, code))
            afm.def_symbol (code, id, texstr, xdim, ydim)
        else:
            raise 'unknown label: ' + label
index 65b4f7b4f3730c548cfc7e392b6dd7db395ae633..1c3e20a79b1f92c38cfecf4ded07ab6ae5fd5017 100755 (executable)
@@ -41,9 +41,7 @@ echo
 testvar LILYPONDPREFIX lily $LILYPOND_SOURCEDIR
 testvar MFINPUTS lily .:$MFINPUTS:$LILYPOND_SOURCEDIR/mf
 testvar TEXINPUTS lily .:$TEXINPUTS:$LILYPOND_SOURCEDIR/ps:$LILYPOND_SOURCEDIR/tex
-testvar GS_LIB lily $HOME/usr/src/lilypond/ps
 testvar GS_FONTPATH lily $HOME/usr/src/lilypond/mf/out
-testvar GUILE_LOAD_PATH lily $HOME/usr/src/lilypond/init
 testvar MAILADDRESS "@" $USER@`hostname`
 echo
 
@@ -94,5 +92,5 @@ echo
 
 echo Starting configuration
 echo
-(set -x; TEX_TFMDIR=$TEX_TFMDIR ./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise --enable-guile)
+(set -x; TEX_TFMDIR=$TEX_TFMDIR ./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise)
 
index 9681a2a71bf4d737ff6e6bb113f830873a99d1f0..3ebe0d3ded4635e6b90ef8d6e6fe31ae3f5b4fae 100755 (executable)
--- a/configure
+++ b/configure
@@ -53,10 +53,6 @@ fi
 # Derek Quinn Wyatt   98-08-21  (adapted from Jan Nieuwenhuizen's code)
 
 
-
-
-
-
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
@@ -623,7 +619,7 @@ fi
     stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
 
     echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:627: checking Package" >&5
+echo "configure:623: checking Package" >&5
     if test "x$PACKAGE" = "xSTEPMAKE"; then
        echo "$ac_t""Stepmake package!" 1>&6
        (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
@@ -651,7 +647,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
     else
         echo "$ac_t""$PACKAGE" 1>&6
        echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:655: checking for stepmake" >&5
+echo "configure:651: checking for stepmake" >&5
        # Check for installed stepmake
        if test -d $stepmake; then
            echo "$ac_t""$stepmake" 1>&6
@@ -774,7 +770,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:778: checking host system type" >&5
+echo "configure:774: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -799,7 +795,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:803: checking for $ac_word" >&5
+echo "configure:799: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -834,7 +830,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:838: checking for $ac_word" >&5
+echo "configure:834: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -871,7 +867,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:875: checking for $ac_word" >&5
+echo "configure:871: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -906,7 +902,7 @@ test -n "$TAR" || TAR="error"
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:910: checking for $ac_word" >&5
+echo "configure:906: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -946,7 +942,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:950: checking for $ac_word" >&5
+echo "configure:946: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -983,7 +979,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:987: checking for $ac_word" >&5
+echo "configure:983: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1024,7 +1020,7 @@ fi
     # Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
 set dummy ${PYTHON:-python}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1028: checking for $ac_word" >&5
+echo "configure:1024: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1257,7 +1253,7 @@ EOF
     # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1261: checking for $ac_word" >&5
+echo "configure:1257: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1287,7 +1283,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1291: checking for $ac_word" >&5
+echo "configure:1287: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1338,7 +1334,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1342: checking for $ac_word" >&5
+echo "configure:1338: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1370,7 +1366,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1374: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1370: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1381,12 +1377,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1385 "configure"
+#line 1381 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1412,12 +1408,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1416: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1412: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1421: checking whether we are using GNU C" >&5
+echo "configure:1417: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1426,7 +1422,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1430: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1426: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1445,7 +1441,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1449: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1445: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1508,7 +1504,7 @@ EOF
 fi
 
 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1512: checking how to run the C++ preprocessor" >&5
+echo "configure:1508: checking how to run the C++ preprocessor" >&5
 if test -z "$CXXCPP"; then
 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1521,12 +1517,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 1525 "configure"
+#line 1521 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1563,7 +1559,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1567: checking for $ac_word" >&5
+echo "configure:1563: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1595,7 +1591,7 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1599: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1595: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
 
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1606,12 +1602,12 @@ cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 1610 "configure"
+#line 1606 "configure"
 #include "confdefs.h"
 
 int main(){return(0);}
 EOF
-if { (eval echo configure:1615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cxx_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1637,12 +1633,12 @@ if test $ac_cv_prog_cxx_works = no; then
   { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1641: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1637: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
 cross_compiling=$ac_cv_prog_cxx_cross
 
 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1646: checking whether we are using GNU C++" >&5
+echo "configure:1642: checking whether we are using GNU C++" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1651,7 +1647,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1651: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gxx=yes
 else
   ac_cv_prog_gxx=no
@@ -1670,7 +1666,7 @@ ac_test_CXXFLAGS="${CXXFLAGS+set}"
 ac_save_CXXFLAGS="$CXXFLAGS"
 CXXFLAGS=
 echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1674: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1670: checking whether ${CXX-g++} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1704,17 +1700,17 @@ fi
 
     ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1708: checking for FlexLexer.h" >&5
+echo "configure:1704: checking for FlexLexer.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1713 "configure"
+#line 1709 "configure"
 #include "confdefs.h"
 #include <FlexLexer.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1752,7 +1748,7 @@ fi
 
     # ugh autoconf
     # urg, egcs: how to check for egcs >= 1.1?
-        if $CXX --version | grep '2\.8' > /dev/null ||
+        if $CXX --version | egrep '2\.8|2\.9' > /dev/null ||
        $CXX --version | grep 'egcs' > /dev/null
         then
            true
@@ -1765,12 +1761,12 @@ fi
 
 
     echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1769: checking whether explicit instantiation is needed" >&5
+echo "configure:1765: checking whether explicit instantiation is needed" >&5
 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1774 "configure"
+#line 1770 "configure"
 #include "confdefs.h"
 
     template <class T> struct foo { static int baz; };
@@ -1780,7 +1776,7 @@ int main() {
  return foo<int>::baz; 
 ; return 0; }
 EOF
-if { (eval echo configure:1784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lily_cv_need_explicit_instantiation=no
 else
@@ -1807,7 +1803,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1811: checking for $ac_word" >&5
+echo "configure:1807: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1850,7 +1846,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1854: checking for $ac_word" >&5
+echo "configure:1850: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1885,7 +1881,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1889: checking for $ac_word" >&5
+echo "configure:1885: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1953,7 +1949,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1957: checking for $ac_word" >&5
+echo "configure:1953: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1986,7 +1982,7 @@ test -n "$AR" || AR="error"
     # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1990: checking for $ac_word" >&5
+echo "configure:1986: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2042,7 +2038,7 @@ fi
 
 
     echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:2046: checking language" >&5    
+echo "configure:2042: checking language" >&5    
     case "$language" in
       En* | en* | Am* | am* | US* | us*)
            lang=English;;
@@ -2078,7 +2074,7 @@ EOF
 
 
     echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:2082: checking for gettext in -lintl" >&5
+echo "configure:2078: checking for gettext in -lintl" >&5
 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2086,7 +2082,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2090 "configure"
+#line 2086 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -2100,7 +2096,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:2104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2130,12 +2126,12 @@ fi
     for ac_func in gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2134: checking for $ac_func" >&5
+echo "configure:2130: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2139 "configure"
+#line 2135 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2161,7 +2157,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2193,7 +2189,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2197: checking for $ac_word" >&5
+echo "configure:2193: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2224,7 +2220,7 @@ done
 test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
 
     echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:2228: checking whether msgfmt accepts -o" >&5
+echo "configure:2224: checking whether msgfmt accepts -o" >&5
     msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
     if test "$msgfmt_output" = ""; then
        echo "$ac_t""yes" 1>&6
@@ -2252,7 +2248,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2256: checking for $ac_word" >&5
+echo "configure:2252: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2288,7 +2284,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2292: checking for $ac_word" >&5
+echo "configure:2288: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2326,7 +2322,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2330: checking for $ac_word" >&5
+echo "configure:2326: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2362,7 +2358,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2366: checking for $ac_word" >&5
+echo "configure:2362: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2401,7 +2397,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2405: checking for $ac_word" >&5
+echo "configure:2401: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2437,7 +2433,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2441: checking for $ac_word" >&5
+echo "configure:2437: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2475,7 +2471,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2479: checking for $ac_word" >&5
+echo "configure:2475: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2511,7 +2507,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2515: checking for $ac_word" >&5
+echo "configure:2511: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2545,7 +2541,7 @@ test -n "$INIMPOST" || INIMPOST="-echo no inimp or inimpost"
     fi
 
     echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6
-echo "configure:2549: checking for working metafont mode" >&5
+echo "configure:2545: checking for working metafont mode" >&5
     modelist='ljfour lj4 lj3 lj2 ljet laserjet'
     for MFMODE in $modelist; do
        $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
@@ -2577,7 +2573,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2581: checking for $ac_word" >&5
+echo "configure:2577: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2608,7 +2604,7 @@ done
 test -n "$KPSEWHICH" || KPSEWHICH="no"
 
     echo $ac_n "checking for TeX TFM directory""... $ac_c" 1>&6
-echo "configure:2612: checking for TeX TFM directory" >&5
+echo "configure:2608: checking for TeX TFM directory" >&5
     if test "x$TFMDIR" = xauto ; then
        if test "x$TEX_TFMDIR" = "x" ; then
            if test "x$KPSEWHICH" != "xno" ; then
@@ -2633,7 +2629,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2637: checking for $ac_word" >&5
+echo "configure:2633: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2668,7 +2664,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2672: checking for $ac_word" >&5
+echo "configure:2668: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2703,7 +2699,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2707: checking for $ac_word" >&5
+echo "configure:2703: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2738,7 +2734,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2742: checking for $ac_word" >&5
+echo "configure:2738: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2772,7 +2768,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2776: checking for $ac_word" >&5
+echo "configure:2772: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2807,7 +2803,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2811: checking for $ac_word" >&5
+echo "configure:2807: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2842,7 +2838,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2846: checking for $ac_word" >&5
+echo "configure:2842: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2877,7 +2873,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2881: checking for $ac_word" >&5
+echo "configure:2877: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2938,7 +2934,7 @@ test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
 ## The GUILE_FLAGS macro.
   ## First, let's just see if we can find Guile at all.
   echo $ac_n "checking for Guile""... $ac_c" 1>&6
-echo "configure:2942: checking for Guile" >&5
+echo "configure:2938: checking for Guile" >&5
   guile-config link > /dev/null || {
     echo "configure: cannot find guile-config; is Guile installed?" 1>&2
     exit 1
@@ -2950,7 +2946,7 @@ echo "configure:2942: checking for Guile" >&5
   echo "$ac_t""yes" 1>&6
 
     echo $ac_n "checking for gh_scm2doubles in -lguile""... $ac_c" 1>&6
-echo "configure:2954: checking for gh_scm2doubles in -lguile" >&5
+echo "configure:2950: checking for gh_scm2doubles in -lguile" >&5
 ac_lib_var=`echo guile'_'gh_scm2doubles | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2958,7 +2954,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lguile $GUILE_LDFLAGS      $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2962 "configure"
+#line 2958 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 #ifdef __cplusplus
@@ -2972,7 +2968,7 @@ int main() {
 gh_scm2doubles()
 ; return 0; }
 EOF
-if { (eval echo configure:2976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2997,66 +2993,16 @@ else
 fi
 
     if test "$ac_cv_lib_guile_gh_scm2doubles" != yes ; then
-      GUILE_LDFLAGS="`echo $GUILE_LDFLAGS | sed -e 's/-lreadline//g'`"
-      echo $ac_n "checking for gh_doubles2scm in -lguile""... $ac_c" 1>&6
-echo "configure:3003: checking for gh_doubles2scm in -lguile" >&5
-ac_lib_var=`echo guile'_'gh_doubles2scm | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lguile $GUILE_LDFLAGS        $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3011 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gh_doubles2scm();
-
-int main() {
-gh_doubles2scm()
-; return 0; }
-EOF
-if { (eval echo configure:3025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="`echo $GUILE_LDFLAGS | sed -e 's/-L[/-_a-zA-Z0-9]\+ //g'` $LIBS"
-       cat >> confdefs.h <<\EOF
-#define HAVE_LIBGUILE 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-      if test "$ac_cv_lib_guile_gh_doubles2scm" != yes ; then
-       
+       
     echo "configure: warning: You should install guile 1.3 or newer" 1>&2
     warn_b=yes
 
-      fi
     fi
 
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:3060: checking for 8-bit clean memcmp" >&5
+echo "configure:3006: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3064,7 +3010,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 3068 "configure"
+#line 3014 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -3077,7 +3023,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -3095,12 +3041,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:3099: checking for vprintf" >&5
+echo "configure:3045: checking for vprintf" >&5
 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3104 "configure"
+#line 3050 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -3126,7 +3072,7 @@ vprintf();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
@@ -3150,12 +3096,12 @@ fi
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:3154: checking for _doprnt" >&5
+echo "configure:3100: checking for _doprnt" >&5
 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3159 "configure"
+#line 3105 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -3181,7 +3127,7 @@ _doprnt();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -3208,12 +3154,12 @@ fi
 for ac_func in memmem snprintf vsnprintf gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3212: checking for $ac_func" >&5
+echo "configure:3158: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3217 "configure"
+#line 3163 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3239,7 +3185,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3278,7 +3224,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3282: checking for $ac_word" >&5
+echo "configure:3228: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3515,6 +3461,8 @@ s%@YODL2MSLESS@%$YODL2MSLESS%g
 s%@YODL2TEXINFO@%$YODL2TEXINFO%g
 s%@YODL2TXT@%$YODL2TXT%g
 s%@YODL2LESS_DIR@%$YODL2LESS_DIR%g
+s%@GUILE_CFLAGS@%$GUILE_CFLAGS%g
+s%@GUILE_LDFLAGS@%$GUILE_LDFLAGS%g
 s%@LIBOBJS@%$LIBOBJS%g
 s%@MAKEINFO@%$MAKEINFO%g
 
index e6408a1d15e347fd1a5e843d6c03fab551066903..c9bb3462d21b7164d660b70a43398da981675e08 100644 (file)
@@ -4,7 +4,7 @@
 
 #include <stdio.h>
 
-#include "config.hh"
+#include "config.h"
 #include "file-path.hh"
 #include "flower-debug.hh"
 
index c63f04e35341d79c8b87d3202602191bcc7ccdf4..6945a6a5b91c8f579afea32b7b3a20d7702e9b4a 100644 (file)
@@ -7,7 +7,7 @@
 #include <stdio.h>
 #include <iostream.h>
 #include <assert.h>
-#include "config.hh"
+#include "config.h"
 #include "getopt-long.hh"
 #include "international.hh"
 #include "string-convert.hh"
index ce654a799c8612f5c6d6b6061cef031c6cefc359..56a7e7c13e217464c2d0618eedbc92c8b1b85b81 100644 (file)
@@ -11,7 +11,7 @@
 #define LIBC_EXTENSION_HH
 
 #include "fproto.hh"
-#include "config.hh"
+#include "config.h"
 #include <cstddef>
 #include <stdarg.h>
 
index 9f8003961ad27ce31c57ebed76448d994505fb62..f677ef72b39f45c075f0bbf1a95b95ef8b3604da 100644 (file)
@@ -8,7 +8,7 @@
  */
 
 #include <stdarg.h>
-#include "config.hh"
+#include "config.h"
 #include "string-convert.hh"
 #include "international.hh"
 
diff --git a/input/test/xaxisscript.ly b/input/test/xaxisscript.ly
new file mode 100644 (file)
index 0000000..59fb42e
--- /dev/null
@@ -0,0 +1,18 @@
+
+\score {
+\notes {\property Thread.scriptHorizontal = "1"
+       c4-4
+       }
+       \paper { \translator {
+               \VoiceContext
+               \remove Script_engraver;
+               \remove Text_engraver;
+               
+               }
+               \translator {
+               \ThreadContext
+               \consists Script_engraver;
+               \consists Text_engraver;                
+               }
+       }
+}
index fbece6c65e25db177393b9d04ad4d15658769809..c114b816484691368674d1b37bbfbb672aa39fd7 100644 (file)
@@ -17,7 +17,7 @@
 #include "string-convert.hh"
 
 Binary_source_file::Binary_source_file (String& filename_str)
-       : Source_file (filename_str)
+  : Source_file (filename_str)
 {
 }
 
@@ -28,36 +28,36 @@ Binary_source_file::~Binary_source_file ()
 String
 Binary_source_file::error_str (char const* pos_ch_C) const
 {
-    assert (this);
-    if (!in_b (pos_ch_C))
-       return "";
-
-    char const* begin_ch_C = pos_ch_C - 8 >? ch_C ();
-    char const* end_ch_C = pos_ch_C + 7 <? ch_C () + length_i ();
-
-    String pre_str ((Byte const*)begin_ch_C, pos_ch_C - begin_ch_C);
-    pre_str = String_convert::bin2hex_str (pre_str);
-    for (int i = 2; i < pre_str.length_i (); i += 3)
-       pre_str = pre_str.left_str (i) + " " + pre_str.cut_str (i, INT_MAX);
-    String post_str ((Byte const*)pos_ch_C, end_ch_C - pos_ch_C);
-    post_str = String_convert::bin2hex_str (post_str);
-    for (int i = 2; i < post_str.length_i (); i += 3)
-       post_str = post_str.left_str (i) + " " + post_str.cut_str (i, INT_MAX);
-
-    String str = pre_str
-       + to_str ('\n')
-       + to_str (' ', pre_str.length_i () + 1) 
-       + post_str;
-    return str;
+  assert (this);
+  if (!in_b (pos_ch_C))
+    return "";
+
+  char const* begin_ch_C = pos_ch_C - 8 >? ch_C ();
+  char const* end_ch_C = pos_ch_C + 7 <? ch_C () + length_i ();
+
+  String pre_str ((Byte const*)begin_ch_C, pos_ch_C - begin_ch_C);
+  pre_str = String_convert::bin2hex_str (pre_str);
+  for (int i = 2; i < pre_str.length_i (); i += 3)
+    pre_str = pre_str.left_str (i) + " " + pre_str.cut_str (i, INT_MAX);
+  String post_str ((Byte const*)pos_ch_C, end_ch_C - pos_ch_C);
+  post_str = String_convert::bin2hex_str (post_str);
+  for (int i = 2; i < post_str.length_i (); i += 3)
+    post_str = post_str.left_str (i) + " " + post_str.cut_str (i, INT_MAX);
+
+  String str = pre_str
+    + to_str ('\n')
+    + to_str (' ', pre_str.length_i () + 1) 
+    + post_str;
+  return str;
 }
 
 int
 Binary_source_file::line_i (char const* pos_ch_C) const
 {
-    if (!in_b (pos_ch_C))
-       return 0;
+  if (!in_b (pos_ch_C))
+    return 0;
 
-    return pos_ch_C - ch_C ();
+  return pos_ch_C - ch_C ();
 }
 
 U8
index 0705d693883eacd6b6f7dfccd355e834072c3f29..d2091295152ccd15f51a1bbb2d0e407076014b70 100644 (file)
@@ -92,10 +92,9 @@ Align_element::do_side_processing ()
   Link_array<Score_element> elems;
   for (int i=0; i < elem_l_arr_.size(); i++) 
     {
-      Interval y = elem_l_arr_[i]->extent(axis ());
+      Interval y = elem_l_arr_[i]->extent(axis ()) + elem_l_arr_[i]->relative_coordinate (this, axis ());
       if (!y.empty_b())
        {
-
          Score_element *e =dynamic_cast<Score_element*>(elem_l_arr_[i]);
 
          // todo: fucks up if item both in Halign & Valign. 
@@ -229,10 +228,11 @@ Align_element::get_elt_by_priority (int p) const
 }
 
 int
-Align_element::get_priority (Score_element* e) const
+Align_element::get_priority (Score_element const * e) const
 {
-  if ( priority_i_hash_.elem_b (e))
-    return priority_i_hash_[e];
+  Score_element * nonconst = (Score_element*) e;
+  if ( priority_i_hash_.elem_b (nonconst))
+    return priority_i_hash_[nonconst];
   else
-    return elem_l_arr_.find_i (e);
+    return elem_l_arr_.find_i (nonconst);
 }
index 4aaf48e2aba00b13d88c268d5e8039692c1a2d15..4eacf9fe8b84cbb72807cafa6791e414262ce7e2 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  axis-align-spanner.cc --  implement 
+  axis-align-spanner.cc --  implement Axis_align_spanner
   
   source file of the GNU LilyPond music typesetter
   
index 2d303f35385a3eea9da26ccd4818bb12089f1513..1fa40edda0842fcf6911b04cc4e4be052c548214 100644 (file)
@@ -63,8 +63,8 @@ void
 Axis_group_element::set_axes (Axis a1, Axis a2)
 {
   Graphical_axis_group::set_axes (a1,a2);
-  dim_cache_[X_AXIS]->set_empty ((a1 != X_AXIS && a2 != X_AXIS));
-  dim_cache_[Y_AXIS]->set_empty ((a1 != Y_AXIS && a2 != Y_AXIS));
+  set_empty (a1 != X_AXIS && a2 != X_AXIS, X_AXIS);
+  set_empty (a1 != Y_AXIS && a2 != Y_AXIS, Y_AXIS);
 }
 
 
@@ -90,8 +90,8 @@ Axis_group_element::extra_extent (Axis a )const
   urg->purge_extra ();         // Yeah yeah,  const correctness.
   for (int i=0;  i < extra_elems_.size (); i++)
     {
-      Interval ge = extra_elems_[i]->extent (a);
-      ge += extra_elems_[i]->relative_coordinate (dim_cache_[a], a);
+      Interval ge = extra_elems_[i]->relative_coordinate (this, a)
+       + extra_elems_[i]->extent (a);
       g.unite (ge);
     }
   return g;
@@ -158,3 +158,10 @@ Axis_group_element::purge_extra ()
        i++;
     }
 }
+
+Interval
+Axis_group_element::extent (Axis a) const
+{
+  return Graphical_element::extent (a);
+}
+  
index b13e27500fbb9b60645265c1cd9c3abd221f24fe..53721f811fb91cdf324eb4e356ad0d10f4db0a14 100644 (file)
@@ -16,6 +16,8 @@
 #include "paper-column.hh"
 #include "paper-def.hh"
 #include "dimension-cache.hh"
+
+
 Bar_script_engraver::Bar_script_engraver ()
 {
   axis_ = Y_AXIS;
@@ -46,15 +48,13 @@ void
 Bar_script_engraver::do_acknowledge_element (Item *i)
 {
   Axis other_axis = Axis((axis_ + 1)%2);
-  if (staff_side_p_ && !staff_side_p_->dim_cache_[other_axis]->parent_l_
+  if (staff_side_p_ && !staff_side_p_->parent_l(other_axis)
     {
-      staff_side_p_->dim_cache_[other_axis]->parent_l_
-       = i->dim_cache_[other_axis];
-      staff_side_p_->dim_cache_[axis_]->parent_l_
-       =  i->dim_cache_[axis_];          
+      staff_side_p_->set_parent (i,other_axis);
+      staff_side_p_->set_parent (i,axis_);
 
-      if (!text_p_->dim_cache_[other_axis]->parent_l_)
-       text_p_->dim_cache_[other_axis]->parent_l_ = i->dim_cache_[other_axis];
+      if (!text_p_->parent_l(other_axis))
+       text_p_->set_parent (i,other_axis);
       staff_side_p_->add_support (i);
 
       /*
index aba1466cd995442c4c6f82e7335be0285ad9c13c..314f8e01a2d2227cf96fd52cad10f0c71c951b07 100644 (file)
@@ -83,6 +83,6 @@ Bar::do_pre_processing ()
     }
 
   if (type_str_ =="")
-    dim_cache_[X_AXIS]->set_empty (true);
+    set_empty (true, X_AXIS);
 }
   
index 80dd64a99efb9a565a8f5c2f92a5da1d89d4c391..1ffc9be84279338c586c517d2cde3cd47d7c7e3e 100644 (file)
@@ -51,7 +51,7 @@ Base_span_bar_engraver::acknowledge_element (Score_element_info i)
         */
        {
          spanbar_p_ = get_span_bar_p();
-         spanbar_p_->dim_cache_[Y_AXIS]->parent_l_ = bar_l_arr_[0]->dim_cache_[Y_AXIS];
+         spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
          String visnam =  String(name()) + "_visibility";
          
          spanbar_p_->set_elt_property (visibility_lambda_scm_sym,
@@ -64,7 +64,7 @@ Base_span_bar_engraver::acknowledge_element (Score_element_info i)
            }
          else
            {
-             spanbar_p_->dim_cache_[X_AXIS]->parent_l_ = bar_l_arr_[0]->dim_cache_[X_AXIS];      
+             spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
            }
          
          announce_element (Score_element_info (spanbar_p_,0));
index c063ddbd8e498c2ef51bc811bd1a7f6eb292de62..b6b65d681dad5e44167db0deb56ed063cae22e60 100644 (file)
@@ -49,9 +49,14 @@ void
 Beam::add_stem (Stem*s)
 {
 #if 0
+  /*
+    should figure out why this didn't work.
+
+    --hwn.
+   */
   if (!stems_.size ())
     {
-      dim_cache_[Y_AXIS]->parent_l_ = s->dim_cache_[Y_AXIS];
+      set_parent (s, Y_AXIS);
     }
 #endif
   stems_.push (s);
@@ -100,7 +105,7 @@ Beam::do_brew_molecule_p () const
       mol_p->add_molecule (sb);
     }
   mol_p->translate_axis (x0 
-    - spanned_drul_[LEFT]->absolute_coordinate (X_AXIS), X_AXIS);
+    - spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS), X_AXIS);
 
   return mol_p;
 }
index d72163f24a320ff6aa159822bb68a543cc02bce8..1e78566783d4a18cbb9a821b83e7af142ba6d593 100644 (file)
@@ -107,7 +107,6 @@ Bezier::print () const
          cout << "Controls:  ";
          for (int i=0; i < control_.size (); i++)
            cout << control_[i].str () << ", ";
-//       cout << "\n";
        }
     }
 #endif
index c3f9b05ca5ba7ba28415bc5bc2d15b97c767bf82..a391411db9fa803e76818b090ee7149745722b7a 100644 (file)
@@ -106,9 +106,9 @@ Break_align_item::do_pre_processing()
 
 
   Real pre_space = elems[0]->extent (X_AXIS)[LEFT]
-    + elems[0]->relative_coordinate (column_l ()->dim_cache_[X_AXIS], X_AXIS);
+    + elems[0]->relative_coordinate (column_l (), X_AXIS);
   Real spring_len = elems.top ()->extent (X_AXIS)[RIGHT]
-    + elems.top ()->relative_coordinate (column_l ()->dim_cache_[X_AXIS], X_AXIS);
+    + elems.top ()->relative_coordinate (column_l (), X_AXIS);
   
   Real stretch_distance =0.;
   
@@ -172,7 +172,7 @@ Break_align_item::add_breakable_item (Item *it)
        this is quite ridiculous, but we do this anyway, to ensure that no
        warning bells about missing Y refpoints go off later on.
       */
-      hg->dim_cache_[Y_AXIS]->parent_l_ = dim_cache_[Y_AXIS];
+      hg->set_parent (this, Y_AXIS);
       hg->set_elt_property (ly_symbol ("origin"), ly_ch_C_to_scm (it->name ()));
 
       pscore_l_->typeset_element (hg);
index 1fc36f8897ba22b6d9f33417b76e45cab72ba0cb..4c36f261aa4e3c564bc00a430a1c5f3434c13852 100644 (file)
@@ -22,7 +22,7 @@ TODO: --> see breathing-sign-engraver.cc
 
 Breathing_sign::Breathing_sign ()
 {
-  vertical_position_i_ = UP;
+  dir_ = UP;
   set_elt_property (breakable_scm_sym, SCM_BOOL_T);
   set_elt_property (break_priority_scm_sym, gh_int2scm (-4));
   set_elt_property (visibility_lambda_scm_sym,
@@ -35,7 +35,7 @@ Breathing_sign::set_vertical_position (Direction updown)
   assert(updown >= -1 && updown <= +1);
 
   if(updown != 0)
-    vertical_position_i_ = updown;
+    dir_ = updown;
 }
 
 Molecule*
@@ -55,5 +55,5 @@ Breathing_sign::do_post_processing()
 {
   Real dl = staff_line_leading_f();
 
-  translate_axis(2.0 * dl * vertical_position_i_, Y_AXIS);
+  translate_axis(2.0 * dl * dir_, Y_AXIS);
 }
index aa9c9feb4b9123f8a06932928f9d165587a376b1..2919255e71d13168fb90e1f93a1679df038a9531 100644 (file)
@@ -19,7 +19,7 @@
 void
 Clef_item::do_pre_processing()
 {
-  dim_cache_[Y_AXIS]->translate (y_position_i_ * staff_line_leading_f () / 2.0);
+  translate_axis (y_position_i_ * staff_line_leading_f () / 2.0, Y_AXIS);
   SCM style_sym =get_elt_property (style_scm_sym);
   String style;
   if (style_sym != SCM_BOOL_F)
@@ -30,7 +30,7 @@ Clef_item::do_pre_processing()
   if (style == "transparent")
     {
       set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-      dim_cache_[X_AXIS]->set_empty (true);
+      set_empty (true, X_AXIS);
     }
 }
 
@@ -61,8 +61,9 @@ Clef_item::do_add_processing ()
       
          g->text_str_ = "8";
          g->style_str_ = "italic";
-         g->dim_cache_[Y_AXIS]->parent_l_ = dim_cache_[Y_AXIS];
-         g->dim_cache_[X_AXIS]->parent_l_ = dim_cache_[X_AXIS];
+         g->set_parent (this, Y_AXIS);
+         g->set_parent (this, X_AXIS);   
+
          add_dependency (g);   // just to be sure.
 
          Real r = do_height ()[d] - g->extent (Y_AXIS)[-d];
index 2e7bc610dbb8df400292b11e0452642af6e1798e..20bc947c56e0b18e1855fbcbdde689359ca36359 100644 (file)
@@ -32,7 +32,7 @@ Collision_engraver::acknowledge_element (Score_element_info i)
   if (Note_column * c = dynamic_cast<Note_column *> (i.elem_l_))
     {
       /*should check Y axis? */
-      if (c->rest_b () || c->dim_cache_[X_AXIS]->parent_l_)
+      if (c->rest_b () || c->parent_l(X_AXIS))
        return ;
 
       note_column_l_arr_.push (c);
index ef3b75af4cedb76eb9d3c763b34a4c4420834203..6da2f27f8de99dbf340395a82afd998317df4f07 100644 (file)
@@ -144,7 +144,7 @@ Collision::automatic_shift ()
       bool merge  =
        downpos == uppos
        && nu_l->balltype_i_ == nd_l->balltype_i_
-       && nu_l->dots_i_ == nd_l->dots_i_;
+       && nu_l->dots_i () == nd_l->dots_i ();
 
       /*
        notes are close, but can not be merged.  Shift
index 218d283f1bce04f2e4f94c26763f218594c18098..34b517297ad589b3e41d204d22cb44afffa4ed8b 100644 (file)
@@ -19,9 +19,9 @@ Cadenza_req::do_print () const
 }
 
 bool
-Cadenza_req::do_equal_b (Request*r) const
+Cadenza_req::do_equal_b (Request const *r) const
 {
-  Cadenza_req*cad =  dynamic_cast <Cadenza_req *> (r);
+  Cadenza_req*cad =  dynamic_cast <Cadenza_req const *> (r);
   return cad && cad->on_b_ == on_b_;
 }
 
@@ -33,9 +33,9 @@ Cadenza_req::Cadenza_req (bool b)
 
 
 bool
-Bar_req::do_equal_b (Request*r) const
+Bar_req::do_equal_b (Request const *r) const
 {
-  Bar_req * b = dynamic_cast <Bar_req *> (r);
+  Bar_req * b = dynamic_cast <Bar_req const *> (r);
   return b && type_str_ == b->type_str_;
 }
 
@@ -58,17 +58,17 @@ Partial_measure_req::Partial_measure_req (Moment m)
 }
 
 bool
-Partial_measure_req::do_equal_b (Request* r) const
+Partial_measure_req::do_equal_b (Request const* r) const
 {
-  Partial_measure_req *p = dynamic_cast <Partial_measure_req *> (r);
+  Partial_measure_req *p = dynamic_cast <Partial_measure_req  const*> (r);
 
   return p&& p->length_mom_ == length_mom_;
 }
 
 bool
-Barcheck_req::do_equal_b (Request*r) const
+Barcheck_req::do_equal_b (Request const *r) const
 {
-  Barcheck_req *b = dynamic_cast<Barcheck_req*> (r);
+  Barcheck_req *b = dynamic_cast<Barcheck_req const*> (r);
   return b;
 }
 
@@ -100,10 +100,10 @@ Time_signature_change_req::do_print () const
 }
 
 bool
-Time_signature_change_req::do_equal_b (Request r) const
+Time_signature_change_req::do_equal_b (Request const *r) const
 {
   Time_signature_change_req * m
-    = dynamic_cast <Time_signature_change_req *> (r);
+    = dynamic_cast <Time_signature_change_req  const*> (r);
 
   return m && m->beats_i_ == beats_i_
     && one_beat_i_ == m->one_beat_i_;
@@ -130,9 +130,9 @@ Tempo_req::do_print () const
 
 
 bool
-Tempo_req::do_equal_b (Request *r) const
+Tempo_req::do_equal_b (Request const *r) const
 {
-  Tempo_req *t = dynamic_cast <Tempo_req *> (r);
+  Tempo_req *t = dynamic_cast <Tempo_req const*> (r);
 
   return t&& t->dur_.length_mom ()== dur_.length_mom () && metronome_i_ == t->metronome_i_;
 }
index 12d292efe61553f592d91f34f16eca1b0dea03f4..6fc99bde284f48bee45184eeb3a604d4ffaa5edf 100644 (file)
@@ -69,36 +69,25 @@ Dimension_cache::translate (Real x)
   offset_ += x;
 }
 
-
-Real
-Dimension_cache::absolute_coordinate () const
-{
-  Real r = offset_;
-  for (Dimension_cache * c = parent_l_;
-       c; c = c->parent_l_)
-    r += c->offset_;
-  return r;
-}
-
-/*
-  what *should* these functions *do* anyway.
- */
 Real
-Dimension_cache::relative_coordinate (Dimension_cache *d) const
+Dimension_cache::relative_coordinate (Dimension_cache *refp) const
 {
-  Real r =0.0;
-  if (d == this)               // UGH
+  if (refp == this)
     return 0.0;
 
-  for (Dimension_cache* c = parent_l_;
-       c != d;
-       c = c->parent_l_)
-    r +=  c->offset_;
-  return r;
+  /*
+    We catch PARENT_L_ == nil case with this, but we crash if we did
+    not ask for the absolute coordinate (ie. REFP == nil.)
+    
+   */
+  if (refp == parent_l_)
+    return offset_;
+  else
+    return offset_ + parent_l_->relative_coordinate (refp);
 }
 
 Dimension_cache *
-Dimension_cache::common_group (Dimension_cache const* s) const
+Dimension_cache::common_refpoint (Dimension_cache const* s) const
 {
   Link_array<Dimension_cache> my_groups;
   for (Dimension_cache const *c = this; c ; c = c->parent_l_)
@@ -109,7 +98,7 @@ Dimension_cache::common_group (Dimension_cache const* s) const
   for (Dimension_cache const * d = s; !common && d; d = d->parent_l_)
     common = (Dimension_cache const*)my_groups.find_l (d);
 
-  return (Dimension_cache*)common;
+  return (Dimension_cache*) common;
 }
 
 
@@ -125,14 +114,6 @@ Dimension_cache::set_empty (bool b)
     }
 }  
 
-void
-Dimension_cache::set_dim (Interval v)
-{
-  dim_ = v;
-  valid_b_ = true;
-}
-  
-
 Interval
 Dimension_cache::get_dim () const
 {
@@ -151,8 +132,6 @@ Dimension_cache::get_dim () const
     }
 
   r=dim_;
-  if (!r.empty_b()) // float exception on DEC Alpha
-    r += offset_;
 
   return r;
 }
@@ -163,8 +142,3 @@ Dimension_cache::set_callback (Dim_cache_callback c)
   callback_l_ =c;
 }
 
-Real
-Dimension_cache::offset () const
-{
-  return offset_;
-}
index cb68fc2c0c898f3e3135b8e4367147fa4479a611..c125ffcd4299c0d9767b8155a3b7a6a17c18318c 100644 (file)
@@ -30,7 +30,7 @@ Dots::do_post_processing ()
   if (!dots_i_)
     {
       set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-      set_empty (true);
+      set_empty (true, X_AXIS, Y_AXIS);
     }
 }
 
index aa97ad46b56c7fef1ed8859b39f0bc7617d6f5e9..aebad06539e91665595c6e9c6a2b1fb59ccdeb69 100644 (file)
@@ -58,8 +58,8 @@ Encompass_info::Encompass_info (Note_column const* note_column, Direction dir, S
    */
   o_[Y_AXIS] += dir * slur_l->paper_l ()->get_var ("slur_y_free");
 
-  Dimension_cache *common = stem_l->common_group (slur_l, Y_AXIS);
-  Align_element * align = dynamic_cast<Align_element*> (common->element_l ());
+  Graphical_element *common = stem_l->common_refpoint (slur_l, Y_AXIS);
+  Align_element * align = dynamic_cast<Align_element*> (common);
   if (align && align->axis() == Y_AXIS)
     {
       if (align->threshold_interval_[MIN] != 
@@ -68,19 +68,18 @@ Encompass_info::Encompass_info (Note_column const* note_column, Direction dir, S
 
       interstaff_f_ = align->threshold_interval_[MIN];
 
-      Dimension_cache * slur_refpoint = slur_l->dim_cache_[Y_AXIS];
-      Dimension_cache * note_refpoint = note_column->dim_cache_[Y_AXIS];
-
-      while (slur_refpoint->parent_l_ != common)
-       slur_refpoint = slur_refpoint->parent_l_;
-      while (note_refpoint->parent_l_ != common)
-       note_refpoint = note_refpoint->parent_l_;
+      Graphical_element const * slur_refpoint = slur_l;
+      while (slur_refpoint->parent_l  (Y_AXIS) != common)
+       slur_refpoint = slur_refpoint->parent_l (Y_AXIS);
 
+      Graphical_element const * note_refpoint = note_column;
+      while (note_refpoint->parent_l (Y_AXIS) != common)
+       note_refpoint = note_refpoint->parent_l (Y_AXIS);
 
       int slur_prio =
-       align->get_priority (dynamic_cast<Score_element*> (slur_refpoint->element_l ()));
+       align->get_priority ((Score_element*) dynamic_cast<Score_element const*> (slur_refpoint));
       int stem_prio =
-       align->get_priority (dynamic_cast<Score_element*> (note_refpoint->element_l ()));
+       align->get_priority ((Score_element*) dynamic_cast<Score_element  const *> (note_refpoint));
 
       /*
        our staff is lower -> interstaff_f_ *= -1
index 562bd6131fb271337f1e88918ae281023a252d73..e8838acf4816a12c546768e327873882733aa9e9 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  global-ctor.cc --  implement 
+  global-ctor.cc --  implement global constructors
   
   source file of the GNU LilyPond music typesetter
   
index d38f7bd8c6dce208ef3d530c779bb0e6e1649bda..aa7178f0796d50ff6fae54f2c3c49686e86571f2 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  global-translator.cc -- implement 
+  global-translator.cc -- implement Global_translator
 
   source file of the GNU LilyPond music typesetter
 
index 382548592dd0f6c52892fd83b4264825f166bfcb..9eceda73c7add2636d995531315f1fc4b8fc8ded 100644 (file)
@@ -28,9 +28,14 @@ struct Break_node {
     
     */
   int prev_break_i_;
+  /**
+     Which system number so far?
+   */
   int line_i_;
+
   Real energy_f_;
   Column_x_positions line_config_;
+  
   Break_node () 
   {
     prev_break_i_ = -1;
@@ -40,9 +45,7 @@ struct Break_node {
 
 /**
   This algorithms is adapted from the OSU Tech report on breaking lines.
-  
  */
-
 Array<Column_x_positions>
 Gourlay_breaking::do_solve () const
 {
@@ -60,7 +63,6 @@ Gourlay_breaking::do_solve () const
   optimal_paths[0] = first_node; 
   int break_idx=1;
 
-  
   for (; break_idx< breaks.size (); break_idx++) 
     {
       Array<int> candidates;
@@ -78,9 +80,10 @@ Gourlay_breaking::do_solve () const
 
          if (optimal_paths[start_idx].prev_break_i_ < 0
              && optimal_paths[start_idx].line_config_.energy_f_)
-               
            continue;
-           
+
+
+         
          Line_of_cols line = all.slice (breaks[start_idx], breaks[break_idx]+1);
   
          line[0] = dynamic_cast<Paper_column*>(line[0]->find_prebroken_piece (RIGHT));
index 873ff05f307933da3432a1d41e42e8b1ee90434f..924d57a3967fa5819fcadca85dde89d916e32cc4 100644 (file)
@@ -91,7 +91,7 @@ Grace_position_engraver::do_pre_move_processing ()
       if (ae)
        ae->remove_element (align_l_);
       else if (elt)
-       align_l_->dim_cache_[X_AXIS]->parent_l_ = 0;
+       align_l_->set_parent (0, X_AXIS);
       last_musical_col_l_->add_element (align_l_);
     }
 
index 6beccc696110c5ddedd434eca97c58d1df5e6d5e..02f32e1eb04a12464f41b73c9fd514968044e37b 100644 (file)
   Graphical_axis_group at one time. */
 Graphical_axis_group::Graphical_axis_group(Graphical_axis_group const&s)
 {
-#if 0
-  /*
-  gcc-2.95: huh? why can't i assign a const value to a var?
-  graphical-axis-group.cc:20: incompatible types in assignment of `const Axis[2]' to `Axis[2]'
-  */
-  axes_ = s.axes_;
-#else
   axes_[0] = s.axes_[0];
   axes_[1] = s.axes_[1];
-#endif 
   ordered_b_ = s.ordered_b_;
 }
 
@@ -40,8 +32,12 @@ Interval
 Graphical_axis_group::extent (Axis axis) const
 {
   Interval r;
-  for (int i=0; i < elem_l_arr_.size(); i++) 
-    r.unite (elem_l_arr_[i]->extent (axis));
+  for (int i=0; i < elem_l_arr_.size(); i++)
+    {
+      r.unite (elem_l_arr_[i]->extent (axis)
+              + elem_l_arr_[i]->relative_coordinate (this, axis)
+              );
+    }
   return r;
 }
 
@@ -54,10 +50,10 @@ Graphical_axis_group::add_element (Graphical_element*e)
     {
       Axis a = axes_[i];
       assert (a>=0);
-      Dimension_cache * &d = e->dim_cache_[a]->parent_l_;
-      assert (!d || d == dim_cache_[a]);
-      d = dim_cache_[a];
-      d->dependencies_l_arr_.push (dim_cache_[a]);
+      assert (!e->parent_l (a)  || this  == e->parent_l (a));
+      e->set_parent (this, a);
+
+      e->dim_cache_[a]->dependencies_l_arr_.push (dim_cache_[a]);
     }
 
   elem_l_arr_.push (e);
index 3a53b698f6cff25b605838636b3846a6513ccbd7..ca2cec91376292f3da251ce3d9df61cb393d38fb 100644 (file)
@@ -34,11 +34,6 @@ Graphical_element::init ()
   dim_cache_[X_AXIS]->elt_l_ = dim_cache_[Y_AXIS]->elt_l_ = this;  
 }
 
-Real
-Graphical_element::absolute_coordinate (Axis a) const
-{
-  return dim_cache_[a]->absolute_coordinate ();
-}
 
 void
 Graphical_element::translate_axis (Real y, Axis a)
@@ -47,15 +42,15 @@ Graphical_element::translate_axis (Real y, Axis a)
 }  
 
 Real
-Graphical_element::relative_coordinate (Dimension_cache*e, Axis a) const
+Graphical_element::relative_coordinate (Graphical_element const*e, Axis a) const
 {
-  return dim_cache_[a]->relative_coordinate (e);
+  return dim_cache_[a]->relative_coordinate (e ? e->dim_cache_[a] : 0);
 }
 
-Dimension_cache * 
-Graphical_element::common_group (Graphical_element const* s, Axis a) const
+Graphical_element * 
+Graphical_element::common_refpoint (Graphical_element const* s, Axis a) const
 {
-  return dim_cache_[a]->common_group (s->dim_cache_[a]);
+  return  (dim_cache_[a]->common_refpoint (s->dim_cache_[a])) ->element_l ();
 }
 
 void
@@ -67,10 +62,26 @@ Graphical_element::translate (Offset offset)
 
 
 void
-Graphical_element::set_empty (bool b)
+Graphical_element::set_empty (bool b, Axis a1, Axis a2)
 {
-  dim_cache_[X_AXIS]->set_empty (b);
-  dim_cache_[Y_AXIS]->set_empty (b);
+  if (a1 != NO_AXES)
+    dim_cache_[a1]->set_empty (b);
+  if (a2 != NO_AXES)
+    dim_cache_[a2]->set_empty (b);
+}
+
+/**
+   Return true if empty in either direction.
+ */
+bool
+Graphical_element::empty_b (Axis a1, Axis a2)
+{
+  bool b = false;
+  if (a1 != NO_AXES)
+    b = b || dim_cache_[a1]->empty_b ();
+  if (a2 != NO_AXES)
+    b = b || dim_cache_[a2]->empty_b ();
+  return b;
 }
 
 Interval
@@ -114,16 +125,16 @@ Graphical_element::~Graphical_element ()
   delete dim_cache_[Y_AXIS];  
 }
 
-Dimension_cache *
-Graphical_element::common_group (Link_array<Graphical_element> gs, Axis a) const
+Graphical_element *
+Graphical_element::common_refpoint (Link_array<Graphical_element> gs, Axis a) const
 {
   Dimension_cache * common = dim_cache_[a];
   for (int i=0; i < gs.size (); i++)
     {
-      common = common->common_group (gs[i]->dim_cache_[a]);
+      common = common->common_refpoint (gs[i]->dim_cache_[a]);
     }
 
-  return common;
+  return common->element_l ();
 }
 
 char const *
@@ -141,3 +152,9 @@ Graphical_element::print () const
   DOUT << "}\n";
 #endif
 }  
+
+void
+Graphical_element::set_parent (Graphical_element *g, Axis a)
+{
+  dim_cache_[a]->parent_l_ = g ? g->dim_cache_[a]: 0;
+}
index 5b80d2cddb44793435f1ab3841cfccb3a4db1f5d..1c05020ec3a1fb59d6851e8e5acc10ee2e55bb7b 100644 (file)
@@ -34,7 +34,8 @@ Hara_kiri_group_spanner::do_post_processing ()
   for (int i = 0; i < childs.size (); i++)
     {
       childs[i]->set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-      childs[i]->set_empty (true);
+      childs[i]->set_empty (true, X_AXIS, Y_AXIS);
+
     }
   set_empty (true);
 }
index 6c5689b9343fcc4b7b52485cf7bbccb8a4d286ab..4f5434d55db09684c9526f13a7cf68ac9e784014 100644 (file)
@@ -53,7 +53,7 @@ public:
   bool contains_b (Score_element const*) const;
 
   Score_element *get_elt_by_priority (int) const;
-  int get_priority (Score_element*) const;
+  int get_priority (Score_element const*) const;
 protected:
   void sort_elements ();
   virtual void do_print() const;
index c77b0058c220e95b9ff9a422be310349d93f88b0..ab81872b52b1b56afec7c9a947299e89eea552e4 100644 (file)
@@ -34,9 +34,15 @@ protected:
   virtual Interval do_width () const;
 
 
-Interval extra_extent (Axis a ) const;
-  
+  Interval extra_extent (Axis a) const;
+
 public:
+  /**
+    Override Graphical_axis_group::extent: make sure that
+    Graphical_element::extent() is used as the public entry point.  */
+  Interval extent (Axis a) const;
+
   /**
      add an element that only influences size, but does not have  X/Y parent
      relationship with THIS.
index c2f99c8e89c922f58f5519f0893e0fe41f488ea0..41de60c64d187511c62993b440e000a6c27f2708 100644 (file)
@@ -26,7 +26,7 @@ protected:
   virtual Molecule* do_brew_molecule_p () const;
 
 private:
-  Direction vertical_position_i_;
+  Direction dir_;
 };
 
 #endif // BREATHING_SIGN_HH
index bbdb61d4287cd71edf813acbb3900e268288adbb..d76908dbc16e2e79a7aae2b20b1e7b9273204073 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  change-iterator.hh -- declare 
+  change-iterator.hh -- declare Change_iterator
 
   source file of the GNU LilyPond music typesetter
 
index d7553339edc15ee19b3551b3d54a4ede72783064..b7a29e0f116275d534bbc278d6b578d39cb59a65 100644 (file)
@@ -53,7 +53,7 @@ public:
 protected:
     virtual void do_print () const;
   VIRTUAL_COPY_CONS(Music);
-  bool do_equal_b (Request *) const;
+  bool do_equal_b (Request const *) const;
 };
 
 class Partial_measure_req  : public Timing_req  {
@@ -64,7 +64,7 @@ public:
 protected:
   VIRTUAL_COPY_CONS(Music);
   virtual void do_print () const;
-  bool do_equal_b (Request*) const;
+  bool do_equal_b (Request const *) const;
 };
 
 /**
@@ -78,7 +78,7 @@ public:
   Time_signature_change_req();
 protected:
   virtual void do_print () const;
-  bool do_equal_b (Request*) const;
+  bool do_equal_b (Request const *) const;
   VIRTUAL_COPY_CONS(Music);
 };
 
@@ -91,14 +91,14 @@ public:
 protected:
   virtual void do_print () const;
   
-  bool do_equal_b (Request*) const;
+  bool do_equal_b (Request const *) const;
   VIRTUAL_COPY_CONS(Music);
 };
 
 /// check if we're at start of a  measure.
 class Barcheck_req  : public Timing_req  {
 public:
-  bool do_equal_b (Request *) const;
+  bool do_equal_b (Request const *) const;
   VIRTUAL_COPY_CONS(Music);
 };
 
@@ -111,7 +111,7 @@ public:
   Bar_req (String);
 protected:
   virtual void do_print () const;
-  bool do_equal_b (Request*) const;
+  bool do_equal_b (Request const *) const;
 
   VIRTUAL_COPY_CONS(Music);
 };
index 4edb9431e2ae1128228ead1232beadf5acd67550..d8b998132f6e6a8e66d7961c930f51290ce9d29e 100644 (file)
@@ -19,7 +19,7 @@ class Dimension_cache;
 typedef Interval (*Dim_cache_callback)(Dimension_cache *);
 
 /**
-  Adminstration of offset  dimension info. 
+  Adminstration of offset dimension info. 
  */
 class Dimension_cache
 {
@@ -39,7 +39,6 @@ class Dimension_cache
 
   void init ();
 public:
-  Real offset () const;
   void set_callback (Dim_cache_callback);
   /** The #offset_# is defined with regard to this graphical_element/
     dimension_cache.  */
@@ -47,22 +46,31 @@ public:
   Dimension_cache * parent_l_;
   Link_array<Dimension_cache> dependencies_l_arr_;
   Graphical_element *element_l () { return elt_l_; }
-  Real absolute_coordinate () const;
+
   void invalidate ();
   void invalidate_dependencies ();
   
   Dimension_cache(Dimension_cache const&);
   Dimension_cache ();
 
+
+  /**
+     Find the offset relative to D.  If   D equals THIS, then it is 0.
+     Otherwise, it recursively defd as
+
+     OFFSET_ + PARENT_L_->relative_coordinate (D)
+   */
   Real relative_coordinate (Dimension_cache *d) const;
-  Dimension_cache*common_group (Dimension_cache const* s) const;
-  Dimension_cache*common_group (Link_array<Dimension_cache> caches) const;
+  Dimension_cache*common_refpoint (Dimension_cache const* s) const;
+  Dimension_cache*common_refpoint (Link_array<Dimension_cache> caches) const;
   void set_empty (bool);
   void translate (Real);
+
+  // junkme.
   void set_offset (Real);
+
   bool valid_b () const { return valid_b_; }
   bool empty_b() const { return empty_b_; }
-  void set_dim (Interval);
   Interval get_dim () const;
 };
 
index 58b484e22e11a999f346b34ce9f4b50dabc4bce1..b6b80057dc2113bab01968cabdc96bcb7a8fda5f 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  file-results.hh -- declare 
+  file-results.hh -- declare functions for processing one input file.
   
   source file of the GNU LilyPond music typesetter
   
index 8d2f823a830c12e775e51d9a112b4eed5c9e25c0..92301686be368d2a6bf7c3cc8217ba196533a219 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  grace-engraver-group.hh -- declare 
+  grace-engraver-group.hh -- declare Grace_engraver_group
   
   source file of the GNU LilyPond music typesetter
   
index 2aa1e1434dbc0c6a7ab2d61b7d5686809e40107f..ce7459b974291854dcf8bc6d7189721c9a4f06d8 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  grace-iterator.hh -- declare 
+  grace-iterator.hh -- declare Grace_iterator
   
   source file of the GNU LilyPond music typesetter
   
index ad995b04824576af647b17e3966c0d1d8581998b..c7b62786bb8f06b96aa09e3bf14d9fa1ef8d14c9 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  grace-music.hh -- declare 
+  grace-music.hh -- declare Grace_music
   
   source file of the GNU LilyPond music typesetter
   
index 515015e106f3087c7785fb794b03f9309ee5e364..c7f6db09148c2ef7fa75093f7b467d363b561c57 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  grace-performer-group.hh -- declare 
+  grace-performer-group.hh -- declare Grace_performer_group
   
   source file of the GNU LilyPond music typesetter
   
index 2dee6fac9152e72d4ab4005d7ad6ef6a94438e05..41c9e0994c28b51e091712452d260ee90853b9f6 100644 (file)
@@ -15,8 +15,7 @@
 #include "interval.hh"
 #include "virtual-methods.hh"
 
-/** The 2d geometric aspects of a score-element.  It was put in a
-  separate class, because Score_element got quite big.
+/** The 2d geometric aspects of a score-element.
   */
 class Graphical_element 
 {
@@ -30,7 +29,11 @@ public:
   bool used_b_;
   
   char const * name () const;
-  void set_empty (bool);
+  /**
+     Set empty in direction a1 and a2.  If an argument is NO_AXES, it is ignored.
+   */
+  void set_empty (bool b, Axis a1 = NO_AXES, Axis a2 = NO_AXES);
+  bool empty_b (Axis a1 = NO_AXES, Axis a2 = NO_AXES);
   Graphical_element ();
   Graphical_element (Graphical_element const&);
   virtual ~Graphical_element ();
@@ -48,13 +51,17 @@ public:
     
   void translate_axis (Real, Axis);
 
-  Real relative_coordinate (Dimension_cache*group, Axis) const;
-  Real absolute_coordinate (Axis) const;
+  Real relative_coordinate (Graphical_element const* refp, Axis) const;
   /**
     Find the group-element which has both #this# and #s#
    */
-  Dimension_cache*common_group (Graphical_element const* s, Axis a) const;
-  Dimension_cache*common_group (Link_array<Graphical_element> elems, Axis a) const;
+  Graphical_element*common_refpoint (Graphical_element const* s, Axis a) const;
+  Graphical_element*common_refpoint (Link_array<Graphical_element> elems, Axis a) const;
+
+  /**
+     Set the  parent refpoint of THIS to E
+   */
+  void set_parent (Graphical_element* e, Axis);
   
   Graphical_element *parent_l (Axis a) const;
   
index 0303fb4e84f9c325749e296209aa9bea5faac6a2..84eb0a3d0fb770a072aa8de5bfda477431dccce2 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  key-def.hh -- declare 
+  key-def.hh -- declare Key_def
   
   source file of the GNU LilyPond music typesetter
   
index b8c36a8d0b01afca9aef6c0e88d6d60dfeb9aab9..b53efd365df4a847653630170a7b3fbb8fce298c 100644 (file)
@@ -1,6 +1,6 @@
 
 /*   
-  lyric-combine-music-iterator.hh -- declare 
+  lyric-combine-music-iterator.hh -- declare Lyric_combine_music_iterator
   
   source file of the GNU LilyPond music typesetter
   
index 98ebcc5bfd92fd6dc48ebb5eabcaa489a98c1871..e516b2cdc5ac16f6eed518fe126e1eebdb288c08 100644 (file)
@@ -18,16 +18,18 @@ class Rhythmic_head : public Item, public Staff_symbol_referencer
 public:
   Stem * stem_l_;
   int balltype_i_;
-  int dots_i_;
   int position_i_;
 
   Dots * dots_l_;
 
   void add_dots (Dots *);
   Rhythmic_head ();
+
+  int dots_i ()const;
+  virtual int position_i () const;
 protected:
   virtual void do_post_processing ();
-  virtual void do_add_processing ();
+  virtual void do_pre_processing ();
   virtual void do_print () const;
   virtual void do_substitute_element_pointer (Score_element*,Score_element*);
 };
index 6c83fc6ab64698744d5c3811dadfc67fda6fb600..2eb025b0475fb5f63e6c101e137dce42e9665f0f 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  single-malt-grouping-item.hh -- declare 
+  single-malt-grouping-item.hh -- declare Single_malt_grouping_item
   
   source file of the GNU LilyPond music typesetter
   
index 8203954c63aad1c53ece0ab1650228e141393d46..c64381c8d52f2e67d718c389156e8550c76e4849 100644 (file)
@@ -29,6 +29,8 @@ public:
   Staff_symbol * staff_symbol_l () const;
   int lines_i () const;
   virtual void do_substitute_element_pointer (Score_element*,Score_element*);
+
+  virtual int position_i () const;
 };
 
 #endif /* STAFF_SYM_REFERENCER_HH */
index 08fe1b98f9dcd7862983ce9b6b1a640f25fc7a8d..8e3d9d50e80b03eaa77f215132404e82cfac3ece 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  tie-performer.hh -- declare 
+  tie-performer.hh -- declare Tie_performer
   
   source file of the GNU LilyPond music typesetter
   
index f6c1e130217a192a03d886d9b98789c02c229bbc..4643e71a752ee1ea956058951594f258daafb3d1 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  transposed-music.hh -- declare 
+  transposed-music.hh -- declare Transposed_music
   
   source file of the GNU LilyPond music typesetter
   
index f6ea7066e7fad45cf2aff544aae80384e75b855c..e6798b5be1f70818077b7d2370ca7eb37ba137fe 100644 (file)
@@ -38,7 +38,7 @@ Item::do_print() const
 Real 
 Item::hpos_f() const
 {
-  return absolute_coordinate (X_AXIS);
+  return relative_coordinate (0, X_AXIS);
 }
 
 Line_of_score *
@@ -91,7 +91,7 @@ Item::try_visibility_lambda ()
       int empty = gh_scm2bool (gh_cdr (result));
 
       if (empty)
-       set_empty (true);
+       set_empty (true, X_AXIS, Y_AXIS);
       if (trans)
        set_elt_property (transparent_scm_sym, SCM_BOOL_T);
     }
@@ -189,8 +189,7 @@ Item::handle_prebroken_dependents ()
          Item * broken_self = find_prebroken_piece (d);
          Item * broken_parent = parent->find_prebroken_piece (d);
 
-         broken_self->dim_cache_[X_AXIS]->parent_l_ =
-           broken_parent->dim_cache_[X_AXIS];
+         broken_self->set_parent (broken_parent, X_AXIS);
 
          /*
            ugh. Should do this is after breaking?
@@ -206,8 +205,7 @@ Item::handle_prebroken_dependents ()
                programming_error ("Vertical refpoint lost!");
              else if (yparenti)
                {
-                 broken_self->dim_cache_[Y_AXIS]->parent_l_ =
-                   broken_yparent->dim_cache_[Y_AXIS];
+                 broken_self->set_parent (broken_yparent, Y_AXIS);
                }
            }
        }
index d771b86923ceaeffdd3a1a51a902101765ee28c3..96e140707b3baa31f4c292c02b8ea87236614a09 100644 (file)
@@ -35,14 +35,12 @@ ly_ch_C_eval_scm (char const*c)
 
 /*
   scm_m_quote doesn't use any env, but needs one for a good signature in GUILE.
-
-  Why there is no gh_quote () in GUILE  beats me.
 */
 
 SCM
 ly_quote_scm (SCM s)
 {
-  return scm_cons2 (scm_i_quote, s, SCM_EOL);
+  return scm_m_quote (scm_cons2 (SCM_EOL, s, SCM_EOL) ,SCM_EOL); // apparently env arg is ignored.
 }
 
 /*
index 5dcfcdcac5dd1b68a0923ff2d0558bc86465fb89..909a9b95a5481dbbde04f2764bb5f28fb084d16e 100644 (file)
@@ -6,7 +6,7 @@
   (c)  1999 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "config.hh"
+#include "config.h"
 #include "version.hh"
 #include "lily-version.hh"
 
index bb3fb5d973c6272742cc71f67ec7a6ba4a98cbad..6cd822b26545427654acebc7c5352fb0e970eb3c 100644 (file)
@@ -21,7 +21,7 @@
 #include "string.hh"
 #include "main.hh"
 #include "file-path.hh"
-#include "config.hh"
+#include "config.h"
 #include "file-results.hh"
 #include "debug.hh"
 #include "lily-guile.hh"
index 6cae059cceef67d578f83d3d2563b4fbd64a76c9..62e5d494f9e974a43f68724f832f8d64b349db70 100644 (file)
@@ -19,6 +19,7 @@ public:
   VIRTUAL_COPY_CONS(Translator);
   bool do_try_music (Music *);
 };
+
 ADD_THIS_TRANSLATOR(Melisma_engraver);
 
 bool
index 7a952f0135590318da4425bf5cac11fb8a3f48a9..214aab5098e3545e954137f878a02be06fe02b23 100644 (file)
@@ -58,10 +58,7 @@ Multi_measure_rest::do_brew_molecule_p () const
   Molecule *mol_p  = new Molecule;
   Real x_off = 0.0;
 
-
-  //  Dimension_cache * col_ref = spanned_drul_[LEFT]->column_l ()->dim_cache_[X_AXIS];
-
-  Real rx  = spanned_drul_[LEFT]->absolute_coordinate (X_AXIS);
+  Real rx  = spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS);
   /*
     we gotta stay clear of sp_iv, so move a bit to the right if
     needed.
index bf32b3ad0734ee8fb2b7049a59accdc657315a45..da70a533f13c228e42e2a4d713240db6fccd1c8e 100644 (file)
@@ -33,7 +33,7 @@ Note_column::shift_compare (Note_column *const &p1, Note_column*const&p2)
 
 Note_column::Note_column()
 {
-  set_axes (X_AXIS,X_AXIS);
+  set_axes (X_AXIS, Y_AXIS);
   stem_l_ = 0;
 }
 
@@ -51,7 +51,7 @@ Note_column::head_positions_interval() const
   iv.set_empty ();
   for (int i=0; i <head_l_arr_.size ();i ++)
     {
-      int j = head_l_arr_[i]->position_i_;
+      int j = head_l_arr_[i]->position_i ();
       iv.unite (Slice (j,j));
     }
   return iv;
@@ -121,7 +121,8 @@ Note_column::translate_rests (int dy_i)
 {
   invalidate_cache (Y_AXIS);
   for (int i=0; i < rest_l_arr_.size(); i++)
-    rest_l_arr_[i]->position_i_ += dy_i;
+    rest_l_arr_[i]->translate_axis (dy_i  * rest_l_arr_[i]->staff_line_leading_f ()/2.0,
+                                   Y_AXIS);
 }
 
 void
index a5ef70294ca42df6326f86e25cb532a6d80624f7..ea52f53a6d0abc60c44e78c1184c930b86bdcf36 100644 (file)
@@ -24,9 +24,8 @@ Note_head_side::do_pre_processing ()
   Interval x_int;
   for (int i=0; i < support_l_arr_.size(); i++) 
     {
-      Dimension_cache *common = 
-       common_group (support_l_arr_[i], X_AXIS);
-
+      Graphical_element *common = 
+       common_refpoint (support_l_arr_[i], X_AXIS);
       Real x = support_l_arr_[i]->relative_coordinate (common, X_AXIS)
        - relative_coordinate (common, X_AXIS);
 
index 64134c9f2c7ec4dffe71098eed48108ef6108946..8ea7cb460dc1d4ea95c9390c6f2770b79cff30d6 100644 (file)
@@ -28,11 +28,12 @@ Note_head::Note_head ()
 void
 Note_head::do_pre_processing ()
 {
+  Rhythmic_head::do_pre_processing ();
   // 8 ball looks the same as 4 ball:
   if (balltype_i_ > 2)
     balltype_i_ = 2;
   if (dots_l_)                 // move into Rhythmic_head?
-    dots_l_->position_i_ = position_i_;
+    dots_l_->position_i_ = position_i ();
 }
 
 
@@ -40,7 +41,7 @@ Note_head::do_pre_processing ()
 int
 Note_head::compare (Note_head *const  &a, Note_head * const &b)
 {
-  return a->position_i_ - b->position_i_;
+  return a->position_i () - b->position_i ();
 }
 
 /**
@@ -60,9 +61,9 @@ Note_head::do_brew_molecule_p() const
   Real inter_f = staff_line_leading_f ()/2;
   int sz = lines_i ()-1;
 
-  int streepjes_i = abs (position_i_) < sz 
+  int streepjes_i = abs (position_i ()) < sz 
     ? 0
-    : (abs(position_i_) - sz) /2;
+    : (abs(position_i ()) - sz) /2;
 
 
   String type; 
@@ -78,7 +79,7 @@ Note_head::do_brew_molecule_p() const
 
   if (streepjes_i) 
     {
-      Direction dir = (Direction)sign (position_i_);
+      Direction dir = (Direction)sign (position_i ());
       Interval hd = out->dim_[X_AXIS];
       Real hw = hd.length ()/4;
       
@@ -86,7 +87,7 @@ Note_head::do_brew_molecule_p() const
        = lookup_l ()->ledger_line  (Interval (hd[LEFT] - hw,
                                               hd[RIGHT] + hw));
       
-      int parity =  abs(position_i_) % 2;
+      int parity =  abs(position_i ()) % 2;
       
       for (int i=0; i < streepjes_i; i++)
        {
@@ -98,6 +99,5 @@ Note_head::do_brew_molecule_p() const
     }
 
   out->dim_ = b;
-  out->translate_axis (inter_f*position_i_, Y_AXIS);
   return out;
 }
index f3c290916bb43b620edf040645ae977ebb42a628..c725690a4ac37a0a3ef69e3485ce476440a3f5c2 100644 (file)
@@ -49,8 +49,8 @@ Note_heads_engraver::do_process_requests()
       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_)
+
+      if (note_req_l->duration_.dots_i_)
        {
          Dots * d = new Dots;
          note_p->dots_l_ = d;
@@ -64,7 +64,7 @@ Note_heads_engraver::do_process_requests()
          announce_element (Score_element_info (d,0));
          dot_p_arr_.push (d);
        }
-      note_p->position_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);
index 4138548797bae192e005af5a3edf4ddfbec5e9e6..0d4469475166b05a162fce0d429edeb6fd36654b 100644 (file)
@@ -17,7 +17,7 @@ Paper_column::add_rod (Paper_column * p, Real d)
   
   if (!dir)
     {
-      warning ("Must set minimum distance between differing columns.");
+      programming_error ("Must set minimum distance between differing columns.");
       return;
     }
   
index 0103302408e7d727a8e4ecf64026782ccedb4727..8dbbc9414fd1006be36a9cfe341d58c8f2783dc1 100644 (file)
@@ -138,5 +138,5 @@ Rest_collision::do_substitute_element_pointer (Score_element*o,Score_element*n)
 Rest_collision::Rest_collision()
 {
   set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-  set_empty (true);
+  set_empty (true, X_AXIS, Y_AXIS);
 }
index b3f5e4494da1ab5b0ab3d7703dd49111814e5741..aef1e884bb1163753dda1c64c89f8cbf0dd248a4 100644 (file)
@@ -48,8 +48,8 @@ Rest_engraver::do_process_requests ()
     {
       rest_p_ = new Rest;
       rest_p_->balltype_i_ = rest_req_l_->duration_.durlog_i_; 
-      rest_p_->dots_i_ = rest_req_l_->duration_.dots_i_;
-      if (rest_p_->dots_i_)
+
+      if (rest_req_l_->duration_.dots_i_)
        {
          dot_p_ = new Dots;
          rest_p_->dots_l_  =dot_p_;
index b0a0cce179da6f99367360e50153a5747f966267..af38a2b0d384e3225772f88645d9f2254d3dc003 100644 (file)
@@ -46,7 +46,7 @@ Rest::do_brew_molecule_p () const
   bool ledger_b =false;
 
   if (balltype_i_ == 0 || balltype_i_ == 1)
-    ledger_b = abs(position_i_  - (2* balltype_i_ - 1)) > lines_i (); 
+    ledger_b = abs(position_i ()  - (2* balltype_i_ - 1)) > lines_i (); 
       
 
   
@@ -59,7 +59,7 @@ Rest::do_brew_molecule_p () const
   
   Molecule s(lookup_l ()->rest (balltype_i_, ledger_b, style));
   Molecule * m = new Molecule ( Molecule (s));
-  m->translate_axis (position_i_ *  staff_line_leading_f ()/2.0, Y_AXIS);
+
   return m;
 }
 
index 7cff96e6e9c024dd019fdbc722cbc883cc10f8a2..81e0cb65bf43783f32d84fdf05eb366b8bd3ad6b 100644 (file)
@@ -36,7 +36,7 @@ Rhythmic_column_engraver::process_acknowledged ()
 
       for (int i=0; i < rhead_l_arr_.size (); i++)
        {
-         if (!rhead_l_arr_[i]->dim_cache_[X_AXIS]->parent_l_)
+         if (!rhead_l_arr_[i]->parent_l(X_AXIS))
            ncol_p_->add_head (rhead_l_arr_[i]);
        }
       rhead_l_arr_.set_size (0);
@@ -46,13 +46,13 @@ Rhythmic_column_engraver::process_acknowledged ()
   if (ncol_p_)
     {
       if (dotcol_l_
-         && !dotcol_l_->dim_cache_[X_AXIS]->parent_l_)
+         && !dotcol_l_->parent_l(X_AXIS))
        {
          ncol_p_->set_dotcol (dotcol_l_);
        }
 
       if (stem_l_
-         && !stem_l_->dim_cache_[X_AXIS]->parent_l_)
+         && !stem_l_->parent_l(X_AXIS))
        {
          ncol_p_->set_stem (stem_l_);
          stem_l_ = 0;
index 3f4d67d74b484c74f698bdfd4f51f203a169cb80..00f6cb1df48954b2bb19196e7b00bd748619a239 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  rhythmic-head.cc -- implement 
+  rhythmic-head.cc -- implement Rhythmic_head
 
   source file of the GNU LilyPond music typesetter
 
 #include "paper-score.hh"
 #include "stem.hh"
 
+
+
+int
+Rhythmic_head::dots_i () const
+{
+  return dots_l_ ? dots_l_->dots_i_ : 0;
+}
+  
 void
-Rhythmic_head::do_add_processing ()
+Rhythmic_head::do_post_processing ()
 {
-  if (dots_i_ && !dots_l_)
-    {
-      assert (false);
-    }
   if (dots_l_)
     {
-      dots_l_->dots_i_ = dots_i_;
+      dots_l_->position_i_ = position_i ();
     }
 }
 
 void
-Rhythmic_head::do_post_processing ()
+Rhythmic_head::do_pre_processing ()
 {
-  if (dots_l_)
-    {
-      dots_l_->position_i_ = position_i_;
-    }
+  translate_axis (position_i_ * staff_line_leading_f () /2.0, Y_AXIS);
+  position_i_ = 0;
+}
+
+int
+Rhythmic_head::position_i () const
+{
+  return position_i_ +  Staff_symbol_referencer::position_i ();
 }
 
 
@@ -51,7 +59,6 @@ Rhythmic_head::Rhythmic_head ()
 {
   dots_l_ =0;
   balltype_i_ =0;
-  dots_i_ = 0;
   stem_l_ =0;
   position_i_ =0;
 }
@@ -59,6 +66,7 @@ Rhythmic_head::Rhythmic_head ()
 void
 Rhythmic_head::do_substitute_element_pointer (Score_element*o,Score_element*n)
 {
+  Staff_symbol_referencer::do_substitute_element_pointer (o,n);
   if (o == dots_l_)
     dots_l_ = dynamic_cast<Dots *> (n) ;
   else if (o == stem_l_)
@@ -70,7 +78,7 @@ void
 Rhythmic_head::do_print () const
 {
 #ifndef NPRINT
-  DOUT << "balltype = "<< balltype_i_ << "dots = " << dots_i_;
+  DOUT << "balltype = "<< balltype_i_ << "dots = " << dots_i ();
 #endif
 }
 
index 128b380d04f0f4df2fc1056edf52ff98b6cec047..2dab6212bcbf1d4d6445a71d04857c5846148211 100644 (file)
@@ -218,7 +218,7 @@ Score_element::output_processing ()
     delete output_p_;
   
   output_p_ = do_brew_molecule_p ();
-  Offset o (absolute_coordinate (X_AXIS), absolute_coordinate (Y_AXIS));
+  Offset o (relative_coordinate (0, X_AXIS), relative_coordinate (0, Y_AXIS));
   
   pscore_l_->outputter_l_->output_molecule (output_p_,
                                            o,
index 0ab5c2e96021f3786d591cba0d56a78807ad3f28..7c7adf3c6c06763631a6a615a77e0dcb5ea5b4db 100644 (file)
@@ -163,7 +163,7 @@ Score_engraver::typeset_all()
                musical_column_l_->add_element(item_p);
            }
        }
-      if (!elem_p->dim_cache_[Y_AXIS]->parent_l_)
+      if (!elem_p->parent_l(Y_AXIS))
        scoreline_l_->add_element (elem_p);
     }
   elem_p_arr_.clear();
index 40ee44825002a6290b56d445f08c69bfd7e1aca7..3530c26a255eaaeb17845d3de0ea6fde7cf8e53a 100644 (file)
@@ -41,8 +41,7 @@ Score_priority_engraver::acknowledge_element (Score_element_info inf)
 {
   if (Item * item_l = dynamic_cast <Item *> (inf.elem_l_))
     {
-      Dimension_cache * c = item_l->dim_cache_[X_AXIS];
-      if (c->empty_b () || c->parent_l_)
+      if (item_l->empty_b (X_AXIS) || item_l->parent_l (X_AXIS))
        return;
 
       bool breakable
index d38aed9b0f12f8d32081f5c3bb445f5f6cb03783..b3a8db33fe3cf0287503609e421eb8bd931abb71 100644 (file)
@@ -60,15 +60,12 @@ Script_column_engraver::acknowledge_element( Score_element_info inf)
   if (!thing)
     return;
   
-  Dimension_cache * parcache = thing->dim_cache_[Y_AXIS]->parent_l_;
-  if (!parcache || !thing)
-    return ;
-  
-  Graphical_element *parent = parcache->element_l ();
+  Graphical_element *parent = thing->parent_l(Y_AXIS);
+
 
   if (Staff_side_item * ss = dynamic_cast<Staff_side_item*>(parent))
     {
-      if (!ss->breakable_b ())
+      if (!ss->breakable_b () && ss->axis_ == Y_AXIS)
        {
          script_l_arr_.push (thing);
        }
index 8b37895814543a3bea6664c65456196779dda2ea..cc38a6eae80bde7795ce18d82ecbc493fe7b3a9a 100644 (file)
@@ -13,7 +13,7 @@
 static Staff_side_item *
 get_Staff_side (Item *i)
 {
-  Graphical_element *e1 = i->dim_cache_[Y_AXIS]->parent_l_->element_l ();
+  Graphical_element *e1 = i->parent_l(Y_AXIS);
 
   return dynamic_cast<Staff_side_item*>(e1);
 }
index 4cc2917b6040d4c12a8d9dcfe73c0d5546a339c7..e8e2e8dd8564b119962bb872597814bba5abcefc 100644 (file)
@@ -85,8 +85,14 @@ Script_engraver::do_process_requests()
          padding = (Real)paddingprop;
        }
 
-      if (follow_staff)
+
+      Scalar axisprop = get_property ("scriptHorizontal",0);
+      if (axisprop.to_bool ())
+       ss->axis_ = X_AXIS;
+
+      if (follow_staff && !axisprop.to_bool ())
        ss->set_elt_property (no_staff_support_scm_sym, SCM_BOOL_T);
+      
       p->set_staff_side (ss);
       ss->set_elt_property (script_priority_scm_sym, priority);
       if (padding)
@@ -117,9 +123,9 @@ Script_engraver::acknowledge_element (Score_element_info inf)
        {
          Staff_side_item * ss = dynamic_cast<Staff_side_item*>(staff_side_p_arr_[i]);
          
-         if (!ss->dim_cache_[X_AXIS]->parent_l_)
+         if (!ss->parent_l (X_AXIS))
            {
-             ss->dim_cache_[X_AXIS]->parent_l_ = inf.elem_l_->dim_cache_[X_AXIS];
+             ss->set_parent (inf.elem_l_, X_AXIS);
            }
          ss->add_support (rh);
        }
index 71adfd6339ef54403f4fd557e8632e8a85dfac30..3bc415d077eb48b00ead9b977d60b2091da5a6cb 100644 (file)
@@ -63,8 +63,7 @@ Script::do_pre_processing ()
   /*
     center my self on the note head.
    */
-  Graphical_element * e
-    = staff_side_l_->dim_cache_[X_AXIS]->parent_l_->element_l();
+  Graphical_element * e = staff_side_l_->parent_l(X_AXIS);
   translate_axis (e->extent (X_AXIS).center (), X_AXIS);
 }
 
@@ -86,7 +85,7 @@ Script::set_staff_side (Staff_side_item*g)
 {
   staff_side_l_ = g;
   add_dependency (g);
-  dim_cache_[Y_AXIS]->parent_l_ = g->dim_cache_[Y_AXIS];
+  set_parent (g, Y_AXIS);
 }
 
 Molecule*
index 8ce4cdbd17e285400cc62022ef0cfc9fbfd1ace9..cc778169836daa5d0733031f2972231736948e5b 100644 (file)
@@ -17,7 +17,8 @@ Single_malt_grouping_item ::Single_malt_grouping_item()
   set_elt_property (transparent_scm_sym, SCM_BOOL_T);
 
   // this is weird! , but needed!
-  set_empty (true);
+  set_empty (true, X_AXIS, Y_AXIS);
+
 }
 
 void
@@ -46,7 +47,7 @@ Single_malt_grouping_item::my_width () const
       Interval iv (il->extent (X_AXIS));
       if (!iv.empty_b ())
        {
-         Real off = il->relative_coordinate (pc->dim_cache_[X_AXIS], X_AXIS);
+         Real off = il->relative_coordinate (pc, X_AXIS);
          w.unite  (iv + off);
        }
     }
index 6f025e1a2b759d91d82738820b55dbc46eace4c4..4553e4dcba6c96afa67f527a683903fac61cae5c 100644 (file)
@@ -93,6 +93,7 @@ Slur_engraver::do_process_requests()
          if (prop.isnum_b ()) 
            s_p->set_elt_property (dashed_scm_sym, gh_int2scm(prop));
 
+         
          requests_arr_.push (slur_req_l);
          start_slur_l_arr_.push (s_p);
          announce_element (Score_element_info (s_p, slur_req_l));
index bc8fa4b5a7212a2413195812959bcf96dc9c9bf6..2838bcce9642dee6082194e64c946ec860b84424 100644 (file)
@@ -159,7 +159,7 @@ Slur::do_post_processing ()
          else
            {
              dx_f_drul_[d] = stem_l->hpos_f ()
-               - spanned_drul_[d]->absolute_coordinate (X_AXIS);
+               - spanned_drul_[d]->relative_coordinate (0, X_AXIS);
              /*
                side attached to beamed stem
               */
@@ -355,7 +355,7 @@ Slur::do_post_processing ()
          */
          Stem* stem_l = note_column_drul[d]->stem_l_;
          snapx_f_drul[d] = stem_l->hpos_f ()
-           - spanned_drul_[d]->absolute_coordinate (X_AXIS);
+           - spanned_drul_[d]->relative_coordinate (0, X_AXIS);
          snapy_f_drul[d] = stem_l->extent (Y_AXIS)[dir_];
          snapy_f_drul[d] += info_drul[d].interstaff_f_;
          snapy_f_drul[d] += dir_ * 2 * y_gap_f;
@@ -428,7 +428,7 @@ Slur::get_encompass_offset_arr () const
     }
   bool interstaff_b = interstaff_i && (interstaff_i < encompass_arr_.size ());
   
-  Offset origin (absolute_coordinate (X_AXIS), 0);
+  Offset origin (relative_coordinate (0, X_AXIS), 0);
 
   int first = 1;
   int last = encompass_arr_.size () - 2;
index 9e02523461c8b9073be046d1527b67b45cb03a9d..02c7c29e3b13826b8dc4fc6b957f48a3504befdf 100644 (file)
@@ -43,13 +43,16 @@ Span_bar::do_pre_processing ()
   
   evaluate_empty ();
   
-  dim_cache_[Y_AXIS]->set_empty (false); // a hack to make mark scripts work.
+  set_empty (false, Y_AXIS); // a hack to make mark scripts work.
 }
 
 void
 Span_bar::do_post_processing ()
 {
   Bar::do_post_processing ();
+  Interval i(get_spanned_interval ());
+
+  translate_axis (i.center (), Y_AXIS);
 }
 
 void
@@ -58,7 +61,8 @@ Span_bar::evaluate_empty ()
   if (spanning_l_arr_.size () < 1) 
     {
       set_elt_property (transparent_scm_sym, SCM_BOOL_T);
-      set_empty (true);   
+      set_empty (true, X_AXIS, Y_AXIS);   
+
     }
   if (type_str_.empty_b ()) 
     {
@@ -83,13 +87,12 @@ Interval
 Span_bar::get_spanned_interval () const
 {
   Interval y_int;
+
   for (int i=0; i < spanning_l_arr_.size (); i++) 
     {
-      Dimension_cache*common = 
-       common_group (spanning_l_arr_[i], Y_AXIS);
-       
-      Real y = spanning_l_arr_[i]->dim_cache_[Y_AXIS]->relative_coordinate (common)  
-       -dim_cache_[Y_AXIS]->relative_coordinate (common);
+      Graphical_element*common = common_refpoint (spanning_l_arr_[i], Y_AXIS);
+      Real y = spanning_l_arr_[i]->relative_coordinate (common, Y_AXIS)  
+       - relative_coordinate (common, Y_AXIS);
 
       y_int.unite (y + spanning_l_arr_[i]->extent(Y_AXIS));
     }
@@ -110,7 +113,6 @@ Span_bar::do_brew_molecule_p () const
   if (!iv.empty_b())
     {
       output->add_molecule (lookup_l ()->bar (type_str_, iv.length (), paper_l ()));
-      output->translate_axis (iv.center (), Y_AXIS);
     }
   else
     {
index 087df227daad6212c0518691c9fa928610662d26..3b18cfa12710bdafc14fd433313b95e750037475 100644 (file)
@@ -34,7 +34,7 @@ Span_bar*
 Piano_bar_engraver::get_span_bar_p () const
 {
   Span_bar *s= new Span_bar;
-  s->dim_cache_[X_AXIS]->set_empty (true);
+  s->set_empty (true, X_AXIS);
   s->type_str_ = "brace";
   return s;
 }
@@ -43,7 +43,7 @@ Span_bar*
 Staff_group_bar_engraver::get_span_bar_p () const
 {
   Span_bar *s= new Span_bar;
-  s->dim_cache_[X_AXIS]->set_empty (true);
+  s->set_empty (true, X_AXIS);
   s->type_str_ = "bracket";
   return s;
 }
index 23360b5e88716fb07b460d65521ae004c353cec1..843a020b36995a8ba63ec867eeeeeeb08675ac3c 100644 (file)
@@ -101,7 +101,7 @@ Spanner::set_bounds(Direction d, Item*i)
 
   if (d== LEFT)
     {
-      dim_cache_[X_AXIS]->parent_l_ = i->dim_cache_[X_AXIS];
+      set_parent ( i, X_AXIS);
     }
   
   if  (spanned_drul_[Direction(-d)] == spanned_drul_[d]
@@ -134,8 +134,8 @@ Spanner::Spanner (Spanner const &s)
 Interval
 Spanner::do_width() const
 {  
-  Real l = spanned_drul_[LEFT]->absolute_coordinate (X_AXIS);
-  Real r = spanned_drul_[RIGHT]->absolute_coordinate (X_AXIS);
+  Real l = spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS);
+  Real r = spanned_drul_[RIGHT]->relative_coordinate (0, X_AXIS);
 
   if (r< l)
     warning ("Spanner with negative length");
@@ -209,7 +209,7 @@ void
 Spanner::handle_broken_dependents ()
 {
   Spanner *unbrok = dynamic_cast<Spanner*> (original_l_);
-  if (!unbrok || dim_cache_[Y_AXIS]->parent_l_)
+  if (!unbrok || parent_l(Y_AXIS))
     return;
   
   Spanner *refpoint = dynamic_cast<Spanner*> (unbrok->parent_l (Y_AXIS));
@@ -218,7 +218,7 @@ Spanner::handle_broken_dependents ()
     {
       Spanner * broken_refpoint = refpoint->find_broken_piece (line_l ());
       if (broken_refpoint)
-       dim_cache_[Y_AXIS]->parent_l_ = broken_refpoint->dim_cache_[Y_AXIS];
+       set_parent ( broken_refpoint,Y_AXIS);
       else
        programming_error ("Spanner y -refpoint lost.");
     }
index f458a7a97a3a51eba959a064168feabed2f92b50..0e552f015c71c86b0fcb6f3db35652ca4d4f6d74 100644 (file)
@@ -373,7 +373,17 @@ Spring_spacer::print() const
 void
 Spring_spacer::connect (int i, int j, Real d, Real h)
 {
-  assert(d >= 0 && d <= 100 CM);
+  if (d > 100 CM)
+    {
+      programming_error( _f("Improbable distance: %f point, setting to 10 mm", d));
+      d = 1 CM;
+    }
+  if(d < 0)
+    {
+      programming_error (_("Negative distance. Setting to 10 mm"));
+      d = 10 MM;
+    }
+      
   assert(h >=0);
 
   Idealspacing * s = new Idealspacing;
index c637ff46235f9197a68d29a22aaf7b6d1eee00d1..706d89e990411549a4d5d182e33859e79d5e48bb 100644 (file)
@@ -42,9 +42,9 @@ Staff_margin_engraver::acknowledge_element (Score_element_info inf)
 
 
   String long_str = get_property ("instrument", 0);
-  String str = get_property ("instr", 0);
-  if (now_mom () > Moment (0) && str.length_i ())
-    long_str = str;
+  String short_str = get_property ("instr", 0);
+  if (now_mom () > Moment (0))
+    long_str = short_str;
 
   if (long_str.empty_b ())
     return;
index 7ffcce8c7a24d4b45d64933524a81c140232cd64..a74e1c8bf35df963350fc99083f22a33a5d807ce 100644 (file)
@@ -22,8 +22,6 @@ Staff_side_element::Staff_side_element ()
   axis_ = Y_AXIS;
 }
 
-
-
 void
 Staff_side_element::do_pre_processing ()
 {
@@ -46,7 +44,7 @@ Staff_side_element::set_victim (Score_element *e)
 {
   add_dependency (e);
   to_position_l_ = e;
-  to_position_l_->dim_cache_[axis_]->parent_l_ = dim_cache_[axis_];
+  to_position_l_->set_parent (this, axis_);
 }
 
 void
@@ -75,11 +73,11 @@ Staff_side_element::position_self ()
     return;
 
   Interval dim;
-  Dimension_cache *common = 0;
+  Graphical_element *common = 0;
   if (support_l_arr_.size ())
     {
-      common = common_group (typecast_array (support_l_arr_, (Graphical_element*)0),
-                            axis_);
+      common = common_refpoint (typecast_array (support_l_arr_, (Graphical_element*)0),
+                               axis_);
 
       for (int i=0; i < support_l_arr_.size (); i++)
        {
@@ -90,7 +88,7 @@ Staff_side_element::position_self ()
        }
     }
   else
-     common = dim_cache_[axis_]->parent_l_;
+     common = parent_l (axis_);
 
   if (dim.empty_b ())
     {
@@ -103,7 +101,7 @@ Staff_side_element::position_self ()
     ? to_position_l_->extent (axis_)
     : Interval(0,0);
 
-  Real off =  dim_cache_[axis_]->relative_coordinate (common);
+  Real off =  relative_coordinate (common, axis_);
  
 
 
index 2b07b49a5e49af67c425dee7b1d93518bf6f2725..aad498bce3b24fb009e90d10c773adf3e5814764 100644 (file)
@@ -6,9 +6,12 @@
   (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
  */
 
+#include <math.h>
+
 #include "staff-symbol-referencer.hh"
 #include "staff-symbol.hh"
 #include "paper-def.hh"
+#include "dimension-cache.hh"
 
 Staff_symbol_referencer::Staff_symbol_referencer ()
 {
@@ -48,3 +51,16 @@ Staff_symbol_referencer::staff_line_leading_f () const
 {
   return (staff_sym_l_) ? staff_sym_l_->staff_line_leading_f_ : paper_l ()->get_realvar (interline_scm_sym);
 }
+
+
+int
+Staff_symbol_referencer::position_i () const
+{
+  if (!staff_sym_l_ )
+    return 0;
+
+  Graphical_element * c = common_refpoint (staff_sym_l_, Y_AXIS);
+  Real y = relative_coordinate (c, Y_AXIS) - staff_sym_l_->relative_coordinate (c, Y_AXIS);
+
+  return int (2.0 * y / staff_line_leading_f ());
+}
index f3c6550b865b4aa6bbfed2912ecc0cb9888a7a53..930130da2bb0f96ec120d147d5088e5dab5886fc 100644 (file)
@@ -131,8 +131,8 @@ Stem_info::Stem_info (Stem*s, int mult)
   // interstaff beam
   Beam* beam_l = stem_l_->beam_l_;
   
-  Dimension_cache *common = stem_l_->common_group (beam_l, Y_AXIS);
-  Align_element * align = dynamic_cast<Align_element*> (common->element_l ());
+  Graphical_element *common = stem_l_->common_refpoint (beam_l, Y_AXIS);
+  Align_element * align = dynamic_cast<Align_element*> (common);
   if (align && align->axis() == Y_AXIS)
     {
       if (align->threshold_interval_[MIN] != 
@@ -141,19 +141,19 @@ Stem_info::Stem_info (Stem*s, int mult)
 
       interstaff_f_ = align->threshold_interval_[MIN] / internote_f;
 
-      Dimension_cache * beam_refpoint = beam_l->dim_cache_[Y_AXIS];
-      Dimension_cache * stem_refpoint = stem_l_->dim_cache_[Y_AXIS];
+      Graphical_element * beam_refpoint = beam_l;
+      Graphical_element * stem_refpoint = stem_l_;
 
-      while (beam_refpoint->parent_l_ != common)
-       beam_refpoint = beam_refpoint->parent_l_;
-      while (stem_refpoint->parent_l_ != common)
-       stem_refpoint = stem_refpoint->parent_l_;
+      while (beam_refpoint->parent_l (Y_AXIS) != common)
+       beam_refpoint = beam_refpoint->parent_l (Y_AXIS);
+      while (stem_refpoint->parent_l (Y_AXIS) != common)
+       stem_refpoint = stem_refpoint->parent_l (Y_AXIS);
 
 
       int beam_prio =
-       align->get_priority (dynamic_cast<Score_element*> (beam_refpoint->element_l ()));
+       align->get_priority (dynamic_cast<Score_element*> (beam_refpoint));
       int stem_prio =
-       align->get_priority (dynamic_cast<Score_element*> (stem_refpoint->element_l ()));
+       align->get_priority (dynamic_cast<Score_element*> (stem_refpoint));
 
       /*
        our staff is lower -> interstaff_f_ *= -1
index d582047f57558cdcfa3db6b712e9152780706ff9..1b6f7bc750097ce16920f2fce1490f296b163154 100644 (file)
@@ -81,11 +81,9 @@ Stem_staff_side_item::do_post_processing ()
   */
   if (get_elt_property (no_staff_support_scm_sym) != SCM_BOOL_F)
     {
-      Dimension_cache * c =common_group (staff_symbol_l (), Y_AXIS);
-      Real staff_coord = staff_symbol_l ()->relative_coordinate (c, Y_AXIS) +
-       staff_symbol_l ()->dim_cache_[Y_AXIS]->offset (); 
-      Real self_coord = relative_coordinate (c, Y_AXIS)
-       + dim_cache_[Y_AXIS]->offset ();
+      Graphical_element * c =common_refpoint (staff_symbol_l (), Y_AXIS);
+      Real staff_coord = staff_symbol_l ()->relative_coordinate (c, Y_AXIS);
+      Real self_coord = relative_coordinate (c, Y_AXIS);
       Real now_coord = self_coord - staff_coord;
       
       Real desired_coord = ceil (dir_ * 2.0 *  now_coord / staff_line_leading_f ());
index 2dd984cac7a9f698f915af59a4e7017fcfbb5aa5..2086139050b85cc6e7efa1bf5f79f93ee19b083c 100644 (file)
@@ -57,7 +57,7 @@ Stem::head_positions () const
   Interval_t<int> r;
   for (int i =0; i < head_l_arr_.size (); i++)
     {
-      int p = head_l_arr_[i]->position_i_;
+      int p = head_l_arr_[i]->position_i ();
       r[BIGGER] = r[BIGGER] >? p;
       r[SMALLER] = r[SMALLER] <? p;
     }
@@ -229,10 +229,10 @@ Stem::set_noteheads ()
     head_l_arr_.top ()->set_elt_property (extremal_scm_sym, SCM_BOOL_T);
   
   int parity=1;
-  int lastpos = beginhead->position_i_;
+  int lastpos = beginhead->position_i ();
   for (int i=1; i < head_l_arr_.size (); i ++)
     {
-      int dy =abs (lastpos- head_l_arr_[i]->position_i_);
+      int dy =abs (lastpos- head_l_arr_[i]->position_i ());
 
       if (dy <= 1)
        {
@@ -242,7 +242,7 @@ Stem::set_noteheads ()
        }
       else
        parity = 1;
-      lastpos = head_l_arr_[i]->position_i_;
+      lastpos = head_l_arr_[i]->position_i ();
     }
 }
 
@@ -257,7 +257,7 @@ Stem::do_pre_processing ()
     {
       set_elt_property (transparent_scm_sym, SCM_BOOL_T);
     }
-  set_empty (invisible_b ());
+  set_empty (invisible_b (), X_AXIS, Y_AXIS);
   set_spacing_hints ();
 }
 
index e1748316b35b9a3311dcba1515fb04aaa04edcfb..1d652e935e618aba1c68bfde772547072bd8773e 100644 (file)
@@ -57,6 +57,9 @@ Text_engraver::acknowledge_element (Score_element_info i)
       for (int i=0; i < positionings_.size (); i++)
        {
          positionings_[i]->add_support (n);
+         if (positionings_[i]->axis_ == X_AXIS
+             && !positionings_[i]->parent_l (Y_AXIS))
+           positionings_[i]->set_parent (n, Y_AXIS);
        }
     }
   if (Stem *n = dynamic_cast<Stem*> (i.elem_l_))
@@ -78,6 +81,15 @@ Text_engraver::do_process_requests ()
       Text_item *text = new Text_item;
       Staff_side_item *ss = new Staff_side_item;
 
+
+
+      Scalar axisprop = get_property ("scriptHorizontal",0);
+      if (axisprop.to_bool ())
+       {
+         ss->axis_ = X_AXIS;
+         text->set_parent (ss, Y_AXIS);
+                              
+       }
       ss->set_victim (text);
       ss->set_elt_property (script_priority_scm_sym,
                            gh_int2scm (200));
@@ -104,9 +116,9 @@ Text_engraver::do_process_requests ()
       Scalar empty = get_property ("textEmptyDimension", 0);
       if (empty.to_bool ())
        {
-         text->dim_cache_[X_AXIS]->set_empty (true);
+         text->set_empty (true, X_AXIS);
        }
-      
+
       announce_element (Score_element_info (text, r));
       announce_element (Score_element_info (ss, r));
 
index f33e9efaac2fa1fa29dc96450d97d346a58636ac..a05b54cce6464150adc57d94326c56d2df95e950 100644 (file)
@@ -1,5 +1,5 @@
 /*   
-  tie-performer.cc --  implement 
+  tie-performer.cc --  implement Tie_performer
   
   source file of the GNU LilyPond music typesetter
   
index b5364963e85ce632294eb4e810181e77228706d5..7b682914c3144e8117f1acf5e40702ab76ba561c 100644 (file)
@@ -37,8 +37,8 @@ Tie::Tie()
 Direction
 Tie::get_default_dir () const
 {
-  int m = (head_l_drul_[LEFT]->position_i_ 
-         + head_l_drul_[RIGHT]->position_i_) /2;
+  int m = (head_l_drul_[LEFT]->position_i () 
+         + head_l_drul_[RIGHT]->position_i ()) /2;
 
   /*
     If dir is not determined: inverse of stem: down
@@ -151,8 +151,8 @@ Tie::do_post_processing()
         for smal slurs
    */
 
-  int ypos_i = head_l_drul_[LEFT] ? head_l_drul_[LEFT]->position_i_
-    : head_l_drul_[RIGHT]->position_i_;
+  int ypos_i = head_l_drul_[LEFT] ? head_l_drul_[LEFT]->position_i ()
+    : head_l_drul_[RIGHT]->position_i ();
 
   Real y_f = internote_f * ypos_i; 
 
index e74e96f70ccebc8684b47e44b0fef5d6ba054fff..c2e1b202e52d2799717f84fd7718d6d41315dc77 100644 (file)
@@ -19,4 +19,6 @@ $(outdir)/%.html:     $(outdir)/%.texi
        $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/../index.html $@ $(wildcard $(basename $@)[0-9][0-9].html)
 
 $(outdir)/%.dvi:       $(outdir)/%.texi
-       cd $(outdir); texi2dvi --clean ../$< 
+       # --clean only in >= 3.12s
+       # cd $(outdir); texi2dvi --clean ../$< 
+       cd $(outdir); texi2dvi ../$< 
index f50828e4b9b9473b1ec3acde79c581916e8d4dd5..41b3a82f16f10416123fb3acbeebd87b9333ef7a 100644 (file)
@@ -1,7 +1,7 @@
 Begin3
 Title: LilyPond
-Version: 1.2.3
-Entered-date: 27AUG99
+Version: 1.2.4
+Entered-date: 30AUG99
 Description: 
 LilyPond is a music typesetter.  It produces beautiful sheet music
 using a high level description file as input.  LilyPond is part of 
@@ -12,8 +12,8 @@ Author: hanwen@cs.uu.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
-       1000k lilypond-1.2.3.tar.gz 
+       1000k lilypond-1.2.4.tar.gz 
 Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
-       1000k lilypond-1.2.3.tar.gz 
+       1000k lilypond-1.2.4.tar.gz 
 Copying-policy: GPL
 End
index e7ea2921b126ad036dc9a943da141c0128b69e8c..cd3d275e54e24a2d699109ad614265ea6380bdbd 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 1.2.3
+Version: 1.2.4
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.2.3.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.2.4.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>
index 2cf9e959171165eefdd8beb0eb93072afc3ffe4d..ae4e2579389b998216a63239005090b9a9f65378 100644 (file)
@@ -5,7 +5,7 @@
 
 #include <assert.h>
 #include <locale.h>
-#include "config.hh"
+#include "config.h"
 #include "string-convert.hh"
 #include "getopt-long.hh"
 #include "file-path.hh"
index ac0b8c1d2db4bcbb2d6be442d60bb174c59d4521..08cb1637233ae1f73111917a84bdc5476953787b 100644 (file)
@@ -4,7 +4,7 @@
 // copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <stdio.h>
-#include "config.hh"
+#include "config.h"
 #include "version.hh"
 
 #define VERSION_SZ  MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL "." MY_PATCH_LEVEL
index 1974a009fc61381c508245d947655be1b14373f1..ecfda6b42d247461940e9ec7660e95c187571cb8 100644 (file)
 
   (define (select-font font-name magnification)
       (if (not (equal? font-name current-font))
-         (begin
+         (let* ((font-cmd (assoc font-name font-alist)))
            (set! current-font font-name)
-           (define font-cmd (assoc font-name font-alist))
            (if (eq? font-cmd #f)
                (begin
                  (set! font-cmd (cached-fontname font-count))
   ;;
   ;; need to do something to make this really safe.
   ;;
-  (if security-paranoia
-      (define (output-tex-string s)
-       (regexp-substitute/global #f "\\\\" s 'pre "$\\backslash$" 'post))
-      (define (output-tex-string s)    s))
+  (define (output-tex-string s)
+      (if security-paranoia
+         (regexp-substitute/global #f "\\\\" s 'pre "$\\backslash$" 'post)
+         s))
+      
 
   (define (lily-def key val)
     (string-append
      (apply string-append (map control->string l)) 
      (number->string thick) 
      " [ "
-     (if (> 1 dash) (number->string (- (* thick dash) thick)) "0") " "
+     (if (> 1 dash)
+        (number->string (- (* thick dash) thick))
+        "0")
+     " "
      (number->string (* 2 thick))
      " ] 0 draw_dashed_slur"))
 
index 29e6f29ff5431952309f2a3f6d83ec307436f424..8021e5181800d88377bbddee58db4a980e64d417 100644 (file)
@@ -14,9 +14,12 @@ program_version = '@TOPLEVEL_VERSION@'
 cwd = os.getcwd ()
 include_path = [cwd]
 
-# TODO: use splitting iso. \mudelagraphic.
+# TODO: Figure out clean set of options.
 
+# BUG: does not handle \verb|\begin{verbatim}\end{verbatim}| correctly.
+# Should make a joint RE for \verb and \begin, \end{verbatim}
 #
+
 default_music_fontsize = 16
 default_text_fontsize = 12
 
@@ -83,8 +86,17 @@ output_dict= {
 %s
 @end example
 """,
+
+# do some tweaking: @ is needed in some ps stuff.
+# override EndLilyPondOutput, since @tex is done
+# in a sandbox, you can't do \input lilyponddefs at the
+# top of the document.
                  'output-all': r"""@tex
+\catcode`\@=12
+\input lilyponddefs
+\def\EndLilyPondOutput{}
 \input %s.tex
+\catcode`\@=0
 @end tex
 @html
 <img src=%s.png>
@@ -93,6 +105,11 @@ output_dict= {
                }
        }
 
+def output_verbatim (body):
+       if __main__.format == 'texi':
+               body = re.sub ('([@{}])', '@\\1', body)
+       return get_output ('output-verbatim') % body
+
 re_dict = {
        'latex': {'input': '\\\\input{?([^}\t \n}]*)',
                  'include': '\\\\include{([^}]+)}',
@@ -132,6 +149,16 @@ for r in re_dict.keys ():
        re_dict[r] = newdict
 
        
+def uniq (list):
+       list.sort ()
+       s = list
+       list = []
+       for x in s:
+               if x not in list:
+                       list.append (x)
+       return list
+               
+
 def get_output (name):
        return  output_dict[format][name]
 
@@ -193,16 +220,18 @@ def compose_full_body (body, opts):
        if 'twocolumn' in opts:
                cols = 2
                
-       if 'fragment' or 'singleline' in opts:
-               l = -1.0;
-       else:
-               l = latex_linewidths[cols][paper][latex_size]
 
        # urg: breaks on \include of full score
        # Use nofly option if you want to \include full score.
        if not 'nofly' in opts and not re.search ('\\\\score', body):
                opts.append ('fly')
 
+       if  'fragment' in opts or 'singleline' in opts:
+               l = -1.0;
+       else:
+               l = latex_linewidths[cols][paper][latex_size]
+
+
        if 'fly' in opts:
                body = r"""\score { 
   \notes\relative c {
@@ -211,26 +240,18 @@ def compose_full_body (body, opts):
   \paper { }  
 }""" % body
 
+        opts = uniq (opts)
+        optstring = string.join (opts, ' ')
+       optstring = re.sub ('\n', ' ', optstring)
                
        body = r"""
-%% Generated by mudela-book.py
+%% Generated by mudela-book.py; options are %s
 \include "paper%d.ly"
 \paper  { linewidth = %f \pt; } 
-""" % (music_size, l) + body
+""" % (optstring, music_size, l) + body
 
        return body
 
-def inclusion_func (match, surround):
-       insert = match.group (0)
-       try:
-               (insert, d) = read_doc_file (match.group(1))
-               deps = deps + d
-               insert = surround + insert + surround
-       except:
-               sys.stderr.write("warning: can't find %s, let's hope latex will\n" % m.group(1))
-
-       return (insert, deps)
-
 def find_inclusion_chunks (regex, surround, str):
        chunks = []
        while str:
@@ -258,16 +279,16 @@ def find_input_chunks (str):
 def read_doc_file (filename):
        """Read the input file, substituting for \input, \include, \mudela{} and \mudelafile"""
        str = ''
-       for fn in [filename, filename+'.tex', filename+'.doc']:
+       for ext in ['', '.tex', '.doc', '.tely']:
                try:
-                       f = open(fn)
+                       f = open(filename+ ext)
                        str = f.read (-1)
                except:
                        pass
                
 
        if not str:
-               raise IOError
+               error ("File not found `%s'\n" % filename)
 
        retdeps =  [filename]
 
@@ -281,17 +302,17 @@ def read_doc_file (filename):
                else:
                        __main__.format = 'latex'
                        
-       chunks = find_verbatim_chunks (str)
-       newchunks = []
+       chunks = [('input', str)]
 
-       for func in (find_include_chunks, find_input_chunks):
+       for func in (find_verbatim_chunks, find_verb_chunks, find_include_chunks, find_input_chunks):
+               newchunks = []
                for c in chunks:
                        if c[0] == 'input':
                                ch = func (c[1])
                                newchunks = newchunks + ch
                        else:
                                newchunks.append (c)
-
+               chunks = newchunks
        
        return chunks
 
@@ -343,29 +364,35 @@ def find_verbatim_chunks (str):
        (TYPE_STR, CONTENT_STR), where TYPE_STR is one of 'input' and 'verbatim'
        """
 
-       
        chunks = []
-       
        while str:
                m = get_re ('verbatim').search( str)
-               m2 = get_re ("verb").search( str)
+               if m == None:
+                       chunks.append( ('input', str))
+                       str = ''
+               else:
+                       chunks.append (('input', str[:m.start (0)]))
+                       chunks.append (('verbatim', m.group (0)))
+               
+                       str = str [m.end(0):]
+               
+       return chunks         
 
-               if  m == None and m2 == None:
+def find_verb_chunks (str):
+
+       chunks = []
+       while str:
+               m = get_re ("verb").search(str)
+               if  m == None:
                        chunks.append (('input', str))
                        str = ''
-                       break
-
-               if m == None:
-                       m = m2
+               else:
+                       chunks.append (('input', str[:m.start (0)]))
+                       chunks.append (('verbatim', m.group (0)))
+                       str = str [m.end(0):]
 
-               if m2 and m2.start (0) < m.start (0):
-                       m = m2
+       return chunks
                        
-               chunks.append (('input', str[:m.start (0)]))
-               chunks.append (('verbatim', m.group (0)))
-               
-               str = str [m.end(0):]
-       return chunks         
 
 
 def find_mudela_shorthand_chunks (str):
@@ -480,7 +507,6 @@ def advance_counters (counter, opts, str):
 
 
 def schedule_mudela_block (base, chunk, extra_opts):
-
        """Take the body and options from CHUNK, figure out how the
        real .ly should look, and what should be left MAIN_STR (meant
        for the main file).  The .ly is written, and scheduled in
@@ -498,10 +524,7 @@ def schedule_mudela_block (base, chunk, extra_opts):
        
        newbody = ''
        if 'verbatim' in opts:
-               verbatim_mangle = body
-               if __main__.format == 'texi':
-                       verbatim_mangle = re.sub ('([{}])', '@\\1', body)
-               newbody = get_output ('output-verbatim') % verbatim_mangle
+               newbody = output_verbatim (body)
 
        file_body = compose_full_body (body, opts)
        updated = update_file (file_body, base + '.ly')
@@ -609,9 +632,8 @@ def transform_input_file (in_filename, out_filename):
                                newchunks.append (('mudela', body))
                        else:
                                newchunks.append (c)
-
-
-       chunks = newchunks
+               chunks = newchunks
+               
        if chunks and chunks[0][0] == 'input':
                chunks[0] = ('input', completize_preamble (chunks[0][1]))
 
@@ -621,7 +643,7 @@ def system (cmd):
        sys.stderr.write ("invoking `%s'\n" % cmd)
        st = os.system (cmd)
        if st:
-               sys.stderr.write ('Error command exited with value %d\n' % st)
+               error ('Error command exited with value %d\n' % st)
        return st
 
 def compile_all_files (chunks):
index 602d77213ae3deb0becaa0fd24480ff64026f68c..66401aa09a5b403964f8a07a8430276270dd71d0 100644 (file)
@@ -150,7 +150,7 @@ AC_DEFUN(AC_STEPMAKE_GXX, [
     # ugh autoconf
     # urg, egcs: how to check for egcs >= 1.1?
     changequote(<<, >>)dnl
-    if $CXX --version | grep '2\.8' > /dev/null ||
+    if $CXX --version | egrep '2\.8|2\.9' > /dev/null ||
        $CXX --version | grep 'egcs' > /dev/null
     changequote([, ])dnl
     then
@@ -1082,37 +1082,3 @@ main ()
   AC_SUBST(GTK___CFLAGS)
   AC_SUBST(GTK___LIBS)
 ])
-
-dnl   GUILE_FLAGS --- set flags for compiling and linking with Guile
-dnl
-dnl   This macro runs the `guile-config' script, installed with Guile,
-dnl   to find out where Guile's header files and libraries are
-dnl   installed.  It sets two variables, marked for substitution, as
-dnl   by AC_SUBST.
-dnl   
-dnl     GUILE_CFLAGS --- flags to pass to a C or C++ compiler to build
-dnl             code that uses Guile header files.  This is almost
-dnl             always just a -I flag.
-dnl   
-dnl     GUILE_LDFLAGS --- flags to pass to the linker to link a
-dnl             program against Guile.  This includes `-lguile' for
-dnl             the Guile library itself, any libraries that Guile
-dnl             itself requires (like -lqthreads), and so on.  It may
-dnl             also include a -L flag to tell the compiler where to
-dnl             find the libraries.
-
-AC_DEFUN([GUILE_FLAGS],[
-## The GUILE_FLAGS macro.
-  ## First, let's just see if we can find Guile at all.
-  AC_MSG_CHECKING(for Guile)
-  guile-config link > /dev/null || {
-    echo "configure: cannot find guile-config; is Guile installed?" 1>&2
-    exit 1
-  }
-  GUILE_CFLAGS="`guile-config compile`"
-  GUILE_LDFLAGS="`guile-config link`"
-  AC_SUBST(GUILE_CFLAGS)
-  AC_SUBST(GUILE_LDFLAGS)
-  AC_MSG_RESULT(yes)
-])
-
index efa10adb72d60efb63366650a9e0cdb2d501d829..c20bd4b8c62503712afe1a1bf4a4da9ffed89c94 100755 (executable)
@@ -53,10 +53,6 @@ fi
 # Derek Quinn Wyatt   98-08-21  (adapted from Jan Nieuwenhuizen's code)
 
 
-
-
-
-
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
@@ -609,7 +605,7 @@ fi
     stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
 
     echo $ac_n "checking Package""... $ac_c" 1>&6
-echo "configure:613: checking Package" >&5
+echo "configure:609: checking Package" >&5
     if test "x$PACKAGE" = "xSTEPMAKE"; then
        echo "$ac_t""Stepmake package!" 1>&6
        (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
@@ -637,7 +633,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
     else
         echo "$ac_t""$PACKAGE" 1>&6
        echo $ac_n "checking for stepmake""... $ac_c" 1>&6
-echo "configure:641: checking for stepmake" >&5
+echo "configure:637: checking for stepmake" >&5
        # Check for installed stepmake
        if test -d $stepmake; then
            echo "$ac_t""$stepmake" 1>&6
@@ -760,7 +756,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:764: checking host system type" >&5
+echo "configure:760: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -785,7 +781,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:789: checking for $ac_word" >&5
+echo "configure:785: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -820,7 +816,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:824: checking for $ac_word" >&5
+echo "configure:820: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -857,7 +853,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:861: checking for $ac_word" >&5
+echo "configure:857: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -892,7 +888,7 @@ test -n "$TAR" || TAR="error"
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:896: checking for $ac_word" >&5
+echo "configure:892: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -932,7 +928,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:936: checking for $ac_word" >&5
+echo "configure:932: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SHELL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -969,7 +965,7 @@ fi
        # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:973: checking for $ac_word" >&5
+echo "configure:969: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1010,7 +1006,7 @@ fi
     # Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
 set dummy ${PYTHON:-python}; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1014: checking for $ac_word" >&5
+echo "configure:1010: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1177,7 +1173,7 @@ fi
 
 
     echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:1181: checking language" >&5    
+echo "configure:1177: checking language" >&5    
     case "$language" in
       En* | en* | Am* | am* | US* | us*)
            lang=English;;
@@ -1210,7 +1206,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1214: checking for $ac_word" >&5
+echo "configure:1210: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1245,7 +1241,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1249: checking for $ac_word" >&5
+echo "configure:1245: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1280,7 +1276,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1284: checking for $ac_word" >&5
+echo "configure:1280: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1315,7 +1311,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1319: checking for $ac_word" >&5
+echo "configure:1315: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1349,7 +1345,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1353: checking for $ac_word" >&5
+echo "configure:1349: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1384,7 +1380,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1388: checking for $ac_word" >&5
+echo "configure:1384: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1419,7 +1415,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1423: checking for $ac_word" >&5
+echo "configure:1419: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1454,7 +1450,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1458: checking for $ac_word" >&5
+echo "configure:1454: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1513,7 +1509,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1517: checking for $ac_word" >&5
+echo "configure:1513: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
index 751260e204fd8a145b4183e4650bdb6fd82fc11f..139597f9cb07c5d48bed18984ec4747f4b4f3438 100644 (file)
@@ -1,4 +1,2 @@
 
-$(configheader): $(depth)/config.h
-       cp $< $@
 
index a65b2a7f94f444479c4cb89c775155bb21c0fccc..3862835b3ebd793e1b30fb811808d7c9acab4743 100644 (file)
@@ -27,5 +27,3 @@ O_FILES+=$(addprefix $(outdir)/, $(CC_FILES:.cc=.o) $(LL_FILES:.ll=.o) $(YY_FILE
 
 TAGS_FILES += $(TCC_FILES) $(HH_FILES) $(INL_FILES) $(CC_FILES)
 
-# hmm
-configheader=$(outdir)/config.hh
index 55b82ab1823fb26a27696fd27bf28d042e68a5b8..5ff8b1d7653171f5039c0df9920ac3fa950568d5 100644 (file)
@@ -1,2 +1,2 @@
-$(configheader): $(depth)/config.h
-       cp $< $@
+
+#empty.
index 5965b2276ac00b5b18431ce3a83c264f206ff53e..4009610f31286de256d14a87ea8c43e587a12ae1 100644 (file)
@@ -22,5 +22,3 @@ C_OUTPUT_OPTION =  -o $@ $<
 
 CFLAGS = $(ICFLAGS) $(DEFINES) $(addprefix -I,$(INCLUDES)) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS)
 
-# hmm
-configheader=$(outdir)/config.h
index 65bb377267ef58dad768d49daf9293a273434fc0..db4a7e0b99994fc96079641b7cd7c60871e464ef 100644 (file)
@@ -5,7 +5,7 @@
 
 default: $(EXECUTABLE)
 
-$(EXECUTABLE): $(configheader) $(O_FILES) $(outdir)/version.hh
+$(EXECUTABLE): $(depth)/config.h $(O_FILES) $(outdir)/version.hh
        $(foreach a, $(MODULE_LIBS), $(MAKE) -C $(a) && ) true
        $(LD_COMMAND) $(O_FILES) $(LOADLIBES)
 
index 5f8b78d86e93e1e862cba0a26c2574c609c08c40..b9aacf192fa7fa88e7c5a87db417c628efe8e5cc 100644 (file)
@@ -84,7 +84,7 @@ date := $(shell date +%x)     #duplicated?
 #
 ARFLAGS = ru
 
-INCLUDES =  include $(outdir) $($(PACKAGE)_INCLUDES) $(MODULE_INCLUDES)
+INCLUDES =  $(depth) include $(outdir) $($(PACKAGE)_INCLUDES) $(MODULE_INCLUDES)
 
 # urg: for windows ?
 # LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) -lstdc++
index f032aa542552e2c54c9338e898026f89b45bc68c..ce12f8ff11fef678d125ecd808f4b6629260a44c 100644 (file)
@@ -4,11 +4,11 @@
 
 default: $(LIBRARY)
 
-$(outdir)/library.a: $(configheader) $(O_FILES) $(MODULE_LIBES)
+$(outdir)/library.a: $(depth)/config.h $(O_FILES) $(MODULE_LIBES)
        $(AR_COMMAND) $(O_FILES)
        $(RANLIB_COMMAND)
 
-$(SHAREDLIBRARY):  $(configheader) $(O_FILES) $(MODULE_LIBES)
+$(SHAREDLIBRARY):  $(depth)/config.h  $(O_FILES) $(MODULE_LIBES)
        $(LD_COMMAND) $(O_FILES) -o $@.$(VERSION)
        rm -f $@
        ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION)
index bad2bdc0a68ec1e69feea709558232b1cfac6b8f..cb353c583b22a63a214989fef2c207c5cacbd82d 100644 (file)
 % ``compiles'' operatorname binding in the body of foo, making
 % the code faster, and more reliable (less flexible)
 
+
+%
+% TODO : use GUILE for this kind of muckery.
+%
+
 {%
    \def\par{ }%         %Ugh.  Don't try this at home, kids!
    % neat file-include trick by Piet van Oostrum <piet@cs.uu.nl>
index 627e5987f05d4a77d848fca58b83fd4e250028b3..d983e9283071c6e52a468247d68d416f61e59c79 100644 (file)
@@ -27,6 +27,8 @@
 %
 \def\botalign#1{\vbox to 0pt{\vss #1}}
 \def\leftalign#1{\hbox to 0pt{#1\hss}}
+
+\input feta20.tex
 \font\textmusic=cmmi10
 \def\textsharp{\raise.4ex\hbox{\textmusic\char"5D}}
 \def\textnatural{\raise.4ex\hbox{\textmusic\char"5C}}
@@ -35,6 +37,7 @@
 
 
 
+
 % stacked horizontal lines
 \def\interscoreline{\vskip 16pt}
 \def\placebox#1#2#3{%