X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fsnippets%2Fdefining-an-engraver-in-scheme--ambitus-engraver.ly;h=f6f6672e2ce669a8085db006695cb9eb27338252;hb=90e4d7057f3857da049dfda3d130017d4719bd6b;hp=dfa5ee8e23e203eb98047aa556270010d2553f6e;hpb=c833f8a341b81466e084ed031362eadeb4a815aa;p=lilypond.git diff --git a/Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly b/Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly index dfa5ee8e23..f6f6672e2c 100644 --- a/Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly +++ b/Documentation/snippets/defining-an-engraver-in-scheme--ambitus-engraver.ly @@ -4,25 +4,23 @@ % and then run scripts/auxiliar/makelsr.py % % This file is in the public domain. -%% Note: this file works from version 2.15.31 -\version "2.15.31" +%% Note: this file works from version 2.19.28 +\version "2.19.28" \header { - lsrtags = "contexts-and-engravers" + texidoc = " +This example demonstrates how the ambitus engraver may be defined on +the user side, with a Scheme engraver. - texidoc = "This example demonstrates how the ambitus engraver may be - defined on the user side, with a Scheme engraver. +This is basically a rewrite in Scheme of the code from +@code{lily/ambitus-engraver.cc}. - This is basically a rewrite in Scheme of the code from - @file{lily/ambitus-engraver.cc}. " - doctitle = "Defining an engraver in Scheme: ambitus engraver" } % begin verbatim - #(use-modules (oop goops)) %%% @@ -48,8 +46,6 @@ grob. Rewrite of @code{Accidental_placement::add_accidental} from @file{lily/accidental-placement.cc}." (let ((pitch (ly:accidental-placement::accidental-pitch accidental-grob))) (set! (ly:grob-parent accidental-grob X) grob) - (set! (ly:grob-property accidental-grob 'X-offset) - ly:grob::x-parent-positioning) (let* ((accidentals (ly:grob-object grob 'accidental-grobs)) (handle (assq (ly:pitch-notename pitch) accidentals)) (entry (if handle (cdr handle) '()))) @@ -184,7 +180,7 @@ position of middle C and key signature from @var{translator}'s context." 0)) (set! (ambitus-start-key-sig ambitus) (ly:context-property (ly:translator-context translator) - 'keySignature))))) + 'keyAlterations))))) #(define-method (update-ambitus-notes (ambitus ) note-grob) "Update the upper and lower ambitus pithes of @var{ambitus}, using @@ -297,23 +293,23 @@ position of middle C and key signature from @var{translator}'s context." (let ((ambitus #f)) ;; when music is processed: make the ambitus object, if not already built (make-engraver - ((process-music translator) - (if (not ambitus) - (set! ambitus (make-ambitus translator)))) - ;; set the ambitus clef and key signature state - ((stop-translation-timestep translator) - (if ambitus - (initialize-ambitus-state ambitus translator))) - ;; when a note-head grob is built, update the ambitus notes - (acknowledgers + ((process-music translator) + (if (not ambitus) + (set! ambitus (make-ambitus translator)))) + ;; set the ambitus clef and key signature state + ((stop-translation-timestep translator) + (if ambitus + (initialize-ambitus-state ambitus translator))) + ;; when a note-head grob is built, update the ambitus notes + (acknowledgers ((note-head-interface engraver grob source-engraver) - (if ambitus - (update-ambitus-notes ambitus grob)))) - ;; finally, typeset the ambitus according to its upper and lower notes - ;; (if any). - ((finalize translator) - (if ambitus - (typeset-ambitus ambitus translator))))))) + (if ambitus + (update-ambitus-notes ambitus grob)))) + ;; finally, typeset the ambitus according to its upper and lower notes + ;; (if any). + ((finalize translator) + (if ambitus + (typeset-ambitus ambitus translator))))))) %%% %%% Example