X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstencil-scheme.cc;h=de39fca5c340ca19e20cfaf14a41e9b4a0d12761;hb=5c14a087ca6cbd665fd631452b7b1283ba0387c3;hp=32625330d43c9bd98d7da72dbacf7f4ebb5bb66f;hpb=40b08aca291b101bcab28ce68088935a0ad07fe2;p=lilypond.git diff --git a/lily/stencil-scheme.cc b/lily/stencil-scheme.cc index 32625330d4..de39fca5c3 100644 --- a/lily/stencil-scheme.cc +++ b/lily/stencil-scheme.cc @@ -276,8 +276,8 @@ LY_DEFINE (ly_bracket, "ly:bracket", { LY_ASSERT_TYPE (is_axis, a, 1); LY_ASSERT_TYPE (is_number_pair, iv, 2); - LY_ASSERT_TYPE (scm_is_number, t,3); - LY_ASSERT_TYPE (scm_is_number, p,4); + LY_ASSERT_TYPE (scm_is_number, t, 3); + LY_ASSERT_TYPE (scm_is_number, p, 4); return Lookup::bracket ((Axis)scm_to_int (a), ly_scm2interval (iv), scm_to_double (t), @@ -288,7 +288,8 @@ LY_DEFINE (ly_bracket, "ly:bracket", LY_DEFINE (ly_stencil_rotate, "ly:stencil-rotate", 4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y), "Return a stencil @var{stil} rotated @var{angle} degrees around" - " point (@var{x}, @var{y}).") + " the relative offset (@var{x}, @var{y}). E.g. an offset of" + " (-1, 1) will rotate the stencil around the left upper corner.") { Stencil *s = unsmob_stencil (stil); LY_ASSERT_SMOB (Stencil, stil, 1); @@ -305,6 +306,26 @@ LY_DEFINE (ly_stencil_rotate, "ly:stencil-rotate", return new_s; } +LY_DEFINE (ly_stencil_rotate_absolute, "ly:stencil-rotate-absolute", + 4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y), + "Return a stencil @var{stil} rotated @var{angle} degrees around" + " point (@var{x}, @var{y}), given in absolute coordinates.") +{ + Stencil *s = unsmob_stencil (stil); + LY_ASSERT_SMOB (Stencil, stil, 1); + LY_ASSERT_TYPE (scm_is_number, angle, 2); + LY_ASSERT_TYPE (scm_is_number, x, 3); + LY_ASSERT_TYPE (scm_is_number, y, 4); + Real a = scm_to_double (angle); + Real x_off = scm_to_double (x); + Real y_off = scm_to_double (y); + + SCM new_s = s->smobbed_copy (); + Stencil *q = unsmob_stencil (new_s); + q->rotate_degrees_absolute (a, Offset (x_off, y_off)); + return new_s; +} + LY_DEFINE (ly_round_filled_box, "ly:round-filled-box", 3, 0, 0, (SCM xext, SCM yext, SCM blot),