source file of the GNU LilyPond music typesetter
- (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 2004--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#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;
+ /*
+ 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))
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 @code{(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;
{
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_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 ());
+ SCM lst = scm_c_eval_string (contents.c_str ());
ly_load_text_dimensions (lst);
}
}