From: fred Date: Wed, 27 Mar 2002 02:06:18 +0000 (+0000) Subject: lilypond-1.5.36 X-Git-Tag: release/1.5.59~289 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f8bb93157d16b4c42ef1b0ac7a9d39ae81f83471;p=lilypond.git lilypond-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/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/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/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/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/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/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/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)