CVSROOT: /cvsroot/lilypond Module name: lilypond Branch: Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/10/16 12:36:43
Modified files: lily : grob-property.cc grob-scheme.cc script-engraver.cc lily/include : grob.hh Log message: * lily/grob-scheme.cc (LY_DEFINE): new function ly:grob-set-callback! * lily/grob-property.cc (set_callback): new function. * lily/script-engraver.cc (make_script_from_event): don't trigger callback. * lily/grob-property.cc (try_callback): remove marker if applicable. * lily/include/grob.hh: remove Grob_status. * lily/grob-property.cc (get_property_data): new function: (try_callback): new function. CVSWeb URLs: http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob-property.cc.diff?tr1=1.36&tr2=1.37&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob-scheme.cc.diff?tr1=1.54&tr2=1.55&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/script-engraver.cc.diff?tr1=1.131&tr2=1.132&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/grob.hh.diff?tr1=1.67&tr2=1.68&r1=text&r2=text Patches: Index: lilypond/lily/grob-property.cc diff -u lilypond/lily/grob-property.cc:1.36 lilypond/lily/grob-property.cc:1.37 --- lilypond/lily/grob-property.cc:1.36 Sun Oct 16 11:36:37 2005 +++ lilypond/lily/grob-property.cc Sun Oct 16 12:36:42 2005 @@ -223,6 +223,21 @@ object_alist_ = scm_assq_set_x (object_alist_, s, v); } +void +Grob::set_callback (SCM s, SCM v) +{ + /* Perhaps we simply do the assq_set, but what the heck. */ + if (!is_live ()) + return; + + /* + property_callbacks_ is r/o in principle, so we tack it in front. + */ + property_callbacks_ = scm_acons (s,v, property_callbacks_); +} + + + SCM Grob::internal_get_object (SCM sym) const { Index: lilypond/lily/grob-scheme.cc diff -u lilypond/lily/grob-scheme.cc:1.54 lilypond/lily/grob-scheme.cc:1.55 --- lilypond/lily/grob-scheme.cc:1.54 Sun Oct 16 12:29:40 2005 +++ lilypond/lily/grob-scheme.cc Sun Oct 16 12:36:43 2005 @@ -15,6 +15,20 @@ #include "system.hh" #include "font-interface.hh" + +LY_DEFINE (ly_grob_set_callback_x, "ly:grob-set-callback!", + 3, 0, 0, (SCM grob, SCM sym, SCM proc), + "Set @var{sym} in grob @var{grob} to value @var{proc}") +{ + Grob *sc = unsmob_grob (grob); + SCM_ASSERT_TYPE (sc, grob, SCM_ARG1, __FUNCTION__, "grob"); + SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); + SCM_ASSERT_TYPE (ly_is_procedure (val), val, SCM_ARG3, __FUNCTION__, "procedure"); + + sc->set_callback (sym, val); + return SCM_UNSPECIFIED; +} + LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!", 3, 0, 0, (SCM grob, SCM sym, SCM val), "Set @var{sym} in grob @var{grob} to value @var{val}") Index: lilypond/lily/include/grob.hh diff -u lilypond/lily/include/grob.hh:1.67 lilypond/lily/include/grob.hh:1.68 --- lilypond/lily/include/grob.hh:1.67 Sun Oct 16 11:36:37 2005 +++ lilypond/lily/include/grob.hh Sun Oct 16 12:36:43 2005 @@ -119,6 +119,7 @@ Grob *common_refpoint (Grob const *s, Axis a) const; // duh. slim down interface here. (todo) + void set_callback (SCM sym, SCM proc); bool has_offset_callback (SCM callback, Axis) const; void add_offset_callback (SCM callback, Axis); bool has_extent_callback (SCM, Axis) const; Index: lilypond/lily/script-engraver.cc diff -u lilypond/lily/script-engraver.cc:1.131 lilypond/lily/script-engraver.cc:1.132 --- lilypond/lily/script-engraver.cc:1.131 Sun Oct 16 12:29:40 2005 +++ lilypond/lily/script-engraver.cc Sun Oct 16 12:36:43 2005 @@ -211,8 +211,8 @@ swapped around horizontally. As the note head to put it on is not known now, postpone this - decision to Script_interface::before_line_breaking (). */ - + decision to Script_interface::calc_direction (). */ + */ for (int i = 0; i < scripts_.size (); i++) { Grob *e = scripts_[i].script_; _______________________________________________ Lilypond-cvs mailing list Lilypond-cvs@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-cvs