diff options
author | Han-Wen Nienhuys <hanwen@xs4all.nl> | 2005-07-16 12:23:33 +0000 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@xs4all.nl> | 2005-07-16 12:23:33 +0000 |
commit | e6caaa132f59006e5c47d0007b24bfedd07ad145 (patch) | |
tree | 03f0a133060b58c4c8cabbf0eef16e999718d919 /lily/slur.cc | |
parent | 2ea45e18f92b208067f7a88bdca481e00e93a504 (diff) |
* lily/system.cc (do_derived_mark): don't mark from object_alist_
anymore, but do it centrally. Speedup: approximately 3-5 %.
* ly/engraver-init.ly (AncientRemoveEmptyStaffContext): remove
hammer hack.
* lily/grob-scheme.cc (LY_DEFINE): new function ly:grob-object
* scm/output-lib.scm: remove hammer-print-function.
* lily/include/pointer-group-interface.hh (extract_grob_set): new
macro. Declare a Link_array<Grob> and fill it from a grob.
(extract_item_set): idem for item.
* lily/break-substitution.cc: add header.
(fast_substitute_grob_array): rewrite for Grob_arrays.
(substitute_grob_array): idem.
* lily/group-interface.cc (add_thing): remove file.
* flower/include/parray.hh (class Link_array): slice() is const.
* lily/include/grob-array.hh: new file.
* lily/grob-array.cc (spanner): new file.
* lily/beam-quanting.cc (fill): read details property from beam.
* lily/beam.cc: support details property.
* lily/include/beam.hh: new struct, softcode beam quanting parameters
* lily/include/grob.hh (class Grob): add interfaces_ member.
* lily/bezier.cc (init_polynomial_cache): new function: cache
binom(3,j) t^j (1-t)^{3-j}
(curve_point): opps, actually use the cache for t^j , (1-t)^j!
* lily/grob-property.cc (internal_get_object): new routine.
(internal_set_object): idem. Store grob refrences in separate
alist. This saves processing time, since properties aren't
break-substituted, and the per grob namespace is smaller, both for
grobs and non-grob properties.
* scm/define-grob-properties.scm (all-internal-grob-properties):
remove center-element.
* lily/grob.cc: remove tweak-count, tweak-rank.
Diffstat (limited to 'lily/slur.cc')
-rw-r--r-- | lily/slur.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lily/slur.cc b/lily/slur.cc index dac80152cf..d218a54d19 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -15,7 +15,7 @@ #include "bezier.hh" #include "directional-element-interface.hh" #include "font-interface.hh" -#include "group-interface.hh" +#include "pointer-group-interface.hh" #include "lookup.hh" #include "main.hh" // DEBUG_SLUR_SCORING #include "note-column.hh" @@ -51,7 +51,8 @@ SCM Slur::print (SCM smob) { Grob *me = unsmob_grob (smob); - if (!scm_ilength (me->get_property ("note-columns"))) + extract_grob_set (me, "note-columns", encompasses); + if (encompasses.is_empty ()) { me->suicide (); return SCM_EOL; @@ -131,7 +132,7 @@ Slur::outside_slur_callback (SCM grob, SCM axis) (void) a; assert (a == Y_AXIS); - Grob *slur = unsmob_grob (script->get_property ("slur")); + Grob *slur = unsmob_grob (script->get_object ("slur")); if (!slur) return scm_from_int (0); @@ -198,8 +199,7 @@ Slur::outside_slur_callback (SCM grob, SCM axis) static Direction get_default_dir (Grob *me) { - Link_array<Grob> encompasses - = extract_grob_array (me, ly_symbol2scm ("note-columns")); + extract_grob_set (me, "note-columns", encompasses); Direction d = DOWN; for (int i = 0; i < encompasses.size (); i++) @@ -218,7 +218,8 @@ SCM Slur::after_line_breaking (SCM smob) { Spanner *me = dynamic_cast<Spanner *> (unsmob_grob (smob)); - if (!scm_ilength (me->get_property ("note-columns"))) + extract_grob_set (me, "note-columns", encompasses); + if (encompasses.is_empty ()) { me->suicide (); return SCM_UNSPECIFIED; |