lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Getting an override into a markup function


From: Simon Albrecht
Subject: Re: Getting an override into a markup function
Date: Sat, 26 Sep 2015 00:42:51 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

On 25.09.2015 23:10, Thomas Morley wrote:
2015-09-25 12:28 GMT+02:00 Malte Meyn <address@hidden>:

Am 25.09.2015 um 10:58 schrieb Urs Liska:
{
    \override TextScript.self-alignment-X = #LEFT
    c'2 ^\markup \rotate #90 "This is a long markup" c
}

You could use an event function:

%%%%%
\version "2.19.27"

verticalText =
#(define-event-function (text) (markup?)
    #{
      -\tweak TextScript.self-alignment-X #LEFT
      -\markup \rotate #90 #text
    #})

{
   c'2^\verticalText \markup \italic "This is a long markup" c
   c'2\verticalText "This is a long text" c
}
%%%%%


Using \override or \tweak or an event-function will not work for
markups at toplevel and/or if not the entire markup is rotated, see:

\markup {
     "ab"
     \rotate #90 "------|------"
     "xy"
}


Hence I wrote 'my-rotate':


#(define-markup-command (my-rotate layout props ang arg)
   (number? markup?)
   (let* ((stil (interpret-markup layout props arg))
          (stil-x-length (interval-length (ly:stencil-extent stil X)))
          (stil-y-length (interval-length (ly:stencil-extent stil Y))))
     (ly:stencil-rotate stil ang (/ stil-y-length -2) (/ stil-x-length -2))))

I also wrote a markup function for this (several hours ago, then I forgot to actually send it hereā€¦). This is just a modification of the original \rotate definition from the code base, adding another argument to specify the reference point used by ly:stencil-rotate. Choose your favouriteā€¦

Yours, Simon

Attachment: rotate-by-anchor.ly
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]