[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Getting an override into a markup function
From: |
Thomas Morley |
Subject: |
Re: Getting an override into a markup function |
Date: |
Sat, 26 Sep 2015 01:34:08 +0200 |
2015-09-26 0:42 GMT+02:00 Simon Albrecht <address@hidden>:
> 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
Actually, my proposal could be regarded as a special case of yours :)
Best,
Harm