/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
void
interpret_stencil_expression (SCM expr,
- void (*func) (void *, SCM),
+ SCM (*func) (void *, SCM),
void *func_arg,
Offset o)
{
interpret_stencil_expression (scm_force (scm_cadr (expr)), func, func_arg, o);
return;
}
+ if (head == ly_symbol2scm ("transparent-stencil"))
+ return;
if (head == ly_symbol2scm ("footnote"))
return;
if (head == ly_symbol2scm ("translate-stencil"))
{
SCM grob = scm_cadr (expr);
- (*func) (func_arg, scm_list_3 (head,
- ly_quote_scm (ly_offset2scm (o)), grob));
+ SCM link =
+ (*func) (func_arg,
+ scm_list_3 (head, ly_quote_scm (ly_offset2scm (o)), grob));
interpret_stencil_expression (scm_caddr (expr), func, func_arg, o);
- (*func) (func_arg, scm_list_1 (ly_symbol2scm ("no-origin")));
+ if (scm_is_true (link))
+ (*func) (func_arg, scm_list_1 (ly_symbol2scm ("no-origin")));
return;
}
else if (head == ly_symbol2scm ("color"))
SCM fonts_;
};
-static void
+static SCM
find_font_function (void *fs, SCM x)
{
Font_list *me = (Font_list *) fs;
me->fonts_ = scm_cons (scm_cadr (what), me->fonts_);
}
}
+ return SCM_BOOL_T;
}
SCM