From: Han-Wen Nienhuys Date: Sat, 2 Mar 2002 01:53:32 +0000 (+0100) Subject: release: 1.5.36 X-Git-Tag: release/1.5.36 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=5ca271301d3af557f4720223736dc2d7b981c12b;p=lilypond.git release: 1.5.36 --- diff --git a/ChangeLog b/ChangeLog index 83eeee5a6b..b03413d2b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,48 @@ +2002-03-02 Han-Wen + + * lily/lily-guile.cc: isdir_b and isaxis_b changed to ly_axis_p, + ly_dir_p + + * lily/music.cc (ly_get_mus_property): typechecking + (ly_set_mus_property): idem + (ly_make_music): idem + (ly_music_name): idem + + * lily/chord.cc: use scm_reverse_x iso. gh_reverse() + + * lily/note-spacing.cc (stem_dir_correction): correction for + same stem notes as well. + + * lily/pitch.cc (pitch_transpose): stricter typechecking + + * mf/parmesan*mf: magnification fixes. + + * Documentation/topdocs/INSTALL.texi: update RedHat reqs + +2002-03-01 Mats Bengtsson + + * buildscripts/mf-to-table.py (postfixes): Output also .ly file + documenting the font. (Doesn't work for parmesan at the moment) + + * Documentation/user/appendices.itely (The Feta font): Add list of + Feta font symbols with names. + + * mf/GNUmakefile ($(outdir)/lilypond.map): Generate lilypond.map + automatically + +2002-03-01 Han-Wen + + * lily/translator-group.cc (ly_set_trans_property): typechecking + (ly_get_trans_property): typechecking. + + * lily/font-metric.cc (ly_text_dimension): typechecking + (ly_find_glyph_by_name): idem. + + * scm/bass-figure.scm (brew-complete-figure): support for + bracketed numbers. + + * lily/grob.cc (ly_get_paper_var): new function + 2002-02-28 Han-Wen Nienhuys * VERSION (PATCH_LEVEL): 1.5.35 released. diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index 100d39fc95..e78d50f4e3 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -243,6 +243,8 @@ Grace note do weird things with timing. Fragile. @lilypondfile[printfilename]{spacing-stem-direction.ly} +@lilypondfile[printfilename]{spacing-stem-same-direction.ly} + @lilypondfile[printfilename]{spacing-individual-tuning.ly} @lilypondfile[printfilename]{lyrics-bar.ly} diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index bb1c0ac2e0..4859ce993a 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -339,8 +339,8 @@ tetex-latex, tetex-dvips, libstdc++, python, ghostscript. For compilation on a Red Hat system you need these packages, in addition to the those needed for running: glibc-devel, gcc-c++, libstdc++-devel, -guile-devel, flex, bison, texinfo, tetex-devel, groff, -libgr-progs. +guile-devel, flex, bison, texinfo, groff. + @subsection LinuxPPC diff --git a/Documentation/user/appendices.itely b/Documentation/user/appendices.itely index 17ab55f4c0..dd424a003b 100644 --- a/Documentation/user/appendices.itely +++ b/Documentation/user/appendices.itely @@ -6,6 +6,7 @@ * American Chords :: * Jazz chords:: * MIDI instruments:: +* The Feta font:: @end menu @node Lyrics mode definition @@ -200,3 +201,12 @@ scheme = \chords { "viola" "lead 5 (charang)" "gunshot" "cello" "lead 6 (voice)" @end example + +@node The Feta font +@section The Feta font +The following symbols are available in the Feta font and may be +accessed directly using text markup such as +@code{g^#'(music "scripts-segno")}, see @ref{Text markup}. + +@lilypondfile{feta16.ly} + diff --git a/INSTALL.txt b/INSTALL.txt index 9cc58b4f13..afe6857fac 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -317,8 +317,7 @@ tetex, tetex-latex, tetex-dvips, libstdc++, python, ghostscript. For compilation on a Red Hat system you need these packages, in addition to the those needed for running: glibc-devel, gcc-c++, -libstdc++-devel, guile-devel, flex, bison, texinfo, tetex-devel, groff, -libgr-progs. +libstdc++-devel, guile-devel, flex, bison, texinfo, groff. LinuxPPC -------- diff --git a/VERSION b/VERSION index f36d3ce01b..31be469bbf 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=5 -PATCH_LEVEL=35 +PATCH_LEVEL=36 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py index c0ef406baa..820dc6e691 100755 --- a/buildscripts/mf-to-table.py +++ b/buildscripts/mf-to-table.py @@ -122,6 +122,34 @@ def write_tex_defs (file, global_info, charmetrics): for m in charmetrics: file.write (r'''\def\%s%s{\char%d}%s''' % (nm, m['tex'], m['code'],'\n')) +def write_fontlist (file, global_info, charmetrics): + nm = global_info['FontFamily'] + file.write (r""" +% Lilypond file to list all font symbols and the corresponding names +% Automatically generated by mf-to-table.py +\score{\notes{\fatText +""") + for m in charmetrics: + escapedname=re.sub('_','\\\\\\\\_', m['name']) + file.write ('s^#\'(lines (music \"%s\") \"%s\")\n' % (m['name'], escapedname)) + file.write (r""" +} + \paper{ + \translator{ + \ScoreContext + \remove "Bar_number_engraver" + TextScript \override #'extra-extent-X = #'(-1 . 1) + } + \translator{ + \StaffContext + \remove "Clef_engraver" + \remove "Key_engraver" + \remove "Time_signature_engraver" + \remove "Staff_symbol_engraver" + } + } +} +""") def write_deps (file, deps, targets): for t in targets: @@ -149,12 +177,13 @@ Options: (options, files) = getopt.getopt( sys.argv[1:], 'a:d:hl:o:p:t:', - ['afm=', 'outdir=', 'dep=', 'tex=', 'debug', 'help', 'package=']) + ['afm=', 'outdir=', 'dep=', 'tex=', 'ly=', 'debug', 'help', 'package=']) texfile_nm = '' depfile_nm = '' afmfile_nm = '' +lyfile_nm = '' outdir_prefix = '.' for opt in options: @@ -166,6 +195,8 @@ for opt in options: outdir_prefix = a elif o == '--tex' or o == '-t': texfile_nm = a + elif o == '--ly' or o == '-': + lyfile_nm = a elif o== '--help' or o == '-h': help() elif o=='--afm' or o == '-a': @@ -190,5 +221,8 @@ for filenm in files: write_afm_metric (afm, g,m) write_tex_defs (open (texfile_nm, 'w'), g, m) write_deps (open (depfile_nm, 'wb'), deps, [base + '.dvi', texfile_nm, afmfile_nm]) + if lyfile_nm != '': + write_fontlist(open (lyfile_nm, 'w'), g, m) + diff --git a/input/regression/spacing-stem-same-direction.ly b/input/regression/spacing-stem-same-direction.ly new file mode 100644 index 0000000000..62e7216e39 --- /dev/null +++ b/input/regression/spacing-stem-same-direction.ly @@ -0,0 +1,13 @@ +\header { + texidoc = "For juxtaposed chords with the same direction, a +slight optical correction is used. It is constant, and only works if +two chords have no common head-positions range." +} + +\score { \notes \relative c'' { +\stemDown +\time 12/4 +[f8 e f e] [f d f d] [f c f c] [f b, f' b,] [f' a, f' a,] +} +\paper { linewidth = -1. } +} diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 0ab7a87b1b..ec1f482ef4 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -251,7 +251,7 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a) FIXME: uncommenting freaks out the Y-alignment of line-of-score. */ - // Real align_param = isdir_b (align) ? gh_scm2double (align) : 0.0; + // Real align_param = ly_dir_p (align) ? gh_scm2double (align) : 0.0; if (gh_number_p (align)) center_offset = total.linear_combination (gh_scm2double (align)); diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index 73340a4e0f..f480a6acb9 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -68,7 +68,7 @@ Arpeggio::brew_molecule (SCM smob) } Direction dir = CENTER; - if (isdir_b (me->get_grob_property ("arpeggio-direction"))) + if (ly_dir_p (me->get_grob_property ("arpeggio-direction"))) { dir = to_dir (me->get_grob_property ("arpeggio-direction")); } diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index 1c757807e2..48ac52ac32 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -234,7 +234,6 @@ Break_align_interface::do_alignment (Grob *me) The result is that an offsets of align_elements_to_extents () are not compensated for, and spring_len is completely off. - */ column->set_grob_property ("extra-space", diff --git a/lily/chord.cc b/lily/chord.cc index 908d8f4432..e76549a49e 100644 --- a/lily/chord.cc +++ b/lily/chord.cc @@ -13,70 +13,7 @@ #include "music-list.hh" #include "musical-request.hh" -/* some SCM abbrevs - zijn deze nou handig? - zijn ze er al in scheme, maar heten ze anders? */ - - -/* Remove doubles from (sorted) list */ -SCM -ly_unique (SCM list) -{ - SCM unique = SCM_EOL; - for (SCM i = list; gh_pair_p (i); i = ly_cdr (i)) - { - if (!gh_pair_p (ly_cdr (i)) - || !gh_equal_p (ly_car (i), ly_cadr (i))) - unique = gh_cons (ly_car (i), unique); - } - return gh_reverse (unique); -} - -/* Hmm, rewrite this using ly_split_list? */ -SCM -ly_remove_member (SCM s, SCM list) -{ - SCM removed = SCM_EOL; - for (SCM i = list; gh_pair_p (i); i = ly_cdr (i)) - { - if (!gh_equal_p (ly_car (i), s)) - removed = gh_cons (ly_car (i), removed); - } - return gh_reverse (removed); -} - -/* tail add */ -SCM -ly_snoc (SCM s, SCM list) -{ - return gh_append2 (list, scm_list_n (s, SCM_UNDEFINED)); -} - - -/* Split list at member s, removing s. - Return (BEFORE . AFTER) */ -SCM -ly_split_list (SCM s, SCM list) -{ - SCM before = SCM_EOL; - SCM after = list; - for (; gh_pair_p (after);) - { - SCM i = ly_car (after); - after = ly_cdr (after); - if (gh_equal_p (i, s)) - break; - before = gh_cons (i, before); - } - return gh_cons (gh_reverse (before), after); -} - -/* - JUNKME. - do something smarter. - zoals? - */ SCM Chord::base_pitches (SCM tonic) { @@ -86,10 +23,10 @@ Chord::base_pitches (SCM tonic) SCM minor = Pitch (0, 2, -1).smobbed_copy (); base = gh_cons (tonic, base); - base = gh_cons (Pitch::transpose (ly_car (base), major), base); - base = gh_cons (Pitch::transpose (ly_car (base), minor), base); + base = gh_cons (pitch_transpose (ly_car (base), major), base); + base = gh_cons (pitch_transpose (ly_car (base), minor), base); - return gh_reverse (base); + return scm_reverse_x (base, SCM_EOL); } SCM @@ -101,10 +38,10 @@ Chord::transpose_pitches (SCM tonic, SCM pitches) SCM transposed = SCM_EOL; for (SCM i = pitches; gh_pair_p (i); i = ly_cdr (i)) { - transposed = gh_cons (Pitch::transpose (tonic, ly_car (i)), + transposed = gh_cons (pitch_transpose (tonic, ly_car (i)), transposed); } - return gh_reverse (transposed); + return scm_reverse_x (transposed, SCM_EOL); } /* @@ -123,11 +60,11 @@ Chord::lower_step (SCM tonic, SCM pitches, SCM step) if (gh_equal_p (step_scm (tonic, ly_car (i)), step) || gh_scm2int (step) == 0) { - p = Pitch::transpose (p, Pitch (0, 0, -1).smobbed_copy ()); + p = pitch_transpose (p, Pitch (0, 0, -1).smobbed_copy ()); } lowered = gh_cons (p, lowered); } - return gh_reverse (lowered); + return scm_reverse_x (lowered, SCM_EOL); } /* Return member that has same notename, disregarding octave or alterations */ @@ -217,7 +154,7 @@ Chord::missing_thirds (SCM pitches) for (int i=0; i < 7; i++) thirds = gh_cons (Pitch (0, 2, minormajor_a[i]).smobbed_copy (), thirds); - thirds = scm_vector (gh_reverse (thirds)); + thirds = scm_vector (scm_reverse_x (thirds, SCM_EOL)); SCM tonic = ly_car (pitches); SCM last = tonic; @@ -232,7 +169,7 @@ Chord::missing_thirds (SCM pitches) { int third = (unsmob_pitch (last)->notename_i_ - unsmob_pitch (tonic)-> notename_i_ + 7) % 7; - last = Pitch::transpose (last, scm_vector_ref (thirds, gh_int2scm (third))); + last = pitch_transpose (last, scm_vector_ref (thirds, gh_int2scm (third))); } if (step > gh_scm2int (step_scm (tonic, last))) @@ -242,7 +179,7 @@ Chord::missing_thirds (SCM pitches) missing = gh_cons (last, missing); int third = (unsmob_pitch (last)->notename_i_ - unsmob_pitch (tonic)->notename_i_ + 7) % 7; - last = Pitch::transpose (last, scm_vector_ref (thirds, + last = pitch_transpose (last, scm_vector_ref (thirds, gh_int2scm (third))); } } @@ -262,7 +199,7 @@ Chord::add_above_tonic (SCM pitch, SCM pitches) /* Should we maybe first make sure that PITCH is below tonic? */ if (pitches != SCM_EOL) while (Pitch::less_p (pitch, ly_car (pitches)) == SCM_BOOL_T) - pitch = Pitch::transpose (pitch, Pitch (1, 0, 0).smobbed_copy ()); + pitch = pitch_transpose (pitch, Pitch (1, 0, 0).smobbed_copy ()); pitches = gh_cons (pitch, pitches); return scm_sort_list (pitches, Pitch::less_p_proc); diff --git a/lily/directional-element-interface.cc b/lily/directional-element-interface.cc index aadc62a4db..ccbdc5de9c 100644 --- a/lily/directional-element-interface.cc +++ b/lily/directional-element-interface.cc @@ -15,7 +15,7 @@ bool Directional_element_interface::has_interface (Grob*me) { - return isdir_b (me->get_grob_property ("direction")); + return ly_dir_p (me->get_grob_property ("direction")); } Direction @@ -23,7 +23,7 @@ Directional_element_interface::get (Grob*me) { // return dir_; SCM d= me->get_grob_property ("direction"); - if (!isdir_b (d)) + if (!ly_dir_p (d)) return CENTER; return to_dir (d); diff --git a/lily/duration.cc b/lily/duration.cc index d04491af59..c46afab108 100644 --- a/lily/duration.cc +++ b/lily/duration.cc @@ -131,6 +131,9 @@ Duration::less_p (SCM p1, SCM p2) static SCM make_duration (SCM l, SCM d) { + SCM_ASSERT_TYPE(gh_number_p(l), l, SCM_ARG1, __FUNCTION__, "integer"); + SCM_ASSERT_TYPE(gh_number_p(d), d, SCM_ARG2, __FUNCTION__, "integer"); + Duration p (gh_scm2int (l), gh_scm2int (d)); return p.smobbed_copy (); } diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc index 45196adb9f..8a7bab80b3 100644 --- a/lily/fingering-engraver.cc +++ b/lily/fingering-engraver.cc @@ -116,7 +116,7 @@ Fingering_engraver::process_music () for (int i= pitch_sorted_reqs.size(); i--;) { SCM dir = pitch_sorted_reqs[i]->get_mus_property ("direction"); - if (isdir_b (dir) && to_dir (dir)) { + if (ly_dir_p (dir) && to_dir (dir)) { if (to_dir (dir) == UP) up_reqs_.push (pitch_sorted_reqs[i]); else if (to_dir (dir) == DOWN) @@ -189,7 +189,7 @@ Fingering_engraver::make_script (Direction d, Music *r,Axis a, int i) gh_int2scm (100 + d* i)); - if (!isdir_b (fingering->get_grob_property ("direction"))) + if (!ly_dir_p (fingering->get_grob_property ("direction"))) { if (d) fingering->set_grob_property ("direction", gh_int2scm (d)); diff --git a/lily/font-interface.cc b/lily/font-interface.cc index c0f7757823..c5c32c2337 100644 --- a/lily/font-interface.cc +++ b/lily/font-interface.cc @@ -69,12 +69,7 @@ SCM ly_font_interface_get_default_font (SCM grob) { Grob * gr = unsmob_grob (grob); - - if (!gr) - { - warning ("ly_font_interface_get_default_font (): invalid argument"); - return SCM_UNDEFINED; - } + SCM_ASSERT_TYPE(gr, grob, SCM_ARG1, __FUNCTION__, "grob"); return Font_interface::get_default_font (gr)->self_scm (); } diff --git a/lily/font-metric.cc b/lily/font-metric.cc index 577471baa3..84c1cd1045 100644 --- a/lily/font-metric.cc +++ b/lily/font-metric.cc @@ -137,14 +137,11 @@ Font_metric::find_by_name (String) const SCM ly_find_glyph_by_name (SCM font, SCM name) { - if (!unsmob_metrics (font) || !gh_string_p (name)) - { - warning ("ly-find-glyph-by-name: invalid argument."); - Molecule m; - return m.smobbed_copy (); - } + Font_metric *fm = unsmob_metrics (font); + SCM_ASSERT_TYPE(fm, font, SCM_ARG1, __FUNCTION__, "font-metric"); + SCM_ASSERT_TYPE(gh_string_p (name), name, SCM_ARG2, __FUNCTION__, "string"); - return unsmob_metrics (font)->find_by_name (ly_scm2string (name)).smobbed_copy (); + return fm->find_by_name (ly_scm2string (name)).smobbed_copy (); } @@ -152,17 +149,11 @@ SCM ly_text_dimension (SCM font, SCM text) { Box b; - - if (!unsmob_metrics (font) || !gh_string_p(text)) - { - warning ("ly-find-glyph-by-name: invalid argument."); - Molecule m; - return m.smobbed_copy (); - } - else - { - b = unsmob_metrics (font)->text_dimension (ly_scm2string (text)); - } + Font_metric *fm = unsmob_metrics (font); + SCM_ASSERT_TYPE(fm, font, SCM_ARG1, __FUNCTION__, "font-metric"); + SCM_ASSERT_TYPE(gh_string_p (text), text, SCM_ARG2, __FUNCTION__, "string"); + + b = fm->text_dimension (ly_scm2string (text)); return gh_cons (ly_interval2scm (b[X_AXIS]), ly_interval2scm(b[Y_AXIS])); } diff --git a/lily/grob.cc b/lily/grob.cc index 064b68faab..deea0beadf 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -847,9 +847,21 @@ Grob::discretionary_processing () SCM spanner_get_bound (SCM slur, SCM dir) { - return dynamic_cast (unsmob_grob (slur))->get_bound (to_dir (dir))->self_scm (); + Spanner * sl = dynamic_cast (unsmob_grob (slur)); + SCM_ASSERT_TYPE(sl, slur, SCM_ARG1, __FUNCTION__, "spanner grob"); + SCM_ASSERT_TYPE(ly_dir_p (dir), slur, SCM_ARG2, __FUNCTION__, "dir"); + return sl->get_bound (to_dir (dir))->self_scm (); } +SCM +ly_get_paper_var (SCM grob, SCM sym) +{ + Grob * sc = unsmob_grob (grob); + SCM_ASSERT_TYPE(sc, grob, SCM_ARG1, __FUNCTION__, "grob"); + SCM_ASSERT_TYPE(gh_symbol_p(sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); + + return sc->paper_l() ->get_scmvar_scm (sym); +} @@ -862,6 +874,8 @@ init_functions () (Scheme_function_unknown)ly_set_grob_property); scm_c_define_gsubr ("ly-get-spanner-bound", 2 , 0, 0, (Scheme_function_unknown) spanner_get_bound); + scm_c_define_gsubr ("ly-get-paper-variable", 2 , 0, 0, + (Scheme_function_unknown) ly_get_paper_var); } bool diff --git a/lily/hairpin.cc b/lily/hairpin.cc index d0e78f6289..1e4d659f82 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -26,7 +26,7 @@ Hairpin::brew_molecule (SCM smob) Real line = me->paper_l ()->get_var ("stafflinethickness"); SCM s = me->get_grob_property ("grow-direction"); - if (!isdir_b (s)) + if (!ly_dir_p (s)) { me->suicide (); return SCM_EOL; diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index f957616d8b..d4ea1f8192 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -184,8 +184,7 @@ void ly_display_scm (SCM s); void read_lily_scm_file (String); void init_lily_guile (String dir); -bool isdir_b (SCM s); -bool isaxis_b (SCM s); +bool ly_dir_p (SCM s); bool ly_number_pair_p (SCM); bool ly_axis_p (SCM); @@ -204,6 +203,10 @@ SCM index_cell (SCM cellp, Direction d); SCM index_set_cell (SCM cellp, Direction d, SCM val); + +SCM ly_snoc (SCM s, SCM list); +SCM ly_split_list (SCM s, SCM list); +SCM ly_unique (SCM list); /* snarfing. */ diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index 0ad02d105b..6bc9df23d3 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -61,7 +61,8 @@ public: */ Real get_realvar (SCM symbol) const; Real get_var (String id) const; - SCM get_scmvar (String id)const; + SCM get_scmvar (String id)const; + SCM get_scmvar_scm (SCM sym) const; void reinit (); Paper_def (); Paper_def (Paper_def const&); diff --git a/lily/include/pitch.hh b/lily/include/pitch.hh index abc2eba6bc..0d30f0529f 100644 --- a/lily/include/pitch.hh +++ b/lily/include/pitch.hh @@ -62,8 +62,8 @@ public: /// return pitch from central c (in halfnotes) int semitone_pitch () const; String str () const; + static SCM transpose (SCM,SCM); - static SCM transpose (SCM p, SCM delta); SCM smobbed_copy () const; DECLARE_SCHEME_CALLBACK (less_p, (SCM a, SCM b)); @@ -71,7 +71,7 @@ public: }; - +SCM pitch_transpose (SCM p, SCM delta); DECLARE_UNSMOB(Pitch,pitch); #include "compare.hh" diff --git a/lily/input-smob.cc b/lily/input-smob.cc index fd904b25be..89a96a1e4a 100644 --- a/lily/input-smob.cc +++ b/lily/input-smob.cc @@ -35,12 +35,17 @@ free_smob (SCM s) return 0; } +/* + for unknown reason, we don't use IMPLEMENT_TYPE_P + */ SCM ly_input_p (SCM x) { return unsmob_input (x) ? SCM_BOOL_T : SCM_BOOL_F ; } + + static void start_input_smobs () { @@ -50,6 +55,7 @@ start_input_smobs () scm_set_smob_print (input_tag, print_smob); scm_set_smob_equalp (input_tag, 0); + scm_c_define_gsubr ("ly-input-location?", 1, 0, 0, (Scheme_function_unknown)ly_input_p); } diff --git a/lily/lexer.ll b/lily/lexer.ll index 7bff8df6f4..423e437b20 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -272,12 +272,6 @@ HYPHEN -- _ { return FIGURE_SPACE; } - \] { - return FIGURE_BRACKET_CLOSE; - } - \[ { - return FIGURE_BRACKET_OPEN; - } \> { return FIGURE_CLOSE; } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index cf15fbd962..794062bfdd 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -230,12 +230,6 @@ ly_number_pair_p (SCM p) return gh_pair_p (p) && gh_number_p (ly_car (p)) && gh_number_p (ly_cdr (p)); } -bool -ly_axis_p (SCM a) -{ - return gh_number_p (a) && (gh_scm2int (a) == 0 || gh_scm2int (a) == 1); -} - typedef void (*Void_fptr) (); Array *scm_init_funcs_; @@ -289,7 +283,7 @@ unsigned int ly_scm_hash (SCM s) bool -isdir_b (SCM s) +ly_dir_p (SCM s) { if (gh_number_p (s)) { @@ -301,7 +295,7 @@ isdir_b (SCM s) bool -isaxis_b (SCM s) +ly_axis_p (SCM s) { if (gh_number_p (s)) { @@ -667,3 +661,51 @@ type_check_assignment (SCM sym, SCM val, SCM type_symbol) } return ok; } + + +/* some SCM abbrevs + + zijn deze nou handig? + zijn ze er al in scheme, maar heten ze anders? */ + + +/* Remove doubles from (sorted) list */ +SCM +ly_unique (SCM list) +{ + SCM unique = SCM_EOL; + for (SCM i = list; gh_pair_p (i); i = ly_cdr (i)) + { + if (!gh_pair_p (ly_cdr (i)) + || !gh_equal_p (ly_car (i), ly_cadr (i))) + unique = gh_cons (ly_car (i), unique); + } + return scm_reverse_x (unique, SCM_EOL); +} + +/* tail add */ +SCM +ly_snoc (SCM s, SCM list) +{ + return gh_append2 (list, scm_list_n (s, SCM_UNDEFINED)); +} + + +/* Split list at member s, removing s. + Return (BEFORE . AFTER) */ +SCM +ly_split_list (SCM s, SCM list) +{ + SCM before = SCM_EOL; + SCM after = list; + for (; gh_pair_p (after);) + { + SCM i = ly_car (after); + after = ly_cdr (after); + if (gh_equal_p (i, s)) + break; + before = gh_cons (i, before); + } + return gh_cons ( scm_reverse_x (before, SCM_EOL), after); + +} diff --git a/lily/lookup.cc b/lily/lookup.cc index 3415820205..2d832c965b 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -408,7 +408,7 @@ ly_bracket (SCM a, SCM iv, SCM d, SCM t, SCM p) { SCM_ASSERT_TYPE(ly_axis_p (a), a, SCM_ARG1, __FUNCTION__, "axis") ; SCM_ASSERT_TYPE(ly_number_pair_p (iv), iv, SCM_ARG1, __FUNCTION__, "number pair") ; - SCM_ASSERT_TYPE(isdir_b (d), a, SCM_ARG1, __FUNCTION__, "direction") ; + SCM_ASSERT_TYPE(ly_dir_p (d), a, SCM_ARG1, __FUNCTION__, "direction") ; SCM_ASSERT_TYPE(gh_number_p (t), a, SCM_ARG1, __FUNCTION__, "number") ; SCM_ASSERT_TYPE(gh_number_p(p), a, SCM_ARG1, __FUNCTION__, "number") ; diff --git a/lily/molecule.cc b/lily/molecule.cc index 6a7709a5bc..6bb59a58a1 100644 --- a/lily/molecule.cc +++ b/lily/molecule.cc @@ -151,13 +151,9 @@ SCM Molecule::ly_get_molecule_extent (SCM mol, SCM axis) { Molecule *m = unsmob_molecule (mol); + SCM_ASSERT_TYPE (m, mol, SCM_ARG1, __FUNCTION__, "molecule"); + SCM_ASSERT_TYPE (ly_axis_p(axis), axis, SCM_ARG2, __FUNCTION__, "axis"); - if (!m || !ly_axis_p (axis)) - { - warning ("ly-get-molecule-extent: invalid arguments"); - return ly_interval2scm (Interval (0,0)); - } - return ly_interval2scm (m->extent (Axis (gh_scm2int (axis)))); } @@ -173,7 +169,7 @@ Molecule::ly_molecule_combined_at_edge (SCM first, SCM axis, SCM direction, SCM_ASSERT_TYPE(ly_axis_p(axis), axis, SCM_ARG2, __FUNCTION__, "axis"); - SCM_ASSERT_TYPE(isdir_b (direction), direction, SCM_ARG3, __FUNCTION__, "dir"); + SCM_ASSERT_TYPE(ly_dir_p (direction), direction, SCM_ARG3, __FUNCTION__, "dir"); SCM_ASSERT_TYPE(gh_number_p(padding), padding, SCM_ARG4, __FUNCTION__, "number"); if (m1) @@ -220,7 +216,7 @@ ly_align_to_x (SCM mol, SCM axis, SCM dir) { SCM_ASSERT_TYPE(unsmob_molecule (mol), mol, SCM_ARG1, __FUNCTION__, "molecule"); SCM_ASSERT_TYPE(ly_axis_p(axis), axis, SCM_ARG2, __FUNCTION__, "axis"); - SCM_ASSERT_TYPE(isdir_b (dir), dir, SCM_ARG3, __FUNCTION__, "dir"); + SCM_ASSERT_TYPE(ly_dir_p (dir), dir, SCM_ARG3, __FUNCTION__, "dir"); unsmob_molecule (mol)->align_to ((Axis)gh_scm2int (axis), Direction (gh_scm2int (dir))); diff --git a/lily/music.cc b/lily/music.cc index f2939fb4f5..d812fca1d5 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -167,8 +167,6 @@ Music::internal_get_mus_property (SCM sym) const return (s == SCM_BOOL_F) ? SCM_EOL : ly_cdr (s); } - - void Music::internal_set_mus_property (SCM s, SCM v) { @@ -177,7 +175,6 @@ Music::internal_set_mus_property (SCM s, SCM v) assert (type_check_assignment (s, v, ly_symbol2scm ("music-type?"))); #endif - mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v); } @@ -189,8 +186,6 @@ Music::set_spot (Input ip) set_mus_property ("origin", make_input (ip)); } - - Input* Music::origin () const { @@ -199,9 +194,6 @@ Music::origin () const } - - - Music::~Music () { @@ -211,17 +203,11 @@ SCM ly_get_mus_property (SCM mus, SCM sym) { Music * sc = unsmob_music (mus); - - if (sc) - { + SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "grob"); + SCM_ASSERT_TYPE(gh_symbol_p(sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); + return sc->internal_get_mus_property (sym); - } - else - { - warning (_ ("ly_get_mus_property (): Not a Music")); - scm_write (mus, scm_current_error_port ()); - } - return SCM_EOL; + } @@ -229,22 +215,8 @@ SCM ly_set_mus_property (SCM mus, SCM sym, SCM val) { Music * sc = unsmob_music (mus); - - if (!gh_symbol_p (sym)) - { - warning (_ ("ly_set_mus_property (): Not a symbol")); - scm_write (mus, scm_current_error_port ()); - - return SCM_UNSPECIFIED; - } - - if (!sc) - { - warning (_ ("ly_set_mus_property (): not of type Music: ")); - scm_write (mus, scm_current_error_port ()); - return SCM_UNSPECIFIED; - } - + SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "grob"); + SCM_ASSERT_TYPE(gh_symbol_p(sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?")); if (ok) @@ -260,35 +232,23 @@ ly_set_mus_property (SCM mus, SCM sym, SCM val) SCM ly_make_music (SCM type) { - if (!gh_string_p (type)) - { - warning (_ ("ly_make_music (): Not a string")); - scm_write (type, scm_current_error_port ()); - - return SCM_UNSPECIFIED; - } - else - { - SCM s = get_music (ly_scm2string (type))->self_scm (); - scm_gc_unprotect_object (s); + SCM_ASSERT_TYPE(gh_string_p(type), type, SCM_ARG1, __FUNCTION__, "string"); + + + SCM s = get_music (ly_scm2string (type))->self_scm (); + scm_gc_unprotect_object (s); - return s; - } + return s; } SCM ly_music_name (SCM mus) { Music * m = unsmob_music (mus); - const char *nm =""; - if (!m) - { - warning (_ ("ly_music_name (): Not a music expression")); - scm_write (mus, scm_current_error_port ()); - } - else - nm = classname (m); - return ly_str02scm (nm); + SCM_ASSERT_TYPE(m, mus, SCM_ARG1, __FUNCTION__ ,"music"); + + const char * nm = classname (m); + return ly_str02scm (nm); } SCM diff --git a/lily/note-head.cc b/lily/note-head.cc index 4e2c2fc109..01276185eb 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -184,7 +184,7 @@ Note_head::brew_molecule (SCM smob) Interval Note_head::head_extent (Grob *me, Axis a) { - return internal_brew_molecule (me, false).extent (a); + return internal_brew_molecule (me, false).extent (a); } bool diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc index 77365b134d..905975896a 100644 --- a/lily/note-spacing.cc +++ b/lily/note-spacing.cc @@ -150,7 +150,8 @@ Real Note_spacing::stem_dir_correction (Grob*me) { Drul_array stem_dirs(CENTER,CENTER); - Drul_array posns; + Drul_array stem_posns; + Drul_array head_posns; Drul_array props(me->get_grob_property ("left-items"), me->get_grob_property ("right-items")); @@ -158,12 +159,17 @@ Note_spacing::stem_dir_correction (Grob*me) Interval intersect; bool correct = true; Direction d = LEFT; + bool acc_right = false; + do { for (SCM s = props[d]; gh_pair_p (s); s = gh_cdr (s)) { Item * it= dynamic_cast (unsmob_grob (gh_car(s))); + if (d == RIGHT) + acc_right = acc_right || Note_column::accidentals (it); + Grob *stem = Note_column::stem_l (it); if (!stem || Stem::invisible_b (stem)) @@ -180,31 +186,81 @@ Note_spacing::stem_dir_correction (Grob*me) } stem_dirs[d] = sd; - Real chord_start = Stem::head_positions (stem)[sd]; + Interval hp = Stem::head_positions (stem); + Real chord_start = hp[sd]; Real stem_end = Stem::stem_end_position (stem); - posns[d] = Interval(chord_start? stem_end); + stem_posns[d] = Interval(chord_start? stem_end); + head_posns[d].unite (hp); } } while (flip (&d) != LEFT); - intersect = posns[LEFT]; - intersect.intersect(posns[RIGHT]); - correct = correct && !intersect.empty_b (); - correct = correct && (stem_dirs[LEFT] *stem_dirs[RIGHT] == -1); - - exit_loop: - if(!correct) - return 0.0; /* - Ugh. 7 is hardcoded. - */ - Real correction = abs (intersect.length ()); - correction = (correction/7) get_grob_property ("stem-spacing-correction")); + don't correct if accidentals are sticking out of the right side. - return correction; + */ + if (acc_right) + return 0.0; + + + if (correct && stem_dirs[LEFT] *stem_dirs[RIGHT] == -1) + { + intersect = stem_posns[LEFT]; + intersect.intersect(stem_posns[RIGHT]); + correct = correct && !intersect.empty_b (); + + if (!correct) + return 0.0; + /* + Ugh. 7 is hardcoded. + */ + Real correction = abs (intersect.length ()); + correction = (correction/7) get_grob_property ("stem-spacing-correction")); + return correction; + } + else if (correct) + { + /* + Correct for the following situation: + + X X + | | + | | + | X | + | | | + ======== + + ^ move the center one to the left. + + + this effect seems to be much more subtle than the + stem-direction stuff (why?), and also does not scale with the + difference in stem length. + + */ + + + Interval hp = head_posns[LEFT]; + hp.intersect (head_posns[RIGHT]); + if (!hp.empty_b()) + return 0.0; + + Direction lowest = + (head_posns[LEFT][DOWN] > head_posns[RIGHT][UP]) ? RIGHT : LEFT; + + Real delta = head_posns[-lowest][DOWN] - head_posns[lowest][UP] ; + Real corr = gh_scm2double (me->get_grob_property ("stem-spacing-correction")); + corr = (delta <= 1) ? 0.0 : 0.25; + + return -lowest * corr ; + } + + + exit_loop: + return 0.0; } diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 5813786e62..d28375ba91 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -19,6 +19,12 @@ #include "file-results.hh" // urg? header_global_p #include "paper-outputter.hh" +/* + This is an almost empty thing. The only substantial thing this class + handles, is scaling up and down to real-world dimensions (internally + dimensions are against global staff-space.) + + */ Paper_def::Paper_def () { } @@ -45,6 +51,13 @@ Paper_def::get_scmvar (String s) const return scope_p_->scm_elem (ly_symbol2scm (s.ch_C ())); } + +SCM +Paper_def::get_scmvar_scm (SCM sym) const +{ + return gh_double2scm (get_realvar (sym)); +} + Real Paper_def::get_realvar (SCM s) const { diff --git a/lily/parser.yy b/lily/parser.yy index c7a905166c..3f972dcc01 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1744,12 +1744,14 @@ bass_figure: br_bass_figure: '[' bass_figure { - unsmob_music ($2)->set_mus_property ("bracket-start", SCM_BOOL_T); + $$ = $2; + unsmob_music ($$)->set_mus_property ("bracket-start", SCM_BOOL_T); } | bass_figure { - + $$ = $1; } | br_bass_figure ']' { + $$ = $1; unsmob_music ($1)->set_mus_property ("bracket-stop", SCM_BOOL_T); } ; diff --git a/lily/pitch.cc b/lily/pitch.cc index d160841e9c..f5fe945f99 100644 --- a/lily/pitch.cc +++ b/lily/pitch.cc @@ -220,20 +220,28 @@ Pitch::down_to (int notename) notename_i_ = notename; } -///MAKE_SCHEME_CALLBACK (Pitch, transpose, 2); -///transpose_proc? +/* + can't use macro MAKE_SCHEME_CALLBACK(). + messy stuff since Pitch::transpose is overloaded. + */ + SCM -Pitch::transpose (SCM p, SCM delta) +pitch_transpose (SCM p, SCM delta) { - Pitch t = *unsmob_pitch (p); - t.transpose (*unsmob_pitch (delta)); - return t.smobbed_copy (); + Pitch* t = unsmob_pitch (p); + Pitch *d = unsmob_pitch (delta); + SCM_ASSERT_TYPE(t, p, SCM_ARG1, __FUNCTION__, "pitch") ; + SCM_ASSERT_TYPE(d, delta, SCM_ARG1, __FUNCTION__, "pitch") ; + + Pitch tp =*t; + tp.transpose (*d); + return tp.smobbed_copy (); } -static SCM -pitch_transpose (SCM p, SCM delta) +SCM +Pitch::transpose (SCM p, SCM d) { - return Pitch::transpose (p, delta); + return pitch_transpose (p,d); } /****************************************************************/ @@ -248,8 +256,6 @@ Pitch::mark_smob (SCM) } IMPLEMENT_SIMPLE_SMOBS (Pitch); - - int Pitch::print_smob (SCM s, SCM port, scm_print_state *) { @@ -291,10 +297,13 @@ Pitch::less_p (SCM p1, SCM p2) /* should add optional args */ - static SCM make_pitch (SCM o, SCM n, SCM a) { + SCM_ASSERT_TYPE(gh_number_p(o), o, SCM_ARG1, __FUNCTION__, "number"); + SCM_ASSERT_TYPE(gh_number_p(n), n, SCM_ARG2, __FUNCTION__, "number"); + SCM_ASSERT_TYPE(gh_number_p(a), a, SCM_ARG3, __FUNCTION__, "number"); + Pitch p (gh_scm2int (o), gh_scm2int (n), gh_scm2int (a)); return p.smobbed_copy (); } @@ -303,11 +312,8 @@ static SCM pitch_octave (SCM pp) { Pitch *p = unsmob_pitch (pp); - int q = 0; - if (!p) - warning ("Not a pitch"); - else - q = p->octave_i (); + SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch"); + int q = p->octave_i (); return gh_int2scm (q); } @@ -316,11 +322,8 @@ static SCM pitch_alteration (SCM pp) { Pitch *p = unsmob_pitch (pp); - int q = 0; - if (!p) - warning ("Not a pitch"); - else - q = p->alteration_i (); + SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch"); + int q = p->alteration_i (); return gh_int2scm (q); } @@ -329,11 +332,8 @@ static SCM pitch_notename (SCM pp) { Pitch *p = unsmob_pitch (pp); - int q = 0; - if (!p) - warning ("Not a pitch"); - else - q = p->notename_i (); + SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch"); + int q = p->notename_i (); return gh_int2scm (q); } @@ -342,11 +342,9 @@ static SCM pitch_semitones (SCM pp) { Pitch *p = unsmob_pitch (pp); - int q = 0; - if (!p) - warning ("Not a pitch"); - else - q = p->steps (); + SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch"); + + int q = p->steps (); return gh_int2scm (q); } @@ -356,7 +354,6 @@ add_funcs () { // should take list?: (make-pitch ' (octave name accidental)) scm_c_define_gsubr ("make-pitch", 3, 0, 0, (Scheme_function_unknown)make_pitch); - scm_c_define_gsubr ("pitch-octave", 1, 0, 0, (Scheme_function_unknown)pitch_octave); scm_c_define_gsubr ("pitch-notename", 1, 0, 0, (Scheme_function_unknown)pitch_notename); scm_c_define_gsubr ("pitch-alteration", 1, 0, 0, (Scheme_function_unknown)pitch_alteration); diff --git a/lily/request.cc b/lily/request.cc index 810936918a..aefeb1f7a0 100644 --- a/lily/request.cc +++ b/lily/request.cc @@ -43,7 +43,7 @@ Script_req::get_direction () const { SCM d = get_mus_property ("direction"); - return (isdir_b (d)) ? to_dir (d) : CENTER; + return (ly_dir_p (d)) ? to_dir (d) : CENTER; } Direction @@ -51,7 +51,7 @@ Span_req::get_span_dir () const { SCM d = get_mus_property ("span-direction"); - return (isdir_b (d)) ? to_dir (d) : CENTER; + return (ly_dir_p (d)) ? to_dir (d) : CENTER; } void diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 3ef8142b94..0466630e3a 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -78,13 +78,13 @@ Script_engraver::process_music () art = ly_cdr (art); SCM force_dir = l->get_mus_property ("direction"); - if (isdir_b (force_dir) && !to_dir (force_dir)) + if (ly_dir_p (force_dir) && !to_dir (force_dir)) force_dir = ly_car (art); art = ly_cdr (art); SCM priority = ly_car (art); - if (isdir_b (force_dir) && to_dir (force_dir)) + if (ly_dir_p (force_dir) && to_dir (force_dir)) p->set_grob_property ("direction", force_dir); else if (to_dir (relative_stem_dir)) p->set_grob_property ("side-relative-direction", relative_stem_dir); diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 2e83ee183c..9acf165858 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -28,12 +28,12 @@ Direction Side_position_interface::get_direction (Grob*me) { SCM d = me->get_grob_property ("direction"); - if (isdir_b (d) && to_dir (d)) + if (ly_dir_p (d) && to_dir (d)) return to_dir (d); Direction relative_dir = Direction (1); SCM reldir = me->get_grob_property ("side-relative-direction"); // should use a lambda. - if (isdir_b (reldir)) + if (ly_dir_p (reldir)) { relative_dir = to_dir (reldir); } diff --git a/lily/text-item.cc b/lily/text-item.cc index 802eeefc9b..b165e86711 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -125,7 +125,7 @@ Text_item::markup_text2molecule (Grob *me, SCM markup_text, Axis axis = X_AXIS; SCM a = ly_assoc_chain (ly_symbol2scm ("axis"), p); - if (gh_pair_p (a) && isaxis_b (ly_cdr (a))) + if (gh_pair_p (a) && ly_axis_p (ly_cdr (a))) axis = (Axis)gh_scm2int (ly_cdr (a)); Real baseline_skip = 0; diff --git a/lily/translator-group.cc b/lily/translator-group.cc index fe46960c4e..2938b2b7cd 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -414,25 +414,21 @@ ly_get_trans_property (SCM context, SCM name) { Translator *t = unsmob_translator (context); Translator_group* tr= dynamic_cast (t); - if (!t || !tr) - { - /* programming_error? */ - warning (_ ("ly-get-trans-property: expecting a Translator_group argument")); - return SCM_EOL; - } + SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Translator group"); + SCM_ASSERT_TYPE(gh_symbol_p(name), name, SCM_ARG2, __FUNCTION__, "symbol"); + return tr->internal_get_property (name); } SCM ly_set_trans_property (SCM context, SCM name, SCM val) { - Translator *t = unsmob_translator (context); Translator_group* tr= dynamic_cast (t); - if (tr) - { - tr->internal_set_property (name, val); - } + + SCM_ASSERT_TYPE(tr, context, SCM_ARG1, __FUNCTION__, "Translator group"); + tr->internal_set_property (name, val); + return SCM_UNSPECIFIED; } diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index b93ff670d6..dc74135a3c 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -271,7 +271,7 @@ Tuplet_bracket::get_default_dir (Grob*me) { Direction d = UP; SCM dir_sym =me->get_grob_property ("dir-forced"); - if (isdir_b (dir_sym)) + if (ly_dir_p (dir_sym)) { d= to_dir (dir_sym); if (d != CENTER) diff --git a/make/lilypond-vars.make b/make/lilypond-vars.make index 09ce0f1518..9891207728 100644 --- a/make/lilypond-vars.make +++ b/make/lilypond-vars.make @@ -40,7 +40,7 @@ ABC2LY = $(script-dir)/abc2ly.py CONVERT_LY = $(script-dir)/convert-ly.py LILYPOND = $(depth)/$(builddir)/lily/$(outconfbase)/lilypond LILYPOND_BOOK = $(script-dir)/lilypond-book.py -LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(outdir) -I$(input-dir) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ -I $(input-dir)/tutorial/ +LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(outdir) -I$(input-dir) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ -I $(input-dir)/tutorial/ -I $(topdir)/mf/out LY2DVI = $(script-dir)/ly2dvi.py LYS_TO_TELY = $(buildscript-dir)/lys-to-tely.py PS_TO_GIFS = $(buildscript-dir)/ps-to-gifs.sh diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index fbbe7c17dc..4023ae3f97 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.5.35 -Entered-date: 28FEB02 +Version: 1.5.36 +Entered-date: 02MRT02 Description: @BLURB@ Keywords: music notation typesetting midi fonts engraving 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.5.35.tar.gz + 1000k lilypond-1.5.36.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.5.35.tar.gz + 1000k lilypond-1.5.36.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.mandrake.spec b/make/out/lilypond.mandrake.spec index 10c3901eb9..fb7b5b9d58 100644 --- a/make/out/lilypond.mandrake.spec +++ b/make/out/lilypond.mandrake.spec @@ -1,5 +1,5 @@ %define name lilypond -%define version 1.5.35 +%define version 1.5.36 %define release 1mdk Name: %{name} diff --git a/make/out/lilypond.redhat.spec b/make/out/lilypond.redhat.spec index fa24695e85..f749a9ef00 100644 --- a/make/out/lilypond.redhat.spec +++ b/make/out/lilypond.redhat.spec @@ -3,11 +3,11 @@ %define info yes Name: lilypond -Version: 1.5.35 +Version: 1.5.36 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.35.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.36.tar.gz Summary: Create and print music notation URL: http://www.lilypond.org/ BuildRoot: /tmp/lilypond-install diff --git a/make/out/lilypond.suse.spec b/make/out/lilypond.suse.spec index f1c0e7425d..ae96685caa 100644 --- a/make/out/lilypond.suse.spec +++ b/make/out/lilypond.suse.spec @@ -14,11 +14,11 @@ Distribution: SuSE Linux 7.0 (i386) Name: lilypond -Version: 1.5.35 +Version: 1.5.36 Release: 2 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.35.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.36.tar.gz # music notation software for.. ? Summary: A program for printing sheet music. URL: http://www.lilypond.org/ diff --git a/mf/GNUmakefile b/mf/GNUmakefile index ee62663cfa..15d24e76b2 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -8,7 +8,7 @@ include $(depth)/make/stepmake.make AF_FILES = $(wildcard *.af) -EXTRA_DIST_FILES += README feta.tex lilypond.map +EXTRA_DIST_FILES += README feta.tex # don't try to make fonts from test files TEST_FILES = $(wildcard *test*.mf) @@ -57,7 +57,7 @@ ifdef MAKE_PFA_FILES PFA_FILES = $(addprefix $(outdir)/, $(FONT_FILES:.mf=.pfa)) ALL_GEN_FILES += $(PFA_FILES) INSTALLATION_OUT_DIR4=$(datadir)/pfa -INSTALLATION_OUT_FILES4=$(PFA_FILES) lilypond.map +INSTALLATION_OUT_FILES4=$(PFA_FILES) pfa: $(PFA_FILES) endif @@ -66,10 +66,13 @@ export MFINPUTS:=.:$(MFINPUTS) default: $(ALL_GEN_FILES) +$(outdir)/lilypond.map: + echo $(FONT_FILES:.mf=) | awk -v RS=' ' '{print $$1 " TeX-" $$1 " <" $$1 ".pfa"}' > $@ + ## ## todo: this also depends on .tfm, FIXME. $(outdir)/%.afm $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log - $(PYTHON) $(buildscript-dir)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(