X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fstencil-interpret.cc;h=734eb6080648ea4c7f496818c9a64994afb2bb08;hb=c4c2d414d41f8a83d777e3a61cb2f0e9f18c28bb;hp=8214af5dcc8e40a427dcd80212a0931a74bcef6f;hpb=e48715dc917b0e1c8382dc47e2b5e193d3184000;p=lilypond.git diff --git a/lily/stencil-interpret.cc b/lily/stencil-interpret.cc index 8214af5dcc..734eb60806 100644 --- a/lily/stencil-interpret.cc +++ b/lily/stencil-interpret.cc @@ -21,7 +21,7 @@ void interpret_stencil_expression (SCM expr, - void (*func) (void *, SCM), + SCM (*func) (void *, SCM), void *func_arg, Offset o) { @@ -37,6 +37,8 @@ interpret_stencil_expression (SCM expr, 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")) @@ -55,10 +57,12 @@ interpret_stencil_expression (SCM expr, { 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")) @@ -133,7 +137,7 @@ struct Font_list SCM fonts_; }; -static void +static SCM find_font_function (void *fs, SCM x) { Font_list *me = (Font_list *) fs; @@ -152,6 +156,7 @@ find_font_function (void *fs, SCM x) me->fonts_ = scm_cons (scm_cadr (what), me->fonts_); } } + return SCM_BOOL_T; } SCM