X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftext-metrics.cc;h=93495258538838c5f5abf8bf44bde6f06db6eb2c;hb=7eec42b50cda1f53fa25414abf07280c01f7753e;hp=919401f61f2280f86db535aba4b783a2b6e6da48;hpb=dc688499ee135312d6157e603a26c2407201eee3;p=lilypond.git diff --git a/lily/text-metrics.cc b/lily/text-metrics.cc index 919401f61f..9349525853 100644 --- a/lily/text-metrics.cc +++ b/lily/text-metrics.cc @@ -3,27 +3,26 @@ source file of the GNU LilyPond music typesetter - (c) 2004 Han-Wen Nienhuys + (c) 2004--2005 Han-Wen Nienhuys */ #include "dimensions.hh" #include "font-metric.hh" #include "main.hh" +#include "file-path.hh" static SCM text_dimension_hash_tab; - Box -lookup_tex_text_dimension (Font_metric *font, - SCM text) +lookup_tex_text_dimension (Font_metric *font, SCM text) { Box b; 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) { @@ -38,23 +37,21 @@ lookup_tex_text_dimension (Font_metric *font, 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_make_hash_table (scm_from_int (113))); + text_dimension_hash_tab + = scm_gc_protect_object (scm_c_make_hash_table (113)); } for (SCM s = dimension_alist; @@ -63,12 +60,10 @@ 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; @@ -77,11 +72,11 @@ LY_DEFINE(ly_load_text_dimensions, "ly:load-text-dimensions", void try_load_text_metrics (String basename) { - String path = global_path.find_file (basename + ".textmetrics"); + String path = global_path.find (basename + ".textmetrics"); if (path != "") { - String contents (gulp_file_to_string (path)); - contents = "(quote (" + contents + "))"; + String contents (gulp_file_to_string (path, true, -1)); + contents = "(quote (" + contents + "))"; SCM lst = scm_c_eval_string (contents.to_str0 ()); ly_load_text_dimensions (lst);