summaryrefslogtreecommitdiff
path: root/lily/slur.cc
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@xs4all.nl>2005-07-16 12:23:33 +0000
committerHan-Wen Nienhuys <hanwen@xs4all.nl>2005-07-16 12:23:33 +0000
commite6caaa132f59006e5c47d0007b24bfedd07ad145 (patch)
tree03f0a133060b58c4c8cabbf0eef16e999718d919 /lily/slur.cc
parent2ea45e18f92b208067f7a88bdca481e00e93a504 (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.cc13
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;