lilypond-user
[Top][All Lists]
Advanced

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

Re: translation-type? vs. backend-type?


From: Lukas-Fabian Moser
Subject: Re: translation-type? vs. backend-type?
Date: Sun, 8 Aug 2021 18:34:56 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

Hi,

sorry for the messed-up formatting. I try again:

This is probably a very stupid question.

During my work on updating blackmensural.ly I had to deal with custom grob and context properties. The original source for 2.12 did the following:

%% ===============================================
% declaring some custom properties
%% ===============================================

%% custom NoteHead property, for \override-able notehead style definitions
#(set-object-property! 'mensural_glyphs 'backend-type? list?)
#(set-object-property! 'mensural_glyphs 'backend-doc "current set of mensural display settings")

%% custom Voice context property, needed for ligature assembly
#(set-object-property! 'mensural_ligature_queue 'backend-type? list?)
#(set-object-property! 'mensural_ligature_queue 'backend-doc "current set of note grobs to be assembled into a ligature")
#(set-object-property! 'mensural_accidentals_queue 'backend-type? list?)
#(set-object-property! 'mensural_accidentals_queue 'backend-doc "current set of accidentals to be collected for a ligature")

%% custom entry in an event's 'tweak property
#(set-object-property! 'mensural_tags 'backend-type? list?)
#(set-object-property! 'mensural_tags 'backend-doc "various tags set in a notehead tweak to control mensural note display")

The actual code then accessed

a) mensural_glyphs with what amounts to \override NoteHead.mensural_glyphs = ... b) mensural_ligature_queue with (ly:context-property some-context 'mensural_ligature_queue) and (what amounts to) \set mensural_ligature_queue = ... c) mensural_tags with (ly:grob-property some-note 'mensural_tags) (and in a tweak).

Part b) failed with current LilyPond: "can't find property type-check for `instrument' (translation-type?)" (I'm not sure if a) and c) work or just were not being in an active code path).

Now, looking at scm/define-context-properties.scm and scm/define-grob-properties.scm that there seems to be a distinction:

- Context properties (\set'table) are defined via (set-object-property! symbol 'translation-type? type?) - Grob properties (\override'able) are defined via (set-object-property! symbol 'backend-type? type?)

Is this correct? And if so, when did this change between 2.12 and 2.22, seeing as the above code seems to have worked in 2011? It works fine in 2.22 if I define mensural_ligature_queue using 'translation-type?

Lukas




reply via email to

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