X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstencil-interpret.cc;h=9b9ed4d6a383d940d6d6d893cd1f49df211f3f98;hb=66f7048060d9e7c3f273ddfcdd850d522957d6d6;hp=efe5c905375975b61ea6d35b38dcb14aa82fdd4e;hpb=2c22efe5a46a37065b10c3f51c5d7db00d07d318;p=lilypond.git diff --git a/lily/stencil-interpret.cc b/lily/stencil-interpret.cc index efe5c90537..9b9ed4d6a3 100644 --- a/lily/stencil-interpret.cc +++ b/lily/stencil-interpret.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys + (c) 2005--2009 Han-Wen Nienhuys */ #include "stencil.hh" @@ -21,6 +21,11 @@ interpret_stencil_expression (SCM expr, SCM head = scm_car (expr); + if (head == ly_symbol2scm ("delay-stencil-evaluation")) + { + interpret_stencil_expression (scm_force (scm_cadr (expr)), func, func_arg, o); + return; + } if (head == ly_symbol2scm ("translate-stencil")) { o += ly_scm2offset (scm_cadr (expr)); @@ -54,6 +59,22 @@ interpret_stencil_expression (SCM expr, interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); (*func) (func_arg, scm_list_1 (ly_symbol2scm ("resetcolor"))); + return; + } + else if (head == ly_symbol2scm ("rotate-stencil")) + { + SCM args = scm_cadr (expr); + SCM angle = scm_car (args); + Offset tmp = o + robust_scm2offset (scm_cadr (args), Offset (0.0, 0.0)); + + SCM offset = ly_offset2scm (tmp); + SCM x = scm_car (offset); + SCM y = scm_cdr (offset); + + (*func) (func_arg, scm_list_4 (ly_symbol2scm ("setrotation"), angle, x, y)); + interpret_stencil_expression (scm_caddr (expr), func, func_arg, o); + (*func) (func_arg, scm_list_4 (ly_symbol2scm ("resetrotation"), angle, x, y)); + return; } else