From 4d3e71c83947524c5ca2ae569cda04a0a85377b9 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sun, 7 Nov 2004 20:05:37 +0000 Subject: [PATCH] * scm/define-context-properties.scm (Module): change definition of graceSettings * lily/context-property.cc (Module): rename from translator-property.cc * lily/context.cc (context_name_symbol): new function * scm/music-functions.scm (add-grace-property): use list iso. vector for graceSettings remove set-{start,stop}-grace-properties. --- ChangeLog | 15 +++++ ...slator-property.cc => context-property.cc} | 5 +- lily/context.cc | 14 +++-- lily/grace-music.cc | 4 -- lily/include/context.hh | 1 + lily/include/translation-property.hh | 63 ------------------- lily/stem-engraver.cc | 6 +- ly/engraver-init.ly | 3 +- ly/grace-init.ly | 12 ++-- scm/define-context-properties.scm | 2 +- scm/music-functions.scm | 24 +------ 11 files changed, 43 insertions(+), 106 deletions(-) rename lily/{translator-property.cc => context-property.cc} (98%) delete mode 100644 lily/include/translation-property.hh diff --git a/ChangeLog b/ChangeLog index dfc0e767fc..c534fec62c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ 2004-11-07 Han-Wen Nienhuys + * scm/define-context-properties.scm (Module): change definition of + graceSettings + + * lily/context-property.cc (Module): rename from + translator-property.cc + + * lily/context.cc (context_name_symbol): new function + + * lily/grace-engraver.cc: new file. Set properties for grobs based + on the grace-ness of now_moment(). + + * scm/music-functions.scm (add-grace-property): use list + iso. vector for graceSettings + remove set-{start,stop}-grace-properties. + * lily/new-quote-iterator.cc (construct_children): set quote_outlet_ if no quoted-context-{id,type} specified. diff --git a/lily/translator-property.cc b/lily/context-property.cc similarity index 98% rename from lily/translator-property.cc rename to lily/context-property.cc index c5c1c44333..4796980d9f 100644 --- a/lily/translator-property.cc +++ b/lily/context-property.cc @@ -1,7 +1,6 @@ /* - translator-property.cc -- implement manipulation of - - immutable Grob property lists. + translator-property.cc -- implement manipulation of immutable Grob + property lists. source file of the GNU LilyPond music typesetter diff --git a/lily/context.cc b/lily/context.cc index 3c75157e8e..75b378c8f3 100644 --- a/lily/context.cc +++ b/lily/context.cc @@ -324,19 +324,25 @@ Context::properties_as_alist () const return properties_dict ()->to_alist (); } -String -Context::context_name () const +SCM +Context::context_name_symbol () const { Context_def * td = unsmob_context_def (definition_ ); - return ly_symbol2string (td->get_context_name ()); + return td->get_context_name (); } +String +Context::context_name () const +{ + return ly_symbol2string (context_name_symbol ()); +} Score_context* Context::get_score_context () const { - if (Score_context *sc =dynamic_cast ((Context*)this)) + if (Score_context *sc =dynamic_cast ((Context*) this)) return sc; + else if (daddy_context_) return daddy_context_->get_score_context (); else diff --git a/lily/grace-music.cc b/lily/grace-music.cc index 39e396a2da..e34d1ff279 100644 --- a/lily/grace-music.cc +++ b/lily/grace-music.cc @@ -10,8 +10,6 @@ #include "grace-music.hh" #include "grace-iterator.hh" - - Moment Grace_music::get_length () const { @@ -19,7 +17,6 @@ Grace_music::get_length () const return m; } - Moment Grace_music::start_mom () const { @@ -35,5 +32,4 @@ Grace_music::Grace_music () Grace_iterator::constructor_proc); } - ADD_MUSIC (Grace_music); diff --git a/lily/include/context.hh b/lily/include/context.hh index 46d836e26d..c8a366a27d 100644 --- a/lily/include/context.hh +++ b/lily/include/context.hh @@ -59,6 +59,7 @@ public: Context *remove_context (Context *trans); void check_removal (); String context_name () const; + SCM context_name_symbol () const; Global_context *get_global_context () const; virtual Score_context * get_score_context () const; diff --git a/lily/include/translation-property.hh b/lily/include/translation-property.hh deleted file mode 100644 index aacb932b9d..0000000000 --- a/lily/include/translation-property.hh +++ /dev/null @@ -1,63 +0,0 @@ -#if 0 -/* - translation-property.hh -- declare Translation_property - - source file of the GNU LilyPond music typesetter - - (c) 1997--2004 Han-Wen Nienhuys -*/ - - -#ifndef TRANSLATION_PROPERTY_HH -#define TRANSLATION_PROPERTY_HH - -#include "music.hh" - - -/** - Set a property of Translator - - value -- the value to set - symbol -- the symbol to set. - -*/ -class Translation_property : public Music -{ -public: - Translation_property (); - VIRTUAL_COPY_CONS (Music); -}; - -/** - Push onto basic property list. - - symbols -- list of basic-property lists - - element-property -- element property name - - element-value -- element property value - - */ -class Push_translation_property : public Music -{ -public: - VIRTUAL_COPY_CONS (Music); -}; - -/** - Restore previous setting. - - symbols -- list of basic-property lists - - element-property -- element property name - */ -class Pop_translation_property : public Music -{ -public: - VIRTUAL_COPY_CONS (Music); -}; - - - -#endif // PROPERTY_HH -#endif diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index 710d993f96..c4d3d1f8b3 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -24,14 +24,16 @@ */ class Stem_engraver : public Engraver { - Grob *stem_; + Grob *stem_; Grob *tremolo_; Music *rhythmic_ev_; - Music* tremolo_ev_; + Music *tremolo_ev_; + TRANSLATOR_DECLARATIONS (Stem_engraver); protected: void make_stem (Grob_info); + virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep (); virtual bool try_music (Music *); diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 4c867fafde..c901b285e0 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -203,6 +203,7 @@ \consists "Slur_engraver" \consists "Tie_engraver" \consists "Tuplet_engraver" + \consists "Grace_engraver" \consists "Skip_event_swallow_translator" } @@ -533,7 +534,7 @@ AncientRemoveEmptyStaffContext = \context { %% bassFigureFormatFunction = #format-bass-figure metronomeMarkFormatter = #format-metronome-markup - graceSettings = #`#( + graceSettings = #`( (Voice Stem direction 1) ;; TODO: should take from existing definition. ;; c&p from define-grobs.scm diff --git a/ly/grace-init.ly b/ly/grace-init.ly index 4e13a5ea02..282e31e087 100644 --- a/ly/grace-init.ly +++ b/ly/grace-init.ly @@ -2,32 +2,32 @@ startGraceMusic = { - \context Voice \applycontext #set-start-grace-properties +% \context Voice \applycontext #set-start-grace-properties } stopGraceMusic = { - \context Voice \applycontext #set-stop-grace-properties +% \context Voice \applycontext #set-stop-grace-properties } startAppoggiaturaMusic = { - \context Voice \applycontext #set-start-grace-properties +% \context Voice \applycontext #set-start-grace-properties s1*0( } stopAppoggiaturaMusic = { - \context Voice \applycontext #set-stop-grace-properties +% \context Voice \applycontext #set-stop-grace-properties s1*0) } startAcciaccaturaMusic = { - \context Voice \applycontext #set-start-grace-properties +% \context Voice \applycontext #set-start-grace-properties s1*0( \override Stem #'stroke-style = #"grace" } stopAcciaccaturaMusic = { \revert Stem #'stroke-style - \context Voice \applycontext #set-stop-grace-properties +% \context Voice \applycontext #set-stop-grace-properties s1*0) } diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm index 8aedad8d88..247cf7932b 100644 --- a/scm/define-context-properties.scm +++ b/scm/define-context-properties.scm @@ -444,7 +444,7 @@ Valid values are described in @internalsref{bar-line-interface}. (melismaBusy ,boolean? "Signifies whether a melisma is active. This can be used to signal melismas on top of those automatically detected. ") - (graceSettings ,vector? + (graceSettings ,list? "Overrides for grace notes. This property should be manipulated through the @code{add-grace-property} function.") (currentCommandColumn ,ly:grob? "Grob that is X-parent to all diff --git a/scm/music-functions.scm b/scm/music-functions.scm index 4f4152a275..c402c23034 100644 --- a/scm/music-functions.scm +++ b/scm/music-functions.scm @@ -547,32 +547,12 @@ without context specification. Called from parser." (define (set-prop context) (let* ((where (ly:context-property-where-defined context 'graceSettings)) (current (ly:context-property where 'graceSettings)) - (new-settings (vector-extend current (list context-name grob sym val)))) + (new-settings (append current + (list (list context-name grob sym val))))) (ly:context-set-property! where 'graceSettings new-settings))) (ly:export (context-spec-music (make-apply-context set-prop) 'Voice))) -(define-public (set-start-grace-properties context) - (define (execute-1 x) - (let ((tr (ly:context-find context (car x)))) - (if (ly:context? tr) - (ly:context-pushpop-property tr (cadr x) (caddr x) (cadddr x))))) - - (let ((props (ly:context-property context 'graceSettings))) - (if (vector? props) - (vector-map execute-1 props)))) - -(define-public (set-stop-grace-properties context) - (define (execute-1 x) - (let ((tr (ly:context-find context (car x)))) - (if (ly:context? tr) - (ly:context-pushpop-property tr (cadr x) (caddr x))))) - - (let ((props (ly:context-property context 'graceSettings))) - (if (vector? props) - (vector-reverse-map execute-1 props)))) - - (defmacro-public def-grace-function (start stop) `(def-music-function (location music) (ly:music?) -- 2.39.2