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

Reply via email to