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
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs