From 93e2ec1bf20105c8be1b3e92f303d59f4f477753 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 27 Apr 2005 09:12:33 +0000 Subject: [PATCH] * lily/lily-guile.cc (ly_chain_assoc): remove. * lily/general-scheme.cc (LY_DEFINE): export ly:chain_assoc_get (LY_DEFINE): recurse, iso. calling ly_chain_assoc. --- ChangeLog | 9 +++++++++ lily/all-font-metrics.cc | 3 ++- lily/beaming-info.cc | 5 ++--- lily/font-select.cc | 21 ++++++++------------- lily/general-scheme.cc | 17 +++++++++++++++++ lily/lily-guile.cc | 28 ---------------------------- lily/main.cc | 8 ++++++++ lily/pango-select.cc | 6 +++--- scm/define-grobs.scm | 3 +++ 9 files changed, 52 insertions(+), 48 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2c06cc170a..4aa8275020 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ +2005-04-27 Han-Wen Nienhuys + + * lily/lily-guile.cc (ly_chain_assoc): remove. + + * lily/general-scheme.cc (LY_DEFINE): export ly:chain_assoc_get + (LY_DEFINE): recurse, iso. calling ly_chain_assoc. + 2005-04-26 Han-Wen Nienhuys + * lily/beaming-info.cc: remove infinity_i + * scripts/abc2ly.py (out_filename): fix thinko with \version. 2005-04-26 Graham Percival diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index 9ccc1f78ed..1273a3ae59 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -74,7 +74,8 @@ All_font_metrics::find_pango_font (PangoFontDescription *description, SCM val; if (!pango_dict_->try_retrieve (key, &val)) { - progress_indication ("[" + String (pango_fn)); + if (be_verbose_global) + progress_indication ("[" + String (pango_fn)); Pango_font *pf = new Pango_font (pango_ft2_fontmap_, RIGHT, diff --git a/lily/beaming-info.cc b/lily/beaming-info.cc index 78846cea7e..50b94a6fb9 100644 --- a/lily/beaming-info.cc +++ b/lily/beaming-info.cc @@ -22,13 +22,12 @@ Beaming_info::Beaming_info (Moment m, int i) beams_i_drul_[RIGHT] = i; } -const int infinity_i = INT_MAX; // guh. -const int at_beat = 1<<15; +const int at_beat = 1 << 15; int Beaming_info_list::best_splitpoint_index (Moment &beat_length, bool subdivide) const { - int minden = infinity_i; + int minden = INT_MAX; int minidx = -1; Moment beat_pos; diff --git a/lily/font-select.cc b/lily/font-select.cc index 9b5257c9c1..144c0dd010 100644 --- a/lily/font-select.cc +++ b/lily/font-select.cc @@ -102,15 +102,13 @@ properties_to_font_size_family (SCM fonts, SCM alist_chain) Font_metric * select_encoded_font (Output_def *layout, SCM chain) { - SCM name = ly_chain_assoc (ly_symbol2scm ("font-name"), chain); + SCM name = ly_chain_assoc_get (ly_symbol2scm ("font-name"), chain, SCM_BOOL_F); - if (!scm_is_pair (name) || !scm_is_string (scm_cdr (name))) + if (!scm_is_string (name)) { SCM fonts = layout->lookup_variable (ly_symbol2scm ("fonts")); name = properties_to_font_size_family (fonts, chain); } - else - name = scm_cdr (name); #if HAVE_PANGO_FT2 if (scm_is_string (name) @@ -122,10 +120,9 @@ select_encoded_font (Output_def *layout, SCM chain) #endif if (scm_is_string (name)) { - SCM mag = ly_chain_assoc (ly_symbol2scm ("font-magnification"), chain); - Real rmag = (scm_is_pair (mag) - ? robust_scm2double (scm_cdr (mag), 1.0) - : 1); + Real rmag = + robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-magnification"), chain, SCM_BOOL_F), + 1.0); Font_metric *fm = all_fonts_global->find_font (ly_scm2string (name)); return find_scaled_font (layout, fm, rmag); @@ -135,11 +132,9 @@ select_encoded_font (Output_def *layout, SCM chain) SCM base_size = scm_slot_ref (name, ly_symbol2scm ("default-size")); SCM vec = scm_slot_ref (name, ly_symbol2scm ("size-vector")); - SCM font_size = ly_chain_assoc (ly_symbol2scm ("font-size"), chain); - Real req = 0; - if (scm_is_pair (font_size)) - req = scm_to_double (scm_cdr (font_size)); - + Real req = robust_scm2double (ly_chain_assoc_get (ly_symbol2scm ("font-size"), chain, SCM_BOOL_F), + 0.0); + return get_font_by_mag_step (layout, req, vec, scm_to_double (base_size)); } diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc index 73609b7b7a..830cd6eaca 100644 --- a/lily/general-scheme.cc +++ b/lily/general-scheme.cc @@ -271,3 +271,20 @@ LY_DEFINE (ly_effective_prefix, "ly:effective-prefix", } + +LY_DEFINE (ly_chain_assoc_get, "ly:chain-assoc-get", + 2, 1, 0, (SCM key, SCM achain, SCM dfault), + "Return value for @var{key} from a list of alists @var{achain}. Return @var{dfault} " + "if no entry is found, or #f if not specified. ") +{ + if (scm_is_pair (achain)) + { + SCM handle = scm_assoc (key, scm_car (achain)); + if (scm_is_pair (handle)) + return scm_cdr (handle); + else + return ly_chain_assoc_get (key, scm_cdr (achain), dfault); + } + else + return dfault == SCM_UNDEFINED ? SCM_BOOL_F : dfault; +} diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index d4f16e9360..e485c86fec 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -325,35 +325,7 @@ ly_deep_copy (SCM src) return src; } -SCM -ly_chain_assoc_get (SCM key, SCM achain, SCM dfault) -{ - if (scm_is_pair (achain)) - { - SCM handle = scm_assoc (key, scm_car (achain)); - if (scm_is_pair (handle)) - return scm_cdr (handle); - else - return ly_chain_assoc (key, scm_cdr (achain)); - } - else - return dfault; -} -SCM -ly_chain_assoc (SCM key, SCM achain) -{ - if (scm_is_pair (achain)) - { - SCM handle = scm_assoc (key, scm_car (achain)); - if (scm_is_pair (handle)) - return handle; - else - return ly_chain_assoc (key, scm_cdr (achain)); - } - else - return SCM_BOOL_F; -} /* looks the key up in the cdrs of the alist-keys - ignoring the car and ignoring non-pair keys. diff --git a/lily/main.cc b/lily/main.cc index 252ebecf7f..dfc986ceb4 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -133,6 +133,10 @@ static Getopt_long *option_parser = 0; static Long_option_init options_static[] = { {_i ("BACK"), "backend", 'b', _i ("use backend BACK (gnome, ps [default],\n scm, svg, tex, texstr)")}, + + {_i ("SYM=VAL"), "define-default", 'd', + _i ("define a default Scheme setting.")}, + {_i ("EXPR"), "evaluate", 'e', _i ("set scheme option, for help use\n -e '(ly:option-usage)'")}, /* Bug in option parser: --output =foe is taken as an abbreviation for --output-format. */ @@ -473,6 +477,10 @@ parse_argv (int argc, char **argv) make_print = false; break; + case 'd': + + break; + case 'v': notice (); exit (0); diff --git a/lily/pango-select.cc b/lily/pango-select.cc index 708720486e..7ca70983ff 100644 --- a/lily/pango-select.cc +++ b/lily/pango-select.cc @@ -15,12 +15,12 @@ PangoFontDescription * properties_to_pango_description (SCM chain, Real text_size) { - SCM name = ly_chain_assoc (ly_symbol2scm ("font-name"), chain); + SCM name = ly_chain_assoc_get (ly_symbol2scm ("font-name"), chain, SCM_BOOL_F); PangoFontDescription *description = 0; - if (scm_is_pair (name) && scm_is_string (scm_cdr (name))) + if (scm_is_string (name)) { - String name_str = ly_scm2string (scm_cdr (name)); + String name_str = ly_scm2string (name); description = pango_font_description_from_string (name_str.to_str0 ()); } else diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 2df163e93f..4564baa595 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -508,6 +508,9 @@ . ( (print-function . ,Grid_line_interface::print) (X-extent-callback . ,Grid_line_interface::width_callback) + (self-alignment-X . ,CENTER) + (X-offset-callbacks . (,Self_alignment_interface::aligned_on_self + ,Self_alignment_interface::centered_on_parent)) (layer . 0) (meta . ((interfaces . (grid-line-interface))) ))) -- 2.39.2