X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftext-metrics.cc;h=05b17fdfccca442235b7c6b335bcead786dac60f;hb=ee4bc843ba15ebbedd8578cbb8e5e477925c413f;hp=b11b7876b002ef18ec35226db3b7f1a4a7499b43;hpb=fce447b68f92a29ba4a94f45fb134c15b90ae121;p=lilypond.git diff --git a/lily/text-metrics.cc b/lily/text-metrics.cc index b11b7876b0..05b17fdfcc 100644 --- a/lily/text-metrics.cc +++ b/lily/text-metrics.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2004 Han-Wen Nienhuys + (c) 2004--2007 Han-Wen Nienhuys */ #include "dimensions.hh" @@ -18,16 +18,20 @@ lookup_tex_text_dimension (Font_metric *font, SCM text) { Box b; + /* + Actually, it's defined in framework-texstr, but let's see how long + it takes before we get a bugreport. HWN 13/2/2006. + */ SCM limit = ly_lily_module_constant ("TEX_STRING_HASHLIMIT"); - String key_str = ly_scm2string (font->font_file_name()); + string key_str = ly_scm2string (font->font_file_name ()); int hash_code = scm_to_int (scm_hash (text, limit)); - key_str = to_string (hash_code) + key_str; - + key_str = to_string (hash_code) + key_str; + SCM val = SCM_BOOL_F; if (text_dimension_hash_tab) { scm_hash_ref (text_dimension_hash_tab, - scm_makfrom0str (key_str.to_str0 ()), + ly_string2scm (key_str), SCM_BOOL_F); } if (scm_is_pair (val)) @@ -37,21 +41,21 @@ lookup_tex_text_dimension (Font_metric *font, SCM text) val = scm_cdr (val); b[Y_AXIS][UP] = scm_to_double (scm_car (val)) * point_constant; val = scm_cdr (val); - b[Y_AXIS][DOWN] = scm_to_double (scm_car (val)) * point_constant; + b[Y_AXIS][DOWN] = scm_to_double (scm_car (val)) * point_constant; } - - return b; + + return b; } -LY_DEFINE(ly_load_text_dimensions, "ly:load-text-dimensions", - 1, 0, 0, - (SCM dimension_alist), - "Load dimensions from TeX in a (KEY . (W H D)) format alist") +LY_DEFINE (ly_load_text_dimensions, "ly:load-text-dimensions", + 1, 0, 0, + (SCM dimension_alist), + "Load dimensions from TeX in a (KEY . (W H D)) format alist") { if (!text_dimension_hash_tab) { - text_dimension_hash_tab = - scm_gc_protect_object (scm_c_make_hash_table (113)); + text_dimension_hash_tab + = scm_gc_protect_object (scm_c_make_hash_table (113)); } for (SCM s = dimension_alist; @@ -60,27 +64,25 @@ LY_DEFINE(ly_load_text_dimensions, "ly:load-text-dimensions", { SCM key = scm_caar (s); SCM val = scm_cdar (s); - + if (scm_hash_ref (text_dimension_hash_tab, key, SCM_BOOL_F) == SCM_BOOL_F) - { - scm_hash_set_x (text_dimension_hash_tab, key, val); - } + scm_hash_set_x (text_dimension_hash_tab, key, val); } return SCM_UNSPECIFIED; } void -try_load_text_metrics (String basename) +try_load_text_metrics (string basename) { - String path = global_path.find (basename + ".textmetrics"); + string path = global_path.find (basename + ".textmetrics"); if (path != "") { - String contents (gulp_file_to_string (path, true)); - contents = "(quote (" + contents + "))"; + string contents (gulp_file_to_string (path, true, -1)); + contents = "(quote (" + contents + "))"; - SCM lst = scm_c_eval_string (contents.to_str0 ()); + SCM lst = scm_c_eval_string (contents.c_str ()); ly_load_text_dimensions (lst); } }