Hi,

On Mon, Apr 27, 2015 at 9:44 AM, Urs Liska <u...@openlilylib.org> wrote:

>
>
> Am 27.04.2015 um 16:27 schrieb Noeck:
>
>> Dear all, dear Urs,
>>
>> I would like to color tweaks of a particular edition of the edition
>> engraver. I know that there is a checkbox in Frescobaldi to color, so it
>> seems possible to color tweaked grobs in general.
>>
>
> No, I don't think this is possible, although I would really like to have
> that feature (to immediately make visible what is "original" and what is
> "manual").
>
> What we have in Frescobaldi depends on what we can "catch" by either
> listening through engravers or by redefining command. So far I haven't
> found a notion of a grob knowing if it has been tweaked or not.
>

Here's a code snippet to show that it is possible to tell if a grob has
been altered.  Right now you have to add the procedure for each grob you
want to examine.

\version "2.19.17"

#(define (mark-tweak grob)
   (let* ((default (assoc-get (grob::name grob) all-grob-descriptions))
          (props (ly:grob-basic-properties grob))
          ;; Our procedure has been added to the head of grob's basic
          ;; properties.  Let's not count it as a tweak!
          (props
           (remove
            (lambda (p)
              (and (procedure? (cdr p))
                   (eq? (procedure-name (cdr p)) 'mark-tweak)))
            props))
          (diff (lset-difference eq? props default)))
     ;; Tweaks will not appear in the "basic properties" alist of our grob,
but
     ;; we can find them through the music event which led to the grob.
This
     ;; is (currently) available through the stream-event which caused our
grob.
     (if (null? diff)
         (let* ((cause (event-cause grob))
                (tweaks (and cause
                             (ly:music-property
                              (ly:event-property cause 'music-cause)
                              'tweaks))))
           (if (pair? tweaks)
               (set! (ly:grob-property grob 'color) red)))
         (set! (ly:grob-property grob 'color) green))))

{
  \override NoteHead.after-line-breaking = #mark-tweak
  c'
  \once \override NoteHead.font-size = 3
  c'
  c'
  \tweak font-size 3 c'
  c'
  \override Slur.after-line-breaking = #mark-tweak
  c'( e')
  \shape #'((0 . 0) (0 . -0.5) (0 . -0.5) (0 . 0)) Slur
  c'( e')
}

%%%

Hope this is helpful.
David
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to