* input/mutopia/W.A.Mozart/mozart-hrn3-defs.ily (cresc): remove
space-function tweak.
+ * lily/grob.cc: remove X-extent-callback / Y-extent-callback.
+
+ * scm/define-grob-properties.scm (all-user-grob-properties):
+ remove callback property.
+
+ * lily/include/grob.hh (class Grob): remove property_callbacks_
+ member. Properties of procedure type are assumed to be callbacks.
+
+ * lily/ligature-engraver.cc (override_stencil_callback):
+ rewrite. Use noteHeadLigaturePrimitive as source.
+
+ * scm/define-grob-properties.scm (all-internal-grob-properties):
+ remove ligature-primitive-callback
+
+ * lily/include/dimension-cache.hh (class Dimension_cache): make
+ class, with Grob as friend.
+
+ * lily/grob.cc: remove set_extent_callback(), set_extent() and
+ has_extent_callback()
+
+ * scm/translation-functions.scm (format-new-bass-figure): read
+ figuredBassPlusDirection
+
+ * scm/define-context-properties.scm
+ (all-user-translation-properties): add figuredBassPlusDirection.
+
+ * lily/staff-spacing.cc (next_notes_correction): oops. Init wishes.
+
+ * lily/align-interface.cc (set_ordered): new function.
+
+ * lily/grob.cc (flush_extent_cache): rewrite.
+
+ * lily/dimension-cache.cc (Dimension_cache): cache extent as
+ Interval pointer directly.
+
+ * lily/main.cc (setup_paths): insert extra / .
+ (setup_paths): junk cff entry.
+
+ * lily/font-config.cc (init_fontconfig): only add type1 / otf
+ directories.
+
+ * lily/axis-group-engraver.cc (finalize): remove
+ extraVerticalExtent, minimumVerticalExtent verticalExtent.
+
+ * lily/grob.cc (Grob): don't set extent from ctor.
+ (extent): use property callbacks.
+
+ * lily/axis-group-interface.cc: remove set_axes() function.
+
+ * lily/grob-property.cc (del_property): new function.
+
+2005-10-21 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
* lily/font-config.cc (init_fontconfig): resurrect mf/out/ check.
2005-10-20 Jan Nieuwenhuizen <janneke@gnu.org>
cd $(top-build-dir) && ls *.html >> $(outdir)/weblist
cat $(outdir)/weblist | (cd $(top-build-dir); GZIP=-9v tar -czf $(outdir)/web.tar.gz -T -)
-share-prefix = $(top-build-dir)/share
-tree-prefix = $(top-build-dir)/share/lilypond/$(TOPLEVEL_VERSION)
+#share-prefix = $(top-build-dir)/share
+#tree-prefix = $(top-build-dir)/share/lilypond/$(TOPLEVEL_VERSION)
+share-prefix = $(outdir)/share
+tree-prefix = $(share-prefix)/lilypond/$(TOPLEVEL_VERSION)
src-ext = c cc yy ll hh icc py scm tex ps texi itexi tely itely sh
$(tree-prefix)/lilypond-force link-tree: GNUmakefile
# Preparing LilyPond tree for build-dir exec
- cd $(top-build-dir) && rm -rf lib share
- mkdir -p $(top-build-dir)/lib/$(package)
+ cd $(top-build-dir)/$(outbase) && rm -rf lib share
+ mkdir -p $(top-build-dir)/$(outbase)/lib/$(package)
mkdir -p $(tree-prefix)
mkdir -p $(tree-prefix)/dvips
mkdir -p $(tree-prefix)/elisp
mkdir -p $(tree-prefix)/fonts/map
mkdir -p $(tree-prefix)/fonts/enc
mkdir -p $(tree-prefix)/tex
- cd $(top-build-dir)/lib && \
+ cd $(top-build-dir)/$(outbase)/lib && \
ln -s ../../../python/$(outconfbase) python
cd $(tree-prefix) && \
ln -s $(top-src-dir)/ly ly && \
- ln -s ../../../mf mf && \
+ ln -s ../../../../mf mf && \
ln -s $(top-src-dir)/ps && \
ln -s ../../../python/$(outconfbase) python && \
ln -s $(top-src-dir)/scm && \
ln -s $(top-src-dir)/scripts scripts
cd $(tree-prefix)/dvips && \
- ln -s ./../../mf/$(outconfbase) mf-out && \
+ ln -s ./../../../mf/$(outconfbase) mf-out && \
ln -s $(top-src-dir)/ps
cd $(tree-prefix)/tex && \
ln -s $(top-src-dir)/tex source && \
- ln -s ../../../../tex/$(outconfbase) tex-out && \
- ln -s ../../../../mf/$(outconfbase) mf-out
+ ln -s ../../../../../tex/$(outconfbase) tex-out && \
+ ln -s ../../../../../mf/$(outconfbase) mf-out
-cd $(tree-prefix)/fonts/otf && \
- ln -s ../../../../../mf/$(outconfbase)/*.otf .
+ ln -s ../../../../../../mf/$(outconfbase)/*.otf .
-cd $(tree-prefix)/fonts/svg && \
- ln -s ../../../../../mf/$(outconfbase)/*.svg .
+ ln -s ../../../../../../mf/$(outconfbase)/*.svg .
-cd $(tree-prefix)/fonts/tfm && \
- ln -s ../../../../../mf/$(outconfbase)/*.tfm .
+ ln -s ../../../../../../mf/$(outconfbase)/*.tfm .
-cd $(tree-prefix)/fonts/type1 && \
- ln -s ../../../../../mf/$(outconfbase)/*.pfa .
+ ln -s ../../../../../../mf/$(outconfbase)/*.pfa .
cd $(tree-prefix)/fonts && \
ln -s $(top-src-dir)/mf source && \
true
-cd $(tree-prefix)/elisp && \
- ln -sf ../../../../../elisp/$(outconfbase)/lilypond-words.el . && \
+ ln -sf ../../../../../../elisp/$(outconfbase)/lilypond-words.el . && \
ln -s $(top-src-dir)/elisp/*.el .
$(foreach i,$(CATALOGS), \
mkdir -p $(share-prefix)/locale/$i/LC_MESSAGES && \
cd $(share-prefix)/locale/$i/LC_MESSAGES && \
- ln -sf ../../../../po/$(outconfbase)/$i.mo lilypond.mo &&) true
+ ln -sf ../../../../../po/$(outconfbase)/$i.mo lilypond.mo &&) true
# touch $@
touch $(tree-prefix)/lilypond-force
Interval width (left_extent[LEFT], right_extent[RIGHT]);
SCM scm_width = ly_interval2scm (width);
- me->set_extent (scm_width, X_AXIS);
+ me->flush_extent_cache (X_AXIS);
+ me->set_property ("X-extent", scm_width);
for (int i = apes.size (); i--;)
delete apes[i];
}
void
-Align_interface::set_axis (Grob *me, Axis a)
+Align_interface::set_ordered (Grob *me)
{
- Axis_group_interface::set_axes (me, a, a);
SCM ga_scm = me->get_object ("elements");
Grob_array *ga = unsmob_grob_array (ga_scm);
if (!ga)
We have to do a callback, because print () triggers a
vertical alignment if it is cross-staff.
*/
-MAKE_SCHEME_CALLBACK (Arpeggio, width_callback, 2);
+MAKE_SCHEME_CALLBACK (Arpeggio, width, 1);
SCM
-Arpeggio::width_callback (SCM smob, SCM axis)
+Arpeggio::width (SCM smob)
{
Grob *me = unsmob_grob (smob);
- (void) axis;
-
- assert (scm_to_int (axis) == X_AXIS);
Stencil arpeggio = Font_interface::get_default_font (me)->find_by_name ("scripts.arpeggio");
return ly_interval2scm (arpeggio.extent (X_AXIS));
ADD_INTERFACE (Arpeggio, "arpeggio-interface",
"Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads.",
- "stems arpeggio-direction");
+
+ /* properties */
+ "arpeggio-direction "
+ "stems "
+ );
void
Axis_group_engraver::finalize ()
{
- if (!staffline_)
- return;
-
- String type = context ()->context_name ();
- SCM dims = get_property ("verticalExtent");
-
- if (is_number_pair (dims))
- staffline_->set_extent (dims, Y_AXIS);
-
- dims = get_property ("minimumVerticalExtent");
- if (is_number_pair (dims))
- staffline_->set_property ("minimum-Y-extent", dims);
-
- dims = get_property ("extraVerticalExtent");
- if (is_number_pair (dims))
- staffline_->set_property ("extra-Y-extent", dims);
-
- Grob *it = unsmob_grob (get_property ("currentCommandColumn"));
-
- staffline_->set_bound (RIGHT, it);
-
- staffline_ = 0;
+ if (staffline_)
+ {
+ Grob *it = unsmob_grob (get_property ("currentCommandColumn"));
+ staffline_->set_bound (RIGHT, it);
+ }
}
void
staffline_ = 0;
break;
}
+#if 0
else if (elts_[i]->is_empty (Y_AXIS))
{
/*
elts_[i]->set_parent (staffline_, Y_AXIS);
}
else
+#endif
add_element (elts_[i]);
}
}
bool
Axis_group_interface::has_axis (Grob *me, Axis a)
{
- /*
- urg. FIXME, check for Hara_kiri_group_spanner shouldn't be necessary?
- */
- return me->has_extent_callback (group_extent_callback_proc, a)
- || (me->has_extent_callback (Hara_kiri_group_spanner::y_extent_proc, a));
+ SCM axes = me->get_property ("axes");
+
+ return (SCM_BOOL_F != scm_memq (scm_from_int (a), axes));
}
Interval
return r;
}
-MAKE_SCHEME_CALLBACK (Axis_group_interface, group_extent_callback, 2);
+MAKE_SCHEME_CALLBACK (Axis_group_interface, width, 1);
SCM
-Axis_group_interface::group_extent_callback (SCM element_smob, SCM scm_axis)
+Axis_group_interface::width (SCM smob)
{
- Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (scm_axis);
+ Grob *me = unsmob_grob (smob);
+ return generic_group_extent (me, X_AXIS);
+}
+MAKE_SCHEME_CALLBACK (Axis_group_interface, height, 1);
+SCM
+Axis_group_interface::height (SCM smob)
+{
+ Grob *me = unsmob_grob (smob);
+ return generic_group_extent (me, Y_AXIS);
+}
+
+SCM
+Axis_group_interface::generic_group_extent (Grob *me, Axis a)
+{
extract_grob_set (me, "elements", elts);
Grob *common = common_refpoint_of_array (elts, me, a);
return ly_interval2scm (r - my_coord);
}
-/*
- FIXME: junk this.
- */
-void
-Axis_group_interface::set_axes (Grob *me, Axis a1, Axis a2)
-{
- SCM sa1 = scm_from_int (a1);
- SCM sa2 = scm_from_int (a2);
-
- SCM axes = me->get_property ("axes");
-
- if (!scm_is_pair (axes)
- || scm_c_memq (sa1, axes) == SCM_BOOL_F
- || scm_c_memq (sa2, axes) == SCM_BOOL_F)
- {
- SCM ax = scm_cons (sa1, SCM_EOL);
- if (a1 != a2)
- ax = scm_cons (sa2, ax);
- me->set_property ("axes", ax);
- }
-
- if (a1 != X_AXIS && a2 != X_AXIS)
- me->set_extent (SCM_EOL, X_AXIS);
- if (a1 != Y_AXIS && a2 != Y_AXIS)
- me->set_extent (SCM_EOL, Y_AXIS);
-
- /*
- why so convoluted ? (fixme/documentme?)
- */
- if (me->has_extent_callback (Grob::stencil_extent_proc, a1))
- me->set_extent_callback (Axis_group_interface::group_extent_callback_proc, a1);
- if (me->has_extent_callback (Grob::stencil_extent_proc, a2))
- me->set_extent_callback (Axis_group_interface::group_extent_callback_proc, a2);
-}
-
void
Axis_group_interface::get_children (Grob *me, Link_array<Grob> *found)
{
}
ADD_INTERFACE (Axis_group_interface, "axis-group-interface",
+
"An object that groups other layout objects.",
- "axes elements");
+
+ /* properties */
+ "axes "
+ "elements");
{
Grob *me = unsmob_grob (smob);
- SCM cb = me->get_property ("balloon-original-callback");
- SCM stil = SCM_EOL;
-
- if (ly_is_procedure (cb))
- stil = scm_call_1 (cb, smob);
-
+ SCM stil = me->get_property ("original-stencil");
if (!unsmob_stencil (stil))
return stil;
ADD_INTERFACE (Balloon_interface, "text-balloon-interface",
"A collection of routines to put text balloons around an object.",
- "balloon-padding balloon-text-props balloon-text-offset balloon-text balloon-original-callback");
+
+ /* properties */
+ "balloon-padding "
+ "balloon-text-props "
+ "balloon-text-offset "
+ "balloon-text "
+ "original-stencil ");
"positions "
"quant-score "
"shorten "
+ "stems "
"thickness "
);
Dimension_cache::Dimension_cache (Dimension_cache const &d)
{
init ();
- dimension_ = d.dimension_;
- dimension_callback_ = d.dimension_callback_;
offset_ = d.offset_;
offset_callbacks_ = d.offset_callbacks_;
offsets_left_ = d.offsets_left_;
parent_ = d.parent_;
+ extent_ = d.extent_ ? new Interval (*d.extent_) : 0;
}
Dimension_cache::Dimension_cache ()
void
Dimension_cache::init ()
{
- dimension_ = SCM_EOL;
- dimension_callback_ = SCM_EOL;
-
offsets_left_ = 0;
offset_callbacks_ = SCM_EOL;
offset_ = 0.0;
-
+ extent_ = 0;
parent_ = 0;
}
+Dimension_cache::~Dimension_cache ()
+{
+ delete extent_;
+}
font_config_global = FcConfigGetCurrent ();
Array<String> dirs;
- String builddir = prefix_directory + "/mf/out/";
- struct stat statbuf;
- if (stat (builddir.to_str0 (), &statbuf) == 0)
- dirs.push (builddir.to_str0 ());
- else
- {
- /*
- ugh. C&P main.cc
- */
- dirs.push (prefix_directory + "/fonts/otf/");
- dirs.push (prefix_directory + "/fonts/type1/");
- dirs.push (prefix_directory + "/fonts/cff/");
- dirs.push (prefix_directory + "/fonts/svg/");
- }
+ dirs.push (prefix_directory + "/fonts/otf/");
+ dirs.push (prefix_directory + "/fonts/type1/");
+
for (int i = 0; i < dirs.size (); i++)
{
String dir = dirs[i];
return st.smobbed_copy ();
}
-MAKE_SCHEME_CALLBACK (Grid_line_interface, width_callback, 2);
+MAKE_SCHEME_CALLBACK (Grid_line_interface, width, 1);
SCM
-Grid_line_interface::width_callback (SCM element_smob, SCM scm_axis)
+Grid_line_interface::width (SCM element_smob)
{
Grob *me = unsmob_grob (element_smob);
- (void) scm_axis;
- assert (scm_to_int (scm_axis) == X_AXIS);
Real staffline = me->get_layout ()->get_dimension (ly_symbol2scm ("linethickness"));
Real thick = robust_scm2double (me->get_property ("thickness"), 1.0)
SCM
Grob::internal_get_property (SCM sym) const
{
-#ifndef NDEBUG
- if (profile_property_accesses)
- note_property_access (&grob_property_lookup_table, sym);
-#endif
-
- SCM handle = scm_sloppy_assq (sym, mutable_property_alist_);
- if (handle != SCM_BOOL_F)
- return scm_cdr (handle);
-
- handle = scm_sloppy_assq (sym, immutable_property_alist_);
-
- if (do_internal_type_checking_global && scm_is_pair (handle))
+ SCM val = get_property_data (sym);
+ if (ly_is_procedure (val))
{
- if (!type_check_assignment (sym, scm_cdr (handle),
- ly_symbol2scm ("backend-type?")))
- abort ();
-
- check_interfaces_for_property (this, sym);
+ val = ((Grob*)this)->try_callback (sym, val);
}
-
- if (handle == SCM_BOOL_F)
- {
- SCM value = ((Grob*) this)->try_callback (sym);
- if (value != SCM_UNSPECIFIED)
- return value;
- }
-
- return (handle == SCM_BOOL_F) ? SCM_EOL : scm_cdr (handle);
+ return val;
}
#ifndef NDEBUG
#endif
SCM
-Grob::try_callback (SCM sym)
+Grob::try_callback (SCM sym, SCM proc)
{
- SCM handle = scm_sloppy_assq (sym, property_callbacks_);
- if (scm_is_pair (handle))
- {
- SCM proc = scm_cdr (handle);
- if (ly_is_procedure (proc))
- {
- SCM marker = ly_symbol2scm ("calculation-in-progress");
- /*
- need to put a value in SYM to ensure that we don't get a
- cyclic call chain.
- */
- mutable_property_alist_
- = scm_assq_set_x (mutable_property_alist_, sym, marker);
+ SCM marker = ly_symbol2scm ("calculation-in-progress");
+ /*
+ need to put a value in SYM to ensure that we don't get a
+ cyclic call chain.
+ */
+ mutable_property_alist_
+ = scm_assq_set_x (mutable_property_alist_, sym, marker);
#ifndef NDEBUG
- if (debug_property_callbacks)
- grob_property_callback_stack = scm_acons (sym, proc, grob_property_callback_stack);
+ if (debug_property_callbacks)
+ grob_property_callback_stack = scm_acons (sym, proc, grob_property_callback_stack);
#endif
- SCM value = scm_call_1 (proc, self_scm ());
+ SCM value = scm_call_1 (proc, self_scm ());
#ifndef NDEBUG
- if (debug_property_callbacks)
- grob_property_callback_stack = scm_cdr (grob_property_callback_stack);
+ if (debug_property_callbacks)
+ grob_property_callback_stack = scm_cdr (grob_property_callback_stack);
#endif
- /*
- If the function returns SCM_UNSPECIFIED, we assume the
- property has been set with an explicit set_property()
- call.
- */
- if (value == SCM_UNSPECIFIED)
- {
- value = internal_get_property (sym);
- if (value == marker)
- mutable_property_alist_ = scm_assq_remove_x (mutable_property_alist_, marker);
- }
- else
- internal_set_property (sym, value);
-
- return value;
- }
- else
- programming_error ("Callback should be procedure type");
+ /*
+ If the function returns SCM_UNSPECIFIED, we assume the
+ property has been set with an explicit set_property()
+ call.
+ */
+ if (value == SCM_UNSPECIFIED)
+ {
+ value = internal_get_property (sym);
+ if (value == marker)
+ mutable_property_alist_ = scm_assq_remove_x (mutable_property_alist_, marker);
}
-
- return SCM_UNSPECIFIED;
+ else
+ internal_set_property (sym, value);
+
+ return value;
}
void
}
void
-Grob::set_callback (SCM s, SCM v)
+Grob::del_property (SCM sym)
{
- /* 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_);
+ mutable_property_alist_ = scm_assq_remove_x (mutable_property_alist_, sym);
}
-
-
SCM
Grob::internal_get_object (SCM sym) const
{
#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}")
+
+LY_DEFINE (ly_grob_property_data, "ly:grob-property-data",
+ 2, 0, 0, (SCM grob, SCM sym),
+ //, SCM dfault),
+ "Retrieve @var{sym} for @var{grob} but don't process callbacks.")
{
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 (proc), proc, SCM_ARG3, __FUNCTION__, "procedure");
+ // SCM_ASSERT_TYPE (ly_is_procedure (proc), proc, SCM_ARG3, __FUNCTION__, "procedure");
- sc->set_callback (sym, proc);
- return SCM_UNSPECIFIED;
+ return sc->get_property_data (sym);
}
LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!",
{
Grob *s = (Grob *) SCM_CELL_WORD_1 (ses);
scm_gc_mark (s->immutable_property_alist_);
- scm_gc_mark (s->property_callbacks_);
if (s->key_)
scm_gc_mark (s->key_->self_scm ());
for (int a = 0; a < 2; a++)
{
scm_gc_mark (s->dim_cache_[a].offset_callbacks_);
- scm_gc_mark (s->dim_cache_[a].dimension_);
- scm_gc_mark (s->dim_cache_[a].dimension_callback_);
/* Do not mark the parents. The pointers in the mutable
property list form two tree like structures (one for X
/* FIXME: default should be no callback. */
self_scm_ = SCM_EOL;
pscore_ = 0;
- status_ = 0;
original_ = 0;
interfaces_ = SCM_EOL;
immutable_property_alist_ = basicprops;
mutable_property_alist_ = SCM_EOL;
object_alist_ = SCM_EOL;
- property_callbacks_ = SCM_EOL;
/* We do smobify_self () as the first step. Since the object lives
on the heap, none of its SCM variables are protected from
SCM meta = get_property ("meta");
if (scm_is_pair (meta))
- interfaces_ = scm_cdr (scm_assoc (ly_symbol2scm ("interfaces"), meta));
+ interfaces_ = scm_cdr (scm_assq (ly_symbol2scm ("interfaces"), meta));
/* TODO:
creation. Convenient eg. when using \override with
StaffSymbol. */
- property_callbacks_ = get_property ("callbacks");
-
SCM off_callbacks[] = {
get_property ("X-offset-callbacks"),
get_property ("Y-offset-callbacks")
};
- SCM extents[] = {
- get_property ("X-extent"),
- get_property ("Y-extent")
- };
- SCM extent_callbacks[] = {
- get_property ("X-extent-callback"),
- get_property ("Y-extent-callback")
- };
for (int a = X_AXIS; a <= Y_AXIS; a++)
{
else
programming_error ("[XY]-offset-callbacks must be a list");
- SCM cb = extent_callbacks[a];
- if (cb == SCM_BOOL_F)
- dim_cache_[a].dimension_ = SCM_BOOL_F;
-
- SCM xt = extents[a];
- if (is_number_pair (xt))
- dim_cache_[a].dimension_ = xt;
- else if (ly_is_procedure (cb))
- dim_cache_[a].dimension_callback_ = cb;
- else if (cb == SCM_EOL
- && ly_is_procedure (ly_assoc_get (ly_symbol2scm ("stencil"),
- property_callbacks_, SCM_BOOL_F)))
- dim_cache_[a].dimension_callback_ = stencil_extent_proc;
}
+
+ if (get_property_data (ly_symbol2scm ("X-extent")) == SCM_EOL)
+ set_property ("X-extent", Grob::stencil_width_proc);
+ if (get_property_data (ly_symbol2scm ("Y-extent")) == SCM_EOL)
+ set_property ("Y-extent", Grob::stencil_height_proc);
}
Grob::Grob (Grob const &s, int copy_index)
immutable_property_alist_ = s.immutable_property_alist_;
mutable_property_alist_ = ly_deep_copy (s.mutable_property_alist_);
interfaces_ = s.interfaces_;
- property_callbacks_ = s.property_callbacks_;
object_alist_ = SCM_EOL;
pscore_ = 0;
{
}
-MAKE_SCHEME_CALLBACK (Grob, stencil_extent, 2);
+
+MAKE_SCHEME_CALLBACK (Grob, stencil_height, 1);
+SCM
+Grob::stencil_height (SCM element_smob)
+{
+ Grob *me = unsmob_grob (element_smob);
+ return stencil_extent (me, Y_AXIS);
+}
+
+MAKE_SCHEME_CALLBACK (Grob, stencil_width, 1);
SCM
-Grob::stencil_extent (SCM element_smob, SCM scm_axis)
+Grob::stencil_width (SCM element_smob)
{
- Grob *s = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (scm_axis);
+ Grob *me = unsmob_grob (element_smob);
+ return stencil_extent (me, X_AXIS);
+}
- Stencil *m = s->get_stencil ();
+SCM
+Grob::stencil_extent (Grob *me, Axis a)
+{
+ Stencil *m = me->get_stencil ();
Interval e;
if (m)
e = m->extent (a);
}
Interval
-robust_relative_extent (Grob *me, Grob *refp, Axis a)
+robust_relative_extent (Grob *me, Grob *refpoint, Axis a)
{
- Interval ext = me->extent (refp, a);
+ Interval ext = me->extent (refpoint, a);
if (ext.is_empty ())
- ext.add_point (me->relative_coordinate (refp, a));
+ ext.add_point (me->relative_coordinate (refpoint, a));
return ext;
}
mutable_property_alist_ = SCM_EOL;
object_alist_ = SCM_EOL;
- property_callbacks_ = SCM_EOL;
immutable_property_alist_ = SCM_EOL;
interfaces_ = SCM_EOL;
- set_extent (SCM_EOL, Y_AXIS);
- set_extent (SCM_EOL, X_AXIS);
-
- set_extent_callback (SCM_EOL, Y_AXIS);
- set_extent_callback (SCM_EOL, X_AXIS);
-
for (int a = X_AXIS; a <= Y_AXIS; a++)
{
dim_cache_[a].offset_callbacks_ = SCM_EOL;
return dim_cache_[a].offset_;
}
+#if 0
bool
Grob::is_empty (Axis a) const
{
return !(scm_is_pair (dim_cache_[a].dimension_)
|| ly_is_procedure (dim_cache_[a].dimension_callback_));
}
+#endif
void
Grob::flush_extent_cache (Axis axis)
{
- Dimension_cache *d = &dim_cache_[axis];
- if (ly_is_procedure (d->dimension_callback_)
- && scm_is_pair (d->dimension_))
+ if (dim_cache_[axis].extent_)
{
- d->dimension_ = SCM_EOL;
-
+ /*
+ Ugh, this is not accurate; will flush property, causing
+ callback to be called if.
+ */
+ del_property ((axis == X_AXIS) ? ly_symbol2scm ("X-extent") : ly_symbol2scm ("Y-extent"));
+ delete dim_cache_[axis].extent_;
+ dim_cache_[axis].extent_ = 0;
if (get_parent (axis))
get_parent (axis)->flush_extent_cache (axis);
}
}
+
Interval
Grob::extent (Grob *refp, Axis a) const
{
- Real x = relative_coordinate (refp, a);
-
- Dimension_cache *d = (Dimension_cache *) & dim_cache_[a];
- Interval ext;
-
- SCM dimpair = d->dimension_;
- if (scm_is_pair (dimpair))
- ;
- else if (ly_is_procedure (d->dimension_callback_)
- && d->dimension_ == SCM_EOL)
- d->dimension_ = scm_call_2 (d->dimension_callback_, self_scm (), scm_from_int (a));
- else
- return ext;
-
- if (!scm_is_pair (d->dimension_))
- return ext;
-
- ext = ly_scm2interval (d->dimension_);
-
- SCM extra = (a == X_AXIS)
- ? get_property ("extra-X-extent")
- : get_property ("extra-Y-extent");
-
- /* Signs ? */
- if (scm_is_pair (extra))
+ Real offset = relative_coordinate (refp, a);
+ Interval real_ext;
+ if (dim_cache_[a].extent_)
{
- ext[BIGGER] += scm_to_double (scm_cdr (extra));
- ext[SMALLER] += scm_to_double (scm_car (extra));
+ real_ext = *dim_cache_[a].extent_;
}
+ else
+ {
+ SCM min_ext_sym =
+ (a == X_AXIS)
+ ? ly_symbol2scm ("minimum-X-extent")
+ : ly_symbol2scm ("minimum-Y-extent");
+
+ SCM ext_sym =
+ (a == X_AXIS)
+ ? ly_symbol2scm ("X-extent")
+ : ly_symbol2scm ("Y-extent");
+
+ SCM min_ext = internal_get_property (min_ext_sym);
+ SCM ext = internal_get_property (ext_sym);
- extra = (a == X_AXIS)
- ? get_property ("minimum-X-extent")
- : get_property ("minimum-Y-extent");
-
- if (scm_is_pair (extra))
- ext.unite (Interval (scm_to_double (scm_car (extra)),
- scm_to_double (scm_cdr (extra))));
-
- ext.translate (x);
+ if (is_number_pair (min_ext))
+ real_ext.unite (ly_scm2interval (min_ext));
+ if (is_number_pair (ext))
+ real_ext.unite (ly_scm2interval (ext));
- return ext;
+ ((Grob*)this)->del_property (ext_sym);
+ ((Grob*)this)->dim_cache_[a].extent_ = new Interval (real_ext);
+ }
+
+ real_ext.translate (offset);
+
+ return real_ext;
}
/* Find the group-element which has both #this# and #s# */
Grob::name () const
{
SCM meta = get_property ("meta");
- SCM nm = scm_assoc (ly_symbol2scm ("name"), meta);
+ SCM nm = scm_assq (ly_symbol2scm ("name"), meta);
nm = (scm_is_pair (nm)) ? scm_cdr (nm) : SCM_EOL;
return scm_is_symbol (nm) ? ly_symbol2string (nm) : this->class_name ();
}
}
}
-bool
-Grob::has_extent_callback (SCM cb, Axis a) const
-{
- return scm_equal_p (cb, dim_cache_[a].dimension_callback_) == SCM_BOOL_T;
-}
-
bool
Grob::has_offset_callback (SCM cb, Axis a) const
{
return scm_c_memq (cb, dim_cache_[a].offset_callbacks_) != SCM_BOOL_F;
}
-void
-Grob::set_extent (SCM dc, Axis a)
-{
- dim_cache_[a].dimension_ = dc;
-}
-
-void
-Grob::set_extent_callback (SCM dc, Axis a)
-{
- dim_cache_[a].dimension_callback_ = dc;
-}
-
void
Grob::set_parent (Grob *g, Axis a)
{
/* properties */
"X-extent "
- "X-extent-callback "
"X-offset-callbacks "
"Y-extent "
- "Y-extent-callback "
"Y-offset-callbacks "
"after-line-breaking "
"axis-group-parent-X "
"axis-group-parent-Y "
"before-line-breaking "
- "callbacks "
"cause "
"color "
- "context "
"extra-X-extent "
"extra-Y-extent "
"extra-offset "
"springs-and-rods "
"staff-symbol "
"stencil "
- "transparent"
+ "transparent "
);
#include "warn.hh"
#include "item.hh"
-MAKE_SCHEME_CALLBACK (Hara_kiri_group_spanner, y_extent, 2);
+MAKE_SCHEME_CALLBACK (Hara_kiri_group_spanner, y_extent, 1);
SCM
-Hara_kiri_group_spanner::y_extent (SCM element_smob, SCM scm_axis)
+Hara_kiri_group_spanner::y_extent (SCM element_smob)
{
Grob *me = unsmob_grob (element_smob);
- (void) scm_axis;
-
- assert (scm_to_int (scm_axis) == Y_AXIS);
consider_suicide (me);
- return Axis_group_interface::group_extent_callback (me->self_scm (), scm_axis);
+ return Axis_group_interface::generic_group_extent (me, Y_AXIS);
}
void
DECLARE_SCHEME_CALLBACK (stretch_after_break, (SCM element));
static void align_to_fixed_distance (Grob *, Axis a);
static void align_elements_to_extents (Grob *, Axis a);
- static void set_axis (Grob *, Axis);
+ static void set_ordered (Grob *);
static Axis axis (Grob *);
static void add_element (Grob *, Grob *);
static int get_count (Grob *, Grob *);
public:
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (brew_chord_bracket, (SCM));
- DECLARE_SCHEME_CALLBACK (width_callback, (SCM, SCM));
+ DECLARE_SCHEME_CALLBACK (width, (SCM));
static bool has_interface (Grob *);
};
*/
struct Axis_group_interface
{
- DECLARE_SCHEME_CALLBACK (group_extent_callback, (SCM smob, SCM axis));
+ static SCM generic_group_extent (Grob *me, Axis a);
+ DECLARE_SCHEME_CALLBACK (width, (SCM smob));
+ DECLARE_SCHEME_CALLBACK (height, (SCM smob));
static Interval relative_group_extent (Link_array<Grob> const &list,
Grob *common, Axis);
/**
Adminstration of offset dimension info.
*/
-struct Dimension_cache
+class Dimension_cache
{
- /*
- Multi typed:
-
- - cons: interval
- - procedure: callback
- - else: empty
- */
- SCM dimension_;
- SCM dimension_callback_;
-
/**
The offset wrt. to the center of #parent_#
*/
-
+ Interval *extent_;
Real offset_;
SCM offset_callbacks_;
What to call to find extent. Nil means empty.
*/
Grob *parent_;
-
+ friend class Grob;
+
Dimension_cache (Dimension_cache const &);
+ ~Dimension_cache ();
Dimension_cache ();
void init ();
};
public:
static void add_grid_point (Grob *me, Grob *b);
DECLARE_SCHEME_CALLBACK (print, (SCM));
- DECLARE_SCHEME_CALLBACK (width_callback, (SCM, SCM));
+ DECLARE_SCHEME_CALLBACK (width, (SCM));
static bool has_interface (Grob *);
};
SCM immutable_property_alist_;
SCM mutable_property_alist_;
SCM object_alist_;
- SCM property_callbacks_;
/*
If this is a property, it accounts for 25% of the property
friend SCM ly_grob_basic_properties (SCM);
friend void check_interfaces_for_property (Grob const *, SCM);
void substitute_object_links (SCM, SCM);
- char status_;
DECLARE_CLASSNAME(Grob);
public:
Grob (Grob const &, int copy_count);
virtual Grob *clone (int count) const;
- DECLARE_SCHEME_CALLBACK (stencil_extent, (SCM smob, SCM axis));
+ static SCM stencil_extent (Grob*, Axis);
+ DECLARE_SCHEME_CALLBACK (stencil_height, (SCM smob));
+ DECLARE_SCHEME_CALLBACK (stencil_width, (SCM smob));
+
String name () const;
/*
SCM get_property_data (SCM symbol) const;
SCM internal_get_object (SCM symbol) const;
+ void del_property (SCM symbol);
void internal_set_property (SCM sym, SCM val);
void internal_set_object (SCM sym, SCM val);
- SCM try_callback (SCM);
+ SCM try_callback (SCM, SCM);
/*
JUNKME.
*/
void suicide ();
bool is_live () const;
- bool is_empty (Axis a) const;
bool internal_has_interface (SCM intf);
static bool has_interface (Grob *me);
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;
void flush_extent_cache (Axis);
- void set_extent (SCM, Axis);
- void set_extent_callback (SCM, Axis);
Real get_offset (Axis a) const;
void set_parent (Grob *e, Axis);
{
public:
DECLARE_SCHEME_CALLBACK (force_hara_kiri_callback, (SCM, SCM));
- DECLARE_SCHEME_CALLBACK (y_extent, (SCM smob, SCM axis));
+ DECLARE_SCHEME_CALLBACK (y_extent, (SCM smob));
DECLARE_SCHEME_CALLBACK (force_hara_kiri_in_parent_callback, (SCM, SCM));
static void add_element (Grob *me, Grob *e);
static bool has_interface (Grob *);
public:
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (brew_ez_stencil, (SCM));
- DECLARE_SCHEME_CALLBACK (extent, (SCM, SCM));
DECLARE_SCHEME_CALLBACK (stem_x_shift, (SCM, SCM));
DECLARE_SCHEME_CALLBACK (calc_stem_attachment, (SCM));
static bool has_interface (Grob *);
DECLARE_SCHEME_CALLBACK (y_offset_callback, (SCM, SCM));
static bool has_interface (Grob *);
static String glyph_name (Grob *, int, String, bool);
- static SCM brew_internal_stencil (SCM, bool);
+ static SCM brew_internal_stencil (Grob*, bool);
+ static SCM generic_extent_callback (Grob*, Axis);
DECLARE_SCHEME_CALLBACK (extent_callback, (SCM, SCM));
DECLARE_SCHEME_CALLBACK (polyphonic_offset_callback, (SCM, SCM));
DECLARE_SCHEME_CALLBACK (print, (SCM));
+ DECLARE_SCHEME_CALLBACK (width, (SCM));
+ DECLARE_SCHEME_CALLBACK (height, (SCM));
};
#endif // REST_HH
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM));
DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
- DECLARE_SCHEME_CALLBACK (height, (SCM, SCM));
+ DECLARE_SCHEME_CALLBACK (height, (SCM));
DECLARE_SCHEME_CALLBACK (outside_slur_callback, (SCM, SCM));
static bool has_interface (Grob *);
static Bezier get_curve (Grob *me);
static Interval get_spanned_interval (Grob *);
static void add_bar (Grob *, Grob *);
static void evaluate_glyph (Grob *);
- DECLARE_SCHEME_CALLBACK (width_callback, (SCM smob, SCM axis));
+ DECLARE_SCHEME_CALLBACK (width, (SCM smob));
DECLARE_SCHEME_CALLBACK (calc_bar_size, (SCM));
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (calc_glyph_name, (SCM));
static bool has_interface (Grob *);
DECLARE_SCHEME_CALLBACK (dim_callback, (SCM smob, SCM axis));
DECLARE_SCHEME_CALLBACK (print, (SCM));
- DECLARE_SCHEME_CALLBACK (height, (SCM, SCM));
+ DECLARE_SCHEME_CALLBACK (height, (SCM));
static Stencil raw_stencil (Grob *);
};
DECLARE_SCHEME_CALLBACK (calc_stem_end_position, (SCM));
DECLARE_SCHEME_CALLBACK (calc_stem_info, (SCM));
DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM));
- DECLARE_SCHEME_CALLBACK (width_callback, (SCM smob, SCM axis));
- DECLARE_SCHEME_CALLBACK (height, (SCM, SCM));
+ DECLARE_SCHEME_CALLBACK (width, (SCM smob));
+ DECLARE_SCHEME_CALLBACK (height, (SCM));
};
#endif
* .ly snippet:
*
* \property Voice.NoteHead \override #'print-function =
- * < value of #'ligature-primitive-callback of Voice.NoteHead >
+ * < value of noteHeadLigaturePrimitive
*
* TODO: What we are doing here on the c++ level, should actually be
* performed on the SCM level. However, I do not know how to teach
void
Ligature_engraver::override_stencil_callback ()
{
-#if 0
- /*
- This has been broken with the introduction of generic callbacks.
- */
- SCM target_callback = ly_symbol2scm ("print-function");
- SCM source_callback = ly_symbol2scm ("ligature-primitive-callback");
- SCM noteHeadProperties = updated_grob_properties (context (), ly_symbol2scm ("NoteHead"));
- SCM value = scm_cdr (scm_sloppy_assq (source_callback, noteHeadProperties));
execute_pushpop_property (context (), ly_symbol2scm ("NoteHead"),
- target_callback, value);
-
-#endif
+ ly_symbol2scm ("stencil"),
+ get_property ("noteHeadLigaturePrimitive"));
}
/*
void
Ligature_engraver::revert_stencil_callback ()
{
- SCM symbol = ly_symbol2scm ("NoteHead");
- SCM key = ly_symbol2scm ("print-function");
- execute_pushpop_property (context (), symbol, key, SCM_UNDEFINED);
+ execute_pushpop_property (context (), ly_symbol2scm ("NoteHead"),
+ ly_symbol2scm ("stencil"), SCM_UNDEFINED);
}
void
prev_start_event_ = events_drul_[START];
ligature_ = create_ligature_spanner ();
- brew_ligature_primitive_proc
- = ligature_->get_property ("ligature-primitive-callback");
- if (brew_ligature_primitive_proc == SCM_EOL)
- programming_error ("Ligature_engraver: ligature-primitive-callback undefined");
Grob *bound = unsmob_grob (get_property ("currentMusicalColumn"));
if (!bound)
primitives_.push (info);
if (info.grob ())
{
- info.grob ()->set_callback (ly_symbol2scm ("stencil"),
+ info.grob ()->set_property ("stencil",
brew_ligature_primitive_proc);
}
}
global_path.append ("");
- /* Adding mf/out make lilypond unchanged source directory, when setting
- LILYPONDPREFIX to lilypond-x.y.z */
- char *suffixes[] = {"ly", "ps", "scm", 0 };
-
- Array<String> dirs;
- for (char **s = suffixes; *s; s++)
- {
- String path = prefix_directory + to_string ('/') + String (*s);
- dirs.push (path);
- }
/*
When running from build dir, a full LILYPOND_PREFIX is set-up at
- share/lilypond/TOPLEVEL_VERSION
+ $(OUTBASE)/share/lilypond/TOPLEVEL_VERSION
This historical hack will allow the shorthand
- LILYPONDPREFIX=. lily/out/lilypond ...
+ LILYPONDPREFIX=out lily/out/lilypond ...
*/
+
struct stat statbuf;
- String build_prefix = prefix_directory + "share/lilypond/" TOPLEVEL_VERSION;
+ String build_prefix = prefix_directory + "/share/lilypond/" TOPLEVEL_VERSION;
if (stat (build_prefix.to_str0 (), &statbuf) == 0)
prefix_directory = build_prefix;
+
+ /* Adding mf/out make lilypond unchanged source directory, when setting
+ LILYPONDPREFIX to lilypond-x.y.z */
+ char *suffixes[] = {"ly", "ps", "scm", 0 };
+
+
+ Array<String> dirs;
+ for (char **s = suffixes; *s; s++)
+ {
+ String path = prefix_directory + to_string ('/') + String (*s);
+ dirs.push (path);
+ }
+
+
dirs.push (prefix_directory + "/fonts/otf/");
dirs.push (prefix_directory + "/fonts/type1/");
- dirs.push (prefix_directory + "/fonts/cff/");
dirs.push (prefix_directory + "/fonts/svg/");
-
+
for (int i = 0; i < dirs.size (); i++)
global_path.prepend (dirs[i]);
}
ADD_INTERFACE (Mensural_ligature, "mensural-ligature-interface",
"A mensural ligature",
"delta-pitch flexa-width head-width join-right-amount " // "add-join "
- "ligature-primitive-callback primitive thickness");
+ "primitive thickness");
Figure_group ()
{
+ figure_item_ = 0;
force_no_continuation_ = false;
continuation_line_ = 0;
number_ = SCM_EOL;
}
MAKE_SCHEME_CALLBACK (Rest, print, 1);
-
SCM
-Rest::brew_internal_stencil (SCM smob, bool ledgered)
+Rest::brew_internal_stencil (Grob *me, bool ledgered)
{
- Grob *me = unsmob_grob (smob);
-
SCM balltype_scm = me->get_property ("duration-log");
if (!scm_is_number (balltype_scm))
return Stencil ().smobbed_copy ();
SCM
Rest::print (SCM smob)
{
- return brew_internal_stencil (smob, true);
+ return brew_internal_stencil (unsmob_grob (smob), true);
}
-MAKE_SCHEME_CALLBACK (Rest, extent_callback, 2);
+MAKE_SCHEME_CALLBACK (Rest, width, 1);
/*
We need the callback. The real stencil has ledgers depending on
Y-position. The Y-position is known only after line breaking. */
SCM
-Rest::extent_callback (SCM smob, SCM ax)
+Rest::width (SCM smob)
{
- Axis a = (Axis) scm_to_int (ax);
+ return generic_extent_callback (unsmob_grob (smob), X_AXIS);
+}
+MAKE_SCHEME_CALLBACK (Rest, height, 1);
+SCM
+Rest::height (SCM smob)
+{
+ return generic_extent_callback (unsmob_grob (smob), Y_AXIS);
+}
+
+/*
+ We need the callback. The real stencil has ledgers depending on
+ Y-position. The Y-position is known only after line breaking. */
+SCM
+Rest::generic_extent_callback (Grob *me, Axis a)
+{
/*
Don't want ledgers: ledgers depend on Y position, which depends on
rest collision, which depends on stem size which depends on beam
consequence: we get too small extents and potential collisions
with ledgered rests.
*/
- SCM m = brew_internal_stencil (smob, a != X_AXIS);
+ SCM m = brew_internal_stencil (me, a != X_AXIS);
return ly_interval2scm (unsmob_stencil (m)->extent (a));
}
val = scm_from_int (prio);
}
- if (p->get_property_data (sym) == SCM_EOL)
+
+ SCM preset = p->get_property_data (sym);
+ if (scm_call_1 (type, preset) == SCM_BOOL_F)
p->internal_set_property (sym, val);
}
scripts_[i].script_ = p;
- SCM force_dir = music->get_property("direction");
+ SCM force_dir = music->get_property ("direction");
if (is_direction (force_dir) && to_dir (force_dir))
p->set_property ("direction", force_dir);
}
if (!it)
return;
if (it->get_parent (X_AXIS)
- && it->get_parent (X_AXIS)
- ->has_extent_callback (Axis_group_interface::group_extent_callback_proc, X_AXIS))
+ && Axis_group_interface::has_axis (it->get_parent (X_AXIS), X_AXIS))
return;
if (to_boolean (it->get_property ("no-spacing-rods")))
return scm_from_int (d);
}
-MAKE_SCHEME_CALLBACK (Slur, height, 2);
+MAKE_SCHEME_CALLBACK (Slur, height, 1);
SCM
-Slur::height (SCM smob, SCM ax)
+Slur::height (SCM smob)
{
- Axis a = (Axis)scm_to_int (ax);
Grob *me = unsmob_grob (smob);
- assert (a == Y_AXIS);
// FIXME uncached
Stencil *m = me->get_stencil ();
- return m ? ly_interval2scm (m->extent (a)) : ly_interval2scm (Interval ());
+ return m ? ly_interval2scm (m->extent (Y_AXIS)) : ly_interval2scm (Interval ());
}
/*
we can't kill the children, since we don't want to the
previous note to bump into the span arpeggio; so we make
it transparent. */
- arpeggios_[j]->set_callback (ly_symbol2scm ("stencil"), SCM_EOL);
+ arpeggios_[j]->set_property ("transparent", SCM_BOOL_T);
}
span_arpeggio_ = 0;
return span_bar.smobbed_copy ();
}
-MAKE_SCHEME_CALLBACK (Span_bar, width_callback, 2);
+MAKE_SCHEME_CALLBACK (Span_bar, width, 1);
SCM
-Span_bar::width_callback (SCM smob, SCM scm_axis)
+Span_bar::width (SCM smob)
{
Grob *me = unsmob_grob (smob);
- (void) scm_axis;
-
- assert ((Axis) scm_to_int (scm_axis) == X_AXIS);
SCM gn = me->get_property ("glyph-name");
if (!me->is_live ())
return ly_interval2scm (Interval ());
Interval
Span_bar::get_spanned_interval (Grob *me)
{
- return ly_scm2interval (Axis_group_interface::group_extent_callback
- (me->self_scm (), scm_from_int (Y_AXIS)));
+ return ly_scm2interval (Axis_group_interface::generic_group_extent (me, Y_AXIS));
}
MAKE_SCHEME_CALLBACK (Span_bar, calc_bar_size, 1);
*compound_fixed = 0.0;
*compound_space = 0.0;
- int wishes;
+ int wish_count = 0;
for (int i = right_items.size (); i--;)
{
*compound_space += space;
*compound_fixed += fixed;
- wishes ++;
+ wish_count ++;
extract_grob_set (g, "elements", elts);
for (int j = elts.size (); j--;)
next_note_correction (me, elts[j], bar_size, &space, &fixed);
*compound_fixed += fixed;
*compound_space += space;
- wishes ++;
+ wish_count ++;
}
}
- if (wishes)
+ if (wish_count)
{
- *compound_space /= wishes;
- *compound_fixed /= wishes;
+ *compound_space /= wish_count;
+ *compound_fixed /= wish_count;
}
}
"This object calculates spacing details from a "
" breakable symbol (left) to another object. For example, it takes care "
" of optical spacing from a bar lines to a note.",
- "stem-spacing-correction left-items right-items");
+
+ /* properties */
+ "stem-spacing-correction "
+ "left-items "
+ "right-items "
+ );
return ly_interval2scm (Interval (-space, space));
}
-MAKE_SCHEME_CALLBACK (Stem_tremolo, height, 2);
+MAKE_SCHEME_CALLBACK (Stem_tremolo, height, 1);
SCM
-Stem_tremolo::height (SCM smob, SCM ax)
+Stem_tremolo::height (SCM smob)
{
- Axis a = (Axis)scm_to_int (ax);
Grob *me = unsmob_grob (smob);
- assert (a == Y_AXIS);
-
/* TODO: fixme. uncached? */
return ly_interval2scm (me->get_stencil ()
- ? me->get_stencil ()->extent (a)
+ ? me->get_stencil ()->extent (Y_AXIS)
: Interval());
}
-MAKE_SCHEME_CALLBACK (Stem, height, 2);
+MAKE_SCHEME_CALLBACK (Stem, height, 1);
SCM
-Stem::height (SCM smob, SCM ax)
+Stem::height (SCM smob)
{
- Axis a = (Axis)scm_to_int (ax);
Grob *me = unsmob_grob (smob);
- assert (a == Y_AXIS);
Direction dir = get_grob_direction (me);
}
/* FIXME uncached? */
- Interval iv = me->get_stencil () ? me->get_stencil ()->extent (a) : Interval();
+ Interval iv = me->get_stencil () ? me->get_stencil ()->extent (Y_AXIS) : Interval();
if (beam)
{
if (dir == CENTER)
return flag;
}
-MAKE_SCHEME_CALLBACK (Stem, width_callback, 2);
+MAKE_SCHEME_CALLBACK (Stem, width, 1);
SCM
-Stem::width_callback (SCM e, SCM ax)
+Stem::width (SCM e)
{
- (void) ax;
- assert (scm_to_int (ax) == X_AXIS);
Grob *me = unsmob_grob (e);
Interval r;
ADD_INTERFACE (Vaticana_ligature, "vaticana-ligature-interface",
"A vaticana style gregorian ligature",
- "glyph-name flexa-height flexa-width thickness add-cauda "
- "add-stem add-join delta-pitch x-offset "
- "ligature-primitive-callback");
+
+ /* properties */
+ "glyph-name "
+ "flexa-height "
+ "flexa-width "
+ "thickness "
+ "add-cauda "
+ "add-stem "
+ "add-join "
+ "delta-pitch "
+ "x-offset "
+ );
{
valign_ = make_spanner ("VerticalAlignment", SCM_EOL);
valign_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
- Align_interface::set_axis (valign_, Y_AXIS);
+ Align_interface::set_ordered (valign_);
}
}
int sz = i.origin_contexts ((Translator *)this).size ();
return sz > 0 && Axis_group_interface::has_interface (i.grob ())
- && !i.grob ()->get_parent (Y_AXIS) && Axis_group_interface::has_axis (i.grob (), Y_AXIS);
+ && !i.grob ()->get_parent (Y_AXIS)
+ && Axis_group_interface::has_axis (i.grob (), Y_AXIS);
}
void
(figuredBassCenterContinuations ,boolean? "Whether to vertically center pairs of extender lines.")
+ (figuredBassPlusDirection ,ly:dir? "Where to put plus signs relative to the the main figure.")
+
(figuredBassAlterationDirection ,ly:dir? "Where to put
alterations relative to the main figure.")
(followVoice ,boolean? "If set, note heads are tracked across staff
where @var{name} is from 0.. 6 and
@var{alter} from -4 (double flat) to 4 (double sharp).
")
-
(majorSevenSymbol ,markup? "How should
the major 7th be formatted in a chord name?")
(markFormatter ,procedure? "Procedure
selects the highest string with a fret at least @code{minimumFret}")
(minimumVerticalExtent ,number-pair? "minimum vertical extent, same
format as @var{verticalExtent}")
+ (noteHeadLigaturePrimitive ,procedure? "Callback for generating stencil of ligature.")
(ottavation ,string? "If set, the text for an ottava spanner. Changing
this creates a new text spanner. ")
(pedalSustainStrings ,list? "List of string to print for
(apply define-grob-property x))
`(
- (X-extent-callback ,procedure? "Procedure that calculates the
-extent of this object. If this value is set to @code{#f}, the object
-is empty in the X direction. The procedure takes a grob and axis
-argument, and returns a number-pair.
-")
-
(X-offset-callbacks ,list? "A list of functions determining this
objects' position relative to its parent. The last one in the list is
called first. The functions take a grob and axis argument. ")
-
- (Y-extent-callback ,procedure? "see @code{X-extent-callback}.")
(Y-offset-callbacks ,list? "see @code{X-offset-callbacks}.")
(accidentals ,list? "List of alteration numbers")
(balloon-text-offset ,number-pair?
"Where to put text relative to balloon.")
(balloon-padding ,ly:dimension? "Text to add to help balloon")
- (balloon-original-callback ,procedure? "The
+ (original-stencil ,ly:stencil? "The
original stencil drawer to draw the balloon around.")
(cautionary-style ,symbol? "How to print cautionary
accidentals. Choices are @code{smaller} or
@code{parentheses}.")
- (callbacks ,list? "An alist of (@var{symbol} . @var{procedure})
-pairs. When the grob property @var{symbol} is requested,
-@var{procedure} is invoked. The return value, if it is unequal to
-@code{#<unspecified>} is recorded as the value of the property.")
(cautionary ,boolean? "Is this a cautionary accidental?")
(concaveness ,number? "A beam is concave when its inner stems are
closer to the beam than the two outside stems. This number is a
(color ,color? "The color of this grob.")
- (context ,ly:context? "Originating context of the grob")
-
;;DOCME
(control-points ,list? "List of 4 offsets (number-pairs) that form control points for the tie/slur shape.")
(least-squares-dy ,number?
"ideal beam slope, without damping.")
- (ligature-primitive-callback ,procedure? "callback that brews ligature head.")
(stem-info ,pair? "caching of stem parameters")
(note-columns ,pair? "list of NoteColumn grobs.")
. (
(avoid-slur . inside)
(cautionary-style . parentheses)
- (callbacks . ((stencil . ,Accidental_interface::print)
- (after-line-breaking
- . ,Accidental_interface::after_line_breaking)
- ))
+
+ (stencil . ,Accidental_interface::print)
+ (after-line-breaking
+ . ,Accidental_interface::after_line_breaking)
+
(meta . ((class . Item)
(interfaces . (accidental-interface
font-interface))))))
-
+
(AccidentalSuggestion
- . ((callbacks . ((stencil . ,Accidental_interface::print)))
+ . (
+
+ (stencil . ,Accidental_interface::print)
+
(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent
,Self_alignment_interface::aligned_on_self))
(self-alignment-X . ,CENTER)
self-alignment-interface
font-interface))))))
(AccidentalPlacement
- . ((X-extent-callback . ,Axis_group_interface::group_extent_callback)
+ . (
(left-padding . 0.2)
- (callbacks . ((positioning-done . ,Accidental_placement::calc_positioning_done)
- ))
+
+ (positioning-done . ,Accidental_placement::calc_positioning_done)
+ (X-extent . ,Axis_group_interface::width)
+
;; this is quite small, but it is very ugly to have
;; accs closer to the previous note than to the next one.
(right-padding . 0.15)
(Ambitus
. (
(axes . (0 1))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (X-extent . ,Axis_group_interface::width)
+ (X-extent . ,Axis_group_interface::height)
+
(space-alist . (
(clef . (extra-space . 0.5))
(key-signature . (extra-space . 0.0))
(AmbitusLine
. (
- (callbacks . ( (stencil . ,Ambitus::print)))
+
+ (stencil . ,Ambitus::print)
+
(join-heads . #t)
(thickness . 2)
(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
(X-offset-callbacks . (,Side_position_interface::aligned_side))
(direction . -1)
(cautionary-style . parentheses)
- (callbacks . ((stencil . ,Accidental_interface::print)
- (after-line-breaking . ,Accidental_interface::after_line_breaking)
- ))
+
+ (stencil . ,Accidental_interface::print)
+ (after-line-breaking . ,Accidental_interface::after_line_breaking)
+
(meta . ((class . Item)
(interfaces . (item-interface
accidental-interface
(AmbitusNoteHead
. (
(duration-log . 2)
- (callbacks . ((stencil . ,Note_head::print)
- (glyph-name . ,note-head::calc-glyph-name)
- ))
+
+ (stencil . ,Note_head::print)
+ (glyph-name . ,note-head::calc-glyph-name)
+
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(meta . ((class . Item)
(interfaces . (font-interface
(Arpeggio
. (
- (X-extent-callback . ,Arpeggio::width_callback)
- (callbacks . ( (stencil . ,Arpeggio::print)))
+
+ (X-extent . ,Arpeggio::width)
+ (stencil . ,Arpeggio::print)
+
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(X-offset-callbacks . (,Side_position_interface::aligned_side))
(direction . -1)
(layer . 0)
(break-visibility . ,all-visible)
(breakable . #t)
- (callbacks . ((stencil . ,Bar_line::print)
- (glyph-name . ,bar-line::calc-glyph-name)
- (bar-size . ,Bar_line::calc_bar_size)
- ))
+
+ (stencil . ,Bar_line::print)
+ (glyph-name . ,bar-line::calc-glyph-name)
+ (bar-size . ,Bar_line::calc_bar_size)
+
(space-alist . (
(time-signature . (extra-space . 0.75))
(custos . (minimum-space . 2.0))
(BarNumber
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+ ;
(breakable . #t)
(break-visibility . ,begin-of-line-visible)
(padding . 1.0)
(BassFigure
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(direction . 1)
(font-family . number)
(NewBassFigure
. (
- (callbacks . ( (stencil . ,Text_interface::print)))
+ ;
+ (stencil . ,Text_interface::print)
+
(meta . ((class . Item)
(interfaces . (text-interface
rhythmic-grob-interface
bass-figure-interface
font-interface))))))
(BassFigureBracket
- . ((callbacks . ((stencil . ,Enclosing_bracket::print)))
+ . (
+ ;
+ (stencil . ,Enclosing_bracket::print)
+
(edge-height . (0.2 . 0.2))
(meta . ((class . Item)
(interfaces . (enclosing-bracket-interface)) ))
))
(BassFigureContinuation
. (
- (callbacks . ( (stencil . ,Figured_bass_continuation::print)))
+
+ (stencil . ,Figured_bass_continuation::print)
+
(Y-offset-callbacks . (,Figured_bass_continuation::center_on_figures))
(meta . ((class . Spanner)
(interfaces . (figured-bass-continuation-interface))
(BassFigureLine
. (
(axes . (,Y))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (Y-extent . ,Axis_group_interface::height)
+
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
))))))
. (
(axes . (,Y))
(threshold . (2 . 1000))
- (callbacks . ((positioning-done . ,Align_interface::calc_positioning_done)
- ))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (positioning-done . ,Align_interface::calc_positioning_done)
+ (Y-extent . ,Axis_group_interface::height)
+
(stacking-dir . -1)
(meta . ((class . Spanner)
(interfaces . (align-interface
axis-group-interface))))))
-
+
(Beam
. (
;; todo: clean this up a bit: the list is getting
,Beam::slope_damping
,Beam::shift_region_to_valid
,Beam::quanting))
- (callbacks . ((positions . ,Beam::calc_positions)
- (direction . ,Beam::calc_direction)
- (stencil . ,Beam::print)
- ))
+
+ (positions . ,Beam::calc_positions)
+ (direction . ,Beam::calc_direction)
+ (stencil . ,Beam::print)
+
;; TODO: should be in SLT.
(thickness . 0.48) ; in staff-space
. (
(breakable . #t)
(stacking-dir . 1)
- (callbacks . ((positioning-done . ,Break_align_interface::calc_positioning_done)
- ))
+
+ (positioning-done . ,Break_align_interface::calc_positioning_done)
+ (X-extent . ,Axis_group_interface::width)
+
(break-align-orders . ;; end of line
#((instrument-name
left-edge
key-signature
staff
time-signature custos)
-
+
;; begin of line
(instrument-name
left-edge
time-signature
custos)))
(axes . (0))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
(meta . ((class . Item)
(interfaces . (break-alignment-interface
axis-group-interface))))))
(BreakAlignGroup
. (
(axes . (0))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (X-extent . ,Axis_group_interface::width)
+
(meta . ((class . Item)
(interfaces . (break-aligned-interface
axis-group-interface))))))
(clef . (minimum-space . 2.0))
(first-note . (fixed-space . 1.0)) ;huh?
(right-edge . (extra-space . 0.1))))
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(text . ,(make-musicglyph-markup "scripts.rcomma"))
(Y-offset-callbacks . (,Breathing_sign::offset_callback))
(break-visibility . ,begin-of-line-invisible)
(Clef
. (
- (callbacks . ((stencil . ,Clef::print)
- (glyph-name . ,Clef::calc_glyph_name)
- ))
+
+ (stencil . ,Clef::print)
+ (glyph-name . ,Clef::calc_glyph_name)
+
(breakable . #t)
(font-family . music)
(break-align-symbol . clef)
(ClusterSpannerBeacon
. (
- (Y-extent-callback . ,Cluster_beacon::height)
+
+ (Y-extent . ,Cluster_beacon::height)
+
(meta . ((class . Item)
(interfaces . (cluster-beacon-interface))))))
(ClusterSpanner
. (
- (callbacks . ((springs-and-rods . ,Spanner::set_spacing_rods)
- (stencil . ,Cluster::print)))
-
+
+ (springs-and-rods . ,Spanner::set_spacing_rods)
+ (stencil . ,Cluster::print)
+
+
(minimum-length . 0.0)
(padding . 0.25)
(style . ramp)
(ChordName
. (
- (callbacks . ((stencil . ,Text_interface::print)
- (after-line-breaking . ,Chord_name::after_line_breaking)
- ))
+
+ (stencil . ,Text_interface::print)
+ (after-line-breaking . ,Chord_name::after_line_breaking)
+
(word-space . 0.0)
(font-family . sans)
(font-size . 1.5)
(CombineTextScript
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(no-spacing-rods . #t)
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
. (
(break-align-symbol . custos)
(breakable . #t)
- (callbacks . ((stencil . ,Custos::print)))
+
+ (stencil . ,Custos::print)
+
(break-visibility . ,end-of-line-visible)
(style . vaticana)
(neutral-direction . -1)
. (
(axes . (0))
(direction . ,RIGHT)
- (callbacks . ((positioning-done . ,Dot_column::calc_positioning_done)
- ))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (positioning-done . ,Dot_column::calc_positioning_done)
+ (X-extent . ,Axis_group_interface::width)
+
(X-offset-callbacks . (,Dot_column::side_position))
(meta . ((class . Item)
(interfaces . (dot-column-interface
(Dots
. (
- (callbacks . ((stencil . ,Dots::print)))
+
+ (stencil . ,Dots::print)
+
(dot-count . 1)
(meta . ((class . Item)
(interfaces . (font-interface
(DoublePercentRepeat
. (
- (callbacks . ((stencil . ,Percent_repeat_item_interface::double_percent)))
+
+ (stencil . ,Percent_repeat_item_interface::double_percent)
+
(breakable . #t)
(slope . 1.0)
(font-encoding . fetaMusic)
(DoublePercentRepeatCounter
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
,Self_alignment_interface::centered_on_other_axis_parent))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(DynamicLineSpanner
. (
(axes . (1))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(staff-padding . 0.1)
(padding . 0.6)
(minimum-space . 1.2)
(direction . -1)
+ (Y-extent . ,Axis_group_interface::height)
+ (X-extent . ,Axis_group_interface::width)
+
+
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
dynamic-interface
(DynamicText
. (
-
+
;; todo.
- (callbacks . ((stencil . ,Text_interface::print)
- (direction . ,Script_interface::calc_direction)))
+
+ (stencil . ,Text_interface::print)
+ (direction . ,Script_interface::calc_direction)
+
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(self-alignment-X . 0)
(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(DynamicTextSpanner
. (
- (callbacks . ((stencil . ,Dynamic_text_spanner::print)))
+
+ (stencil . ,Dynamic_text_spanner::print)
+
;; rather ugh with NCSB
;; (font-series . bold)
(font-shape . italic)
(self-alignment-X . 0)
(self-alignment-Y . 0)
(script-priority . 100)
- (callbacks . ((stencil . ,Text_interface::print)
- (direction . ,Script_interface::calc_direction)))
+
+ (stencil . ,Text_interface::print)
+ (direction . ,Script_interface::calc_direction)
+
(font-encoding . fetaNumber)
(font-size . -5) ; don't overlap when next to heads.
(meta . ((class . Item)
(gap . 0.5)
(zigzag-width . 0.75)
(breakable . #t)
- (X-extent-callback . #f)
- (Y-extent-callback . #f)
- (callbacks . ((stencil . ,Line_spanner::print)
- (after-line-breaking . ,Line_spanner::after_line_breaking)
- ))
+ (X-extent . #f)
+ (Y-extent . #f)
+
+ (stencil . ,Line_spanner::print)
+ (after-line-breaking . ,Line_spanner::after_line_breaking)
+
(meta . ((class . Spanner)
(interfaces . (line-interface
line-spanner-interface))))))
(GridLine
. (
- (callbacks . ((stencil . ,Grid_line_interface::print)))
- (X-extent-callback . ,Grid_line_interface::width_callback)
+
+ (X-extent . ,Grid_line_interface::width)
+ (stencil . ,Grid_line_interface::print)
+
(self-alignment-X . ,CENTER)
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
,Self_alignment_interface::centered_on_parent))
(Hairpin
. (
-
- (callbacks . ((stencil . ,Hairpin::print)
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (after-line-breaking . ,Hairpin::after_line_breaking)))
+
+
+ (stencil . ,Hairpin::print)
+ (springs-and-rods . ,Spanner::set_spacing_rods)
+ (after-line-breaking . ,Hairpin::after_line_breaking)
+
(thickness . 1.0)
(height . 0.6666)
(minimum-length . 2.0)
(HorizontalBracket
. (
(thickness . 1.0)
- (callbacks . ((stencil . ,Horizontal_bracket::print)))
+
+ (stencil . ,Horizontal_bracket::print)
+
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(padding . 0.2)
(staff-padding . 0.2)
(left-edge . (extra-space . 1.0))))
(self-alignment-Y . 0)
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(break-align-symbol . instrument-name)
(break-visibility . ,begin-of-line-visible)
(baseline-skip . 2)
(KeyCancellation
. (
- (callbacks . ((stencil . ,Key_signature_interface::print)))
+
+ (stencil . ,Key_signature_interface::print)
+
(space-alist . (
(time-signature . (extra-space . 1.25))
(staff-bar . (extra-space . 0.6))
break-aligned-interface))))))
(KeySignature
. (
- (callbacks . ((stencil . ,Key_signature_interface::print)))
+
+ (stencil . ,Key_signature_interface::print)
+
(space-alist . (
(time-signature . (extra-space . 1.25))
(staff-bar . (extra-space . 1.1))
break-aligned-interface))))))
(LaissezVibrerTie
. (
- (callbacks . ((stencil . ,Tie::print)
- (control-points . ,Laissez_vibrer_tie::calc_control_points)
- (direction . ,Laissez_vibrer_tie::calc_direction)
- ))
+
+ (stencil . ,Tie::print)
+ (control-points . ,Laissez_vibrer_tie::calc_control_points)
+ (direction . ,Laissez_vibrer_tie::calc_direction)
+
(details . ((ratio . 0.333)
(height-limit . 1.0)))
(thickness . 1.0)
(interfaces . (laissez-vibrer-tie-interface))
))
))
-
+
(LaissezVibrerTieColumn
. (
- (X-extent-callback . #f)
- (Y-extent-callback . #f)
- (callbacks . ((positioning-done . ,Laissez_vibrer_tie_column::calc_positioning_done)
- ))
+ (X-extent . #f)
+ (Y-extent . #f)
+
+ (positioning-done . ,Laissez_vibrer_tie_column::calc_positioning_done)
+
(meta . ((class . Item)
(interfaces . (laissez-vibrer-tie-column-interface))
))
))
-
+
(LedgerLineSpanner
. (
- (callbacks . ((springs-and-rods . ,Ledger_line_spanner::set_spacing_rods)
-
- (stencil . ,Ledger_line_spanner::print)))
- (X-extent-callback . #f)
- (Y-extent-callback . #f)
+
+ (springs-and-rods . ,Ledger_line_spanner::set_spacing_rods)
+
+ (stencil . ,Ledger_line_spanner::print)
+
+ (X-extent . #f)
+ (Y-extent . #f)
(minimum-length-fraction . 0.25)
(length-fraction . 0.25)
(layer . 0)
(LigatureBracket
. (
- (ligature-primitive-callback . ,Note_head::print)
-
;; ugh. A ligature bracket is totally different from
;; a tuplet bracket.
- (callbacks . ((direction . ,Tuplet_bracket::calc_direction)
- (positions . ,Tuplet_bracket::calc_positions)
- (stencil . ,Tuplet_bracket::print)
- ))
+
+ (direction . ,Tuplet_bracket::calc_direction)
+ (positions . ,Tuplet_bracket::calc_positions)
+ (stencil . ,Tuplet_bracket::print)
+
(direction . 1)
(gap . 0.0)
(padding . 2.0)
(minimum-length . 0.3)
(padding . 0.07)
; (springs-and-rods . ,Hyphen_spanner::set_spacing_rods)
- (callbacks . ((stencil . ,Hyphen_spanner::print)))
+
+ (stencil . ,Hyphen_spanner::print)
+
(Y-extent . (0 . 0))
(meta . ((class . Spanner)
(interfaces . (lyric-interface
(LyricExtender
. (
- (callbacks . ((stencil . ,Lyric_extender::print)))
+
+ (stencil . ,Lyric_extender::print)
+
(thickness . 0.8) ; linethickness
(minimum-length . 1.5)
(Y-extent . (0 . 0))
lyric-extender-interface))))))
(LyricText
- . ((callbacks . ((stencil . ,Text_interface::print)))
+ . (
+
+ (stencil . ,Text_interface::print)
+
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_parent))
(self-alignment-X . 0)
(word-space . 0.6)
. (
(thickness . 1.4)
(flexa-width . 2.0)
- (ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive)
- (callbacks . ((stencil . ,Mensural_ligature::print)))
+ (stencil . ,Mensural_ligature::print)
+
(meta . ((class . Spanner)
(interfaces . (mensural-ligature-interface
font-interface))))))
(MetronomeMark
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(direction . 1)
(padding . 0.8)
side-position-interface
font-interface
metronome-mark-interface))))))
+
(MeasureGrouping
. (
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
- (callbacks . ((stencil . ,Measure_grouping::print)))
+
+ (stencil . ,Measure_grouping::print)
+
(padding . 2)
(direction . 1)
(thickness . 1)
(meta . ((class . Spanner)
(interfaces . (side-position-interface
measure-grouping-interface))))))
+
(MultiMeasureRest
. (
- (callbacks . ((stencil . ,Multi_measure_rest::print)))
+
+ (stencil . ,Multi_measure_rest::print)
+
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(staff-position . 0)
(expand-limit . 10)
font-interface
staff-symbol-referencer-interface))))))
+
(MultiMeasureRestNumber
. (
- (callbacks . ((springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
- (stencil . ,Text_interface::print)))
+ (springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
+ (stencil . ,Text_interface::print)
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
,Self_alignment_interface::centered_on_other_axis_parent))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
multi-measure-interface
self-alignment-interface
font-interface
- text-interface))))))
-
+ text-interface))))
+ ))
+
+
(MultiMeasureRestText
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
,Self_alignment_interface::centered_on_other_axis_parent))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(NoteCollision
. (
(axes . (0 1))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
- (callbacks . ((positioning-done . ,Note_collision_interface::calc_positioning_done)
- ))
+
+ (X-extent . ,Axis_group_interface::width)
+ (Y-extent . ,Axis_group_interface::height)
+ (positioning-done . ,Note_collision_interface::calc_positioning_done)
+
(meta . ((class . Item)
(interfaces . (note-collision-interface
axis-group-interface))))))
(NoteColumn
. (
(axes . (0 1))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+ (X-extent . ,Axis_group_interface::width)
+ (Y-extent . ,Axis_group_interface::height)
+
(meta . ((class . Item)
(interfaces . (axis-group-interface
note-column-interface))))))
(NoteHead
. (
- (callbacks . ((stencil . ,Note_head::print)
- (stem-attachment . ,Note_head::calc_stem_attachment)
- (glyph-name . ,note-head::calc-glyph-name)
- ))
- ;; WTF is this?
- (ligature-primitive-callback . ,Note_head::print)
+ (stencil . ,Note_head::print)
+ (stem-attachment . ,Note_head::calc_stem_attachment)
+ (glyph-name . ,note-head::calc-glyph-name)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(X-offset-callbacks . (,Note_head::stem_x_shift))
(meta . ((class . Item)
(NoteName
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(meta . ((class . Item)
(interfaces . (note-name-interface
text-interface
(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent
,Self_alignment_interface::aligned_on_self))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
;; no Y dimensions, because of lyrics under tenor clef.
(Y-extent . (0 . 0))
(OttavaBracket
. (
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
- (callbacks . ((stencil . ,Ottava_bracket::print)))
+
+ (stencil . ,Ottava_bracket::print)
+
(font-shape . italic)
(shorten-pair . (0.0 . -0.6))
(staff-padding . 1.0)
(PaperColumn
. (
(axes . (0))
- (callbacks . ((before-line-breaking . ,Paper_column::before_line_breaking)
- ;; (stencil . ,Paper_column::print)
- ))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (before-line-breaking . ,Paper_column::before_line_breaking)
+ ;; (stencil . ,Paper_column::print)
+ (X-extent . ,Axis_group_interface::width)
+
;; debugging
- ;; (font-size . -6) (font-name . "sans") (Y-extent-callback . #f)
+ ;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
(meta . ((class . Paper_column)
(interfaces . (paper-column-interface
axis-group-interface
(PhrasingSlur
. ((slur-details . ,default-slur-details)
- (callbacks . ((control-points . ,Slur::calc_control_points)
- (direction . ,Slur::calc_direction)
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (stencil . ,Slur::print)
- ))
+
+ (control-points . ,Slur::calc_control_points)
+ (direction . ,Slur::calc_direction)
+ (springs-and-rods . ,Spanner::set_spacing_rods)
+ (Y-extent . ,Slur::height)
+ (stencil . ,Slur::print)
+
(thickness . 1.1)
(minimum-length . 1.5)
- (Y-extent-callback . ,Slur::height)
(height-limit . 2.0)
(ratio . 0.333)
(meta . ((class . Spanner)
(NonMusicalPaperColumn
. (
(axes . (0))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
- (callbacks . ((before-line-breaking . ,Paper_column::before_line_breaking)
- ;; (stencil . ,Paper_column::print)
- ))
+
+ (before-line-breaking . ,Paper_column::before_line_breaking)
+ (X-extent . ,Axis_group_interface::width)
+ ;; (stencil . ,Paper_column::print)
+
(breakable . #t)
;; debugging stuff: print column number.
- ;; (font-size . -6) (font-name . "sans") (Y-extent-callback . #f)
+ ;; (font-size . -6) (font-name . "sans") (Y-extent . #f)
(meta . ((class . Paper_column)
(interfaces . (paper-column-interface
(PercentRepeat
. (
- (callbacks . ((springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
- (stencil . ,Multi_measure_rest::percent)))
+
+ (springs-and-rods . ,Multi_measure_rest::set_spacing_rods)
+ (stencil . ,Multi_measure_rest::percent)
+
(slope . 1.0)
(thickness . 0.48)
(font-encoding . fetaMusic)
font-interface
percent-repeat-interface))))))
(PercentRepeatCounter
- . ((callbacks . ((stencil . ,Text_interface::print)))
+ . (
+
+ (stencil . ,Text_interface::print)
+
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self
,Self_alignment_interface::centered_on_other_axis_parent))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
;; an example of a text spanner
(PianoPedalBracket
. (
- (callbacks . ((stencil . ,Piano_pedal_bracket::print)))
+
+ (stencil . ,Piano_pedal_bracket::print)
+
(style . line)
(bound-padding . 1.0)
(direction . -1)
(RehearsalMark
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
- (callbacks . ((after-line-breaking . ,shift-right-at-line-begin)))
+
+ (after-line-breaking . ,shift-right-at-line-begin)
+
(self-alignment-X . 0)
(direction . 1)
(breakable . #t)
(RemoveEmptyVerticalGroup
. (
(Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
- (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
+
+ (Y-extent . ,Hara_kiri_group_spanner::y_extent)
+
(axes . (1))
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
(RepeatSlash
. (
- (callbacks . ((stencil . ,Percent_repeat_item_interface::beat_slash)))
+
+ (stencil . ,Percent_repeat_item_interface::beat_slash)
+
(thickness . 0.48)
(slope . 1.7)
(meta . ((class . Item)
(interfaces . (percent-repeat-interface))))))
(Rest
. (
- (X-extent-callback . ,Rest::extent_callback)
- (Y-extent-callback . ,Rest::extent_callback)
- (callbacks . ((stencil . ,Rest::print)))
+
+ (stencil . ,Rest::print)
+ (X-extent . ,Rest::width)
+ (Y-extent . ,Rest::height)
+
(Y-offset-callbacks . (
,Staff_symbol_referencer::callback
,Rest::polyphonic_offset_callback
(RestCollision
. (
(minimum-distance . 0.75)
- (callbacks . ((positioning-done . ,Rest_collision::calc_positioning_done)
- ))
+ (positioning-done . ,Rest_collision::calc_positioning_done)
+
(meta . ((class . Item)
(interfaces . (rest-collision-interface))))))
(staff-padding . 0.25)
;; (script-priority . 0) priorities for scripts, see script.scm
(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
- (callbacks . ((stencil . ,Script_interface::print)
- (direction . ,Script_interface::calc_direction)))
+
+ (stencil . ,Script_interface::print)
+ (direction . ,Script_interface::calc_direction)
+
(font-encoding . fetaMusic)
(meta . ((class . Item)
(interfaces . (script-interface
(ScriptColumn
. (
- (callbacks . ((before-line-breaking . ,Script_column::before_line_breaking)))
+
+ (before-line-breaking . ,Script_column::before_line_breaking)
+
(meta . ((class . Item)
(interfaces . (script-column-interface))))))
(SeparationItem
. (
- (X-extent-callback . #f)
- (Y-extent-callback . #f)
+ (X-extent . #f)
+ (Y-extent . #f)
(meta . ((class . Item)
(interfaces . (spacing-interface
separation-item-interface))))))
(SeparatingGroupSpanner
. (
- (callbacks . ((springs-and-rods . ,Separating_group_spanner::set_spacing_rods)
- ))
+
+ (springs-and-rods . ,Separating_group_spanner::set_spacing_rods)
+
(meta . ((class . Spanner)
(interfaces . (only-prebreak-interface
spacing-interface
(Slur
. ((slur-details . ,default-slur-details)
- (callbacks . ((control-points . ,Slur::calc_control_points)
- (direction . ,Slur::calc_direction)
- (springs-and-rods . ,Spanner::set_spacing_rods)
- (stencil . ,Slur::print)
- ))
+
+ (control-points . ,Slur::calc_control_points)
+ (direction . ,Slur::calc_direction)
+ (springs-and-rods . ,Spanner::set_spacing_rods)
+ (Y-extent . ,Slur::height)
+ (stencil . ,Slur::print)
+
(thickness . 1.0)
(minimum-length . 1.5)
- (Y-extent-callback . ,Slur::height)
; Slur::height)
(height-limit . 2.0)
(ratio . 0.25)
(SpacingSpanner
. (
- (callbacks . ((springs-and-rods . ,Spacing_spanner::set_springs)))
+
+ (springs-and-rods . ,Spacing_spanner::set_springs)
+
(grace-space-factor . 0.6)
(shortest-duration-space . 2.0)
(spacing-increment . 1.2)
(SpanBar
. (
(break-align-symbol . staff-bar)
- (X-extent-callback . ,Span_bar::width_callback)
- (Y-extent-callback . ())
+ (Y-extent . ())
(layer . 0)
(breakable . #t)
- (callbacks . ((stencil . ,Span_bar::print)
- (bar-size . ,Span_bar::calc_bar_size)
- (glyph-name . ,Span_bar::calc_glyph_name)
- (before-line-breaking . ,Span_bar::before_line_breaking)))
+
+ (stencil . ,Span_bar::print)
+ (bar-size . ,Span_bar::calc_bar_size)
+ (X-extent . ,Span_bar::width)
+ (glyph-name . ,Span_bar::calc_glyph_name)
+ (before-line-breaking . ,Span_bar::before_line_breaking)
+
;; ugh duplication!
;;
bar-line-interface))))))
(StanzaNumber
- . ((callbacks . ((stencil . ,Text_interface::print)))
+ . (
+ (stencil . ,Text_interface::print)
+
(font-series . bold)
(padding . 1.0)
(X-offset-callbacks . (,Side_position_interface::aligned_side))
(StringNumber
. (
- (callbacks . ((stencil . ,print-circled-text-callback)))
+
+ (stencil . ,print-circled-text-callback)
+
(padding . 0.5)
(staff-padding . 0.5)
(self-alignment-X . 0)
(SostenutoPedal
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
+
(direction . 1)
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(no-spacing-rods . #t)
(SostenutoPedalLineSpanner
. (
(axes . (1))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+
+ (X-extent . ,Axis_group_interface::height)
+
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(padding . 1.2)
(StaffSymbol
. (
- (callbacks . ((stencil . ,Staff_symbol::print)))
+
+ (stencil . ,Staff_symbol::print)
+
(line-count . 5)
(ledger-line-thickness . (1.0 . 0.1))
(layer . 0)
(Stem
. (
- ;; this list is rather long. Trim --hwn
- (callbacks . ((direction . ,Stem::calc_direction)
- (stem-end-position . ,Stem::calc_stem_end_position)
- (stem-info . ,Stem::calc_stem_info)
- (positioning-done . ,Stem::calc_positioning_done)
- (stencil . ,Stem::print)
- (length . ,Stem::calc_length)
- ))
+ (direction . ,Stem::calc_direction)
+ (stem-end-position . ,Stem::calc_stem_end_position)
+ (stem-info . ,Stem::calc_stem_info)
+ (positioning-done . ,Stem::calc_positioning_done)
+ (stencil . ,Stem::print)
+ (X-extent . ,Stem::width)
+ (Y-extent . ,Stem::height)
+ (length . ,Stem::calc_length)
+
(thickness . 1.3)
(details
(stem-shorten . (1.0 0.5))
))
-
+
;; default stem direction for note on middle line
(neutral-direction . -1)
;; and the extreme minima as abolute minimum length.
(X-offset-callbacks . (,Stem::offset_callback))
- (X-extent-callback . ,Stem::width_callback)
- (Y-extent-callback . ,Stem::height)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(meta . ((class . Item)
(interfaces . (stem-interface
(StemTremolo
. (
- (callbacks . ((stencil . ,Stem_tremolo::print)))
- (Y-extent-callback . ,Stem_tremolo::height)
- (X-extent-callback . #f)
-
+ (Y-extent . ,Stem_tremolo::height)
+ (stencil . ,Stem_tremolo::print)
+ (X-extent . #f)
(beam-width . 1.6) ; staff-space
(beam-thickness . 0.48) ; staff-space
(meta . ((class . Item)
(SustainPedal
. (
(no-spacing-rods . #t)
- (callbacks . ((stencil . ,Sustain_pedal::print)))
+ (stencil . ,Sustain_pedal::print)
(self-alignment-X . 0)
(direction . 1)
(padding . 0.0) ;; padding relative to SustainPedalLineSpanner
(SustainPedalLineSpanner
. (
(axes . (1))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+ (X-extent . ,Axis_group_interface::height)
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
-
(padding . 1.2)
(staff-padding . 1.2)
(minimum-space . 1.0)
(System
. (
(axes . (0 1))
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+ (X-extent . ,Axis_group_interface::width)
+ (Y-extent . ,Axis_group_interface::height)
(meta . ((class . System)
(interfaces . (system-interface
axis-group-interface))))))
(SystemStartBrace
. (
(glyph . "brace")
- (callbacks . ((stencil . ,System_start_delimiter::print)))
+ (stencil . ,System_start_delimiter::print)
(collapse-height . 5.0)
(font-encoding . fetaBraces)
- (Y-extent-callback . #f)
+ (Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (system-start-delimiter-interface
font-interface))))))
(SystemStartBracket
. (
- (Y-extent-callback . #f)
+ (Y-extent . #f)
(X-offset-callbacks . (,(lambda (g a) -0.8)))
- (callbacks . ((stencil . ,System_start_delimiter::print)))
+ (stencil . ,System_start_delimiter::print)
(glyph . "bracket")
(collapse-height . 5.0)
(thickness . 0.45)
(SystemStartBar
. (
- (Y-extent-callback . #f)
+ (Y-extent . #f)
(glyph . "bar-line")
(thickness . 1.6)
- (callbacks . ((stencil . ,System_start_delimiter::print)
- ))
+ (stencil . ,System_start_delimiter::print)
(meta . ((class . Spanner)
(interfaces . (system-start-delimiter-interface))))))
(TabNoteHead
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+
+ (stencil . ,Text_interface::print)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(font-size . -2)
(stem-attachment . (1.0 . 1.35))
;; sync with Fingering ?
(padding . 0.5)
(staff-padding . 0.5)
- (callbacks . ((stencil . ,Text_interface::print)
- (direction . ,Script_interface::calc_direction)))
+
+ (stencil . ,Text_interface::print)
+ (direction . ,Script_interface::calc_direction)
+
(avoid-slur . around)
(slur-padding . 0.5)
(script-priority . 200)
(TextSpanner
. (
- (callbacks .((stencil . ,Text_spanner::print)))
+ (stencil . ,Text_spanner::print)
(font-shape . italic)
(style . dashed-line)
(staff-padding . 0.8)
(Tie
. (
- (callbacks . ((control-points . ,Tie::calc_control_points)
- (direction . ,Tie::calc_direction)
- (stencil . ,Tie::print)
- ))
+ (control-points . ,Tie::calc_control_points)
+ (direction . ,Tie::calc_direction)
+ (stencil . ,Tie::print)
(details . ((ratio . 0.333)
(height-limit . 1.0)
(between-length-limit . 1.0)))
(TieColumn
. (
- (callbacks . ((positioning-done . ,Tie_column::calc_positioning_done)
- (before-line-breaking . ,Tie_column::before_line_breaking)
- ))
- (X-extent-callback . #f)
- (Y-extent-callback . #f)
-
+ (positioning-done . ,Tie_column::calc_positioning_done)
+ (before-line-breaking . ,Tie_column::before_line_breaking)
+ (X-extent . #f)
+ (Y-extent . #f)
(meta . ((class . Spanner)
(interfaces . (tie-column-interface))))))
(TimeSignature
. (
- (callbacks . ((stencil . ,Time_signature::print)))
+ (stencil . ,Time_signature::print)
(break-align-symbol . time-signature)
(break-visibility . ,all-visible)
(space-alist . (
(TrillSpanner
. (
- (callbacks . ((stencil . ,Dynamic_text_spanner::print)))
+ (stencil . ,Dynamic_text_spanner::print)
(edge-text . ,(cons (make-musicglyph-markup "scripts.trill")
""))
(style . trill)
(padding . 0.2)
(direction . ,LEFT)
(font-size . -4)
- (callbacks . ((stencil . ,Accidental_interface::print)))
+ (stencil . ,Accidental_interface::print)
(meta . ((class . Item)
(interfaces . (item-interface
accidental-interface
. ((X-offset-callbacks . (,Side_position_interface::aligned_side))
(axes . (,X))
(font-size . -4)
- (callbacks . ((stencil . ,parenthesize-elements)))
+ (stencil . ,parenthesize-elements)
(direction . ,RIGHT)
(padding . 0.3)
(meta . ((class . Item)
axis-group-interface))))))
(TrillPitchHead
- . ((callbacks . ((stencil . ,Note_head::print)))
+ . (
+ (stencil . ,Note_head::print)
(duration-log . 2)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(font-size . -4)
(thickness . 1.6)
(edge-height . (0.7 . 0.7))
(shorten-pair . (-0.2 . -0.2))
- (callbacks . ((direction . ,Tuplet_bracket::calc_direction)
- (positions . ,Tuplet_bracket::calc_positions)
- (stencil . ,Tuplet_bracket::print)
- ))
+ (direction . ,Tuplet_bracket::calc_direction)
+ (positions . ,Tuplet_bracket::calc_positions)
+ (stencil . ,Tuplet_bracket::print)
(font-shape . italic)
-
(font-size . -2)
(meta . ((class . Spanner)
(interfaces . (text-interface
(UnaCordaPedal
. (
- (callbacks . ((stencil . ,Text_interface::print)))
+ (stencil . ,Text_interface::print)
(font-shape . italic)
(no-spacing-rods . #t)
(self-alignment-X . 0)
(UnaCordaPedalLineSpanner
. (
(axes . (1))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
+ (X-extent . ,Axis_group_interface::height)
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
(padding . 1.2)
(staff-padding . 1.2)
. (
(thickness . 0.6)
(flexa-width . 2.0)
- (ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive)
- (callbacks . ((stencil . ,Vaticana_ligature::print)))
+ (stencil . ,Vaticana_ligature::print)
(meta . ((class . Spanner)
(interfaces . (vaticana-ligature-interface
font-interface))))))
(VerticalAlignment
. (
(axes . (1))
- (callbacks . ((positioning-done . ,Align_interface::calc_positioning_done)
- (after-line-breaking . ,Align_interface::stretch_after_break)
- ))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
+ (positioning-done . ,Align_interface::calc_positioning_done)
+ (after-line-breaking . ,Align_interface::stretch_after_break)
+ (Y-extent . ,Axis_group_interface::height)
+ (X-extent . ,Axis_group_interface::width)
(stacking-dir . -1)
(meta . ((class . Spanner)
(interfaces . (align-interface
axis-group-interface))))))
-
(VerticalAxisGroup
. (
(axes . (1))
- (Y-extent-callback . ,Axis_group_interface::group_extent_callback)
- (X-extent-callback . ,Axis_group_interface::group_extent_callback)
-
+ (Y-extent . ,Axis_group_interface::height)
+ (X-extent . ,Axis_group_interface::width)
(meta . ((class . Spanner)
(interfaces . (axis-group-interface
vertically-spaceable-interface))))))
(direction . 0)
(space-alist . ((left-edge . (extra-space . 1.0))))
(break-align-symbol . instrument-name)
- (callbacks . ((stencil . ,Text_interface::print)))
+ (stencil . ,Text_interface::print)
(break-align-symbol . clef)
(break-visibility . ,begin-of-line-visible)
(baseline-skip . 2)
(VoltaBracket
. (
- (callbacks . ((stencil . ,Volta_bracket_interface::print)
- (after-line-breaking . ,Volta_bracket_interface::after_line_breaking)))
+ (stencil . ,Volta_bracket_interface::print)
+ (after-line-breaking . ,Volta_bracket_interface::after_line_breaking)
(direction . ,UP)
(padding . 1)
(font-encoding . fetaNumber)
line-interface
text-interface
side-position-interface
- font-interface))))))
+ font-interface)))
+ )))
+
-
(VoiceFollower
. (
(style . line)
(gap . 0.5)
(breakable . #t)
- (X-extent-callback . #f)
- (Y-extent-callback . #f)
-
- (callbacks . ((stencil . ,Line_spanner::print)
- (after-line-breaking . ,Line_spanner::after_line_breaking)))
+ (X-extent . #f)
+ (Y-extent . #f)
+ (stencil . ,Line_spanner::print)
+ (after-line-breaking . ,Line_spanner::after_line_breaking)
(meta . ((class . Spanner)
(interfaces . (line-spanner-interface
- line-interface))))))))
+ line-interface))))
+ ))
+
+))
(define (completize-grob-entry x)
"Transplant assoc key into 'name entry of 'meta of X. Set interfaces for Item, Spanner etc.
(define-public ((add-balloon-text object-name text off) grob orig-context cur-context)
"Usage: see input/regression/balloon.ly "
(let* ((meta (ly:grob-property grob 'meta))
- (callbacks (ly:grob-property grob 'callbacks))
- (nm (if (pair? meta) (cdr (assoc 'name meta)) "nonexistant"))
- (cb-handle (assoc 'stencil callbacks))
- (cb (if cb-handle (cdr cb-handle) #f)))
+ (cb (ly:grob-property-data grob 'stencil))
+ (nm (if (pair? meta) (cdr (assoc 'name meta)) "nonexistant")))
(if (and (equal? nm object-name)
- cb)
+ (procedure? cb))
(begin
- (ly:grob-set-callback! grob 'stencil Balloon_interface::print)
- (set! (ly:grob-property grob 'balloon-original-callback) cb)
+ (ly:grob-set-property! grob 'stencil Balloon_interface::print)
+ (set! (ly:grob-property grob 'original-stencil) cb)
(set! (ly:grob-property grob 'balloon-text) text)
(set! (ly:grob-property grob 'balloon-text-offset) off)
(set! (ly:grob-property grob 'balloon-text-props) '((font-family . roman)))))))
Ambitus::print
Arpeggio::print
Arpeggio::brew_chord_bracket
- Arpeggio::width_callback
- Axis_group_interface::group_extent_callback
Bar_line::print
Breathing_sign::offset_callback
Clef::print
Percent_repeat_item_interface::beat_slash
Percent_repeat_item_interface::double_percent
Piano_pedal_bracket::print
- Rest::extent_callback
Rest::polyphonic_offset_callback
Rest::print
Script_interface::print
Slur::print
Spacing_spanner::set_springs
Span_bar::print
- Span_bar::width_callback
Spanner::set_spacing_rods
Staff_symbol::print
Staff_symbol_referencer::callback
- Stem::width_callback
Stem::height
Stem::offset_callback
Stem::print
#f))
(alt-dir (ly:context-property context 'figuredBassAlterationDirection))
+ (plus-dir (ly:context-property context 'figuredBassPlusDirection))
)
(if (and (not fig-markup) alt-markup)
(if fig-markup
(markup #:put-adjacent
fig-markup
- X LEFT
+ X (if (number? plus-dir)
+ plus-dir
+ LEFT)
#:pad-x 0.2 plus-markup)
plus-markup)))
presome=${ac_default_prefix}
fi
- build_package_datadir=$ugh_ugh_autoconf250_builddir/share/$package
+ build_package_datadir=$ugh_ugh_autoconf250_builddir/out$CONFIGSUFFIX/share/$package
DATADIR=`echo ${datadir} | sed "s!\\\${prefix}!$presome!"`
BUILD_PACKAGE_DATADIR=`echo ${build_package_datadir} | sed "s!\\\${prefix}!$presome!"`
libdir='${exec_prefix}/lib'
fi
presome=$exec_prefix
- build_package_libdir=$ugh_ugh_autoconf250_builddir/lib/$package
+ build_package_libdir=$ugh_ugh_autoconf250_builddir/out$CONFIGSUFFIX/lib/$package
LIBDIR=`echo ${libdir} | sed "s!\\\${exec_prefix}!$presome!"`
BUILD_PACKAGE_LIBDIR=`echo ${build_package_libdir} | sed "s!\\\${exec_prefix}!$presome!"`