* flower/polynomial.cc (check_sol): no empty if bodies.
+=======
+2006-10-30 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * stepmake/stepmake/po-vars.make: Resolve.
+
+2006-10-29 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * stepmake/stepmake/po-vars.make: test change for GIT gateway.
+
+2006-10-29 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * buildscripts/git-update-changelog.py (main): write .msg and cvs command.
+
+ * scm/define-grobs.scm:
+ separation-items have width
+
+ * VERSION:
+ bump version
+
+ * .gitignore:
+ * Documentation/topdocs/NEWS.tely:
+ * lily/separating-group-spanner.cc:
+ * lily/slur-engraver.cc:
+ * lily/slur-scoring.cc:
+ * scm/define-grobs.scm:
+ * input/regression/slur-clef.ly:
+ add breakableSeparationItem to extra encompass for slurs. This
+ fixes slur/clef slur/key collisions etc. Should fix #49
+
+ * lily/include/slur-scoring.hh:
+ * lily/slur-scoring.cc:
+ Use X of separation item as slur start. Fixes #120
+
+2006-10-29 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * buildscripts/git-update-changelog.py (changelog_body): don't
+ write committishes.
+
+ * lily/grob.cc: add avoid-slur
+
+2006-10-28 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * emacsclient.patch:
+ * server.el.patch:
+ move server/emacsclient to elisp/
+
+ * buildscripts/git-update-changelog.py (Commit.note_del_file):
+ apply patches too
+
+ * elisp/server.el.patch:
+ move emacs patches.
+
+ * elisp/emacsclient.patch:
+ emacsclient too.
+
+ * buildscripts/git-update-changelog.py:
+ ignore ChangeLog
+
+ * .gitignore:
+ update
+
+ * ChangeLog:
+ * buildscripts/git-update-changelog.py:
+ script to update ChangeLog with Git messages.
+
+ * lily/beam-engraver.cc:
+ * input/regression/rest-pitched-beam.ly:
+ don't set callback if staff-position set. Fixes #126.
+
+ * lily/bar-number-engraver.cc:
+ * lily/beam.cc:
+ * lily/fingering-engraver.cc:
+ * lily/grob-property.cc:
+ * lily/grob.cc:
+ * lily/include/grob.hh:
+ * lily/include/lily-guile-macros.hh:
+ * lily/mark-engraver.cc:
+ * lily/melody-engraver.cc:
+ * lily/script-column.cc:
+ * lily/tie-formatting-problem.cc:
+ * lily/tie.cc:
+ internal_get_property_data() using ly_symbol2scm()
+
+ * stepmake/stepmake/generic-targets.make:
+ create .gitignore in outdir.
+
+ * .gitignore:
+ new file.
+
+2006-10-28 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * input/test/vertical-extent.ly:
+ * python/convertrules.py (conv): verticalExtent -> VerticalAxisGroup.
+
+2006-10-28 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * stepmake/bin/add-html-footer.py (compose): remove setgcos
+
+2006-10-28 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * GNUmakefile.in (install-help2man): install-help2man target.
+
+2006-10-27 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * SConstruct (configure): Do not check for /bin/sh.
+
+2006-10-27 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * mf/GNUmakefile: explicit dependencies for emmentaler .otf-table
+ files.
+
+ * Documentation/topdocs/NEWS.tely (Top): add FretBoards example.
+
+ * input/regression/fret-boards.ly: new file.
+
+ * po/de.po: new po courtesy translation team.
+
+ * scripts/lilypond-book.py (get_option_parser): add newline to doc
+ string.
+
+2006-10-27 Mats Bengtsson <mabe@drongo.s3.kth.se>
+
+ * ly/gregorian-init.ly (neumeDemoLayout): update
+ minimumVerticalExtent -> VerticalAxisGroup #'minimum-Y-extent
+
+ * scm/define-context-properties.scm, ly/engraver-init.ly: Remove
+ obsolete verticalExtent / extraVerticalExtent / minumumVerticalExtent
+
+2006-10-27 Erlend Aasland <erlenda@gmail.com>
+
+ * GNUmakefile.in ($(tree-share-prefix)/mf-link-tree link-mf-tree):
+ Yet another build fix.
+
+2006-10-26 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * SConstruct (lilypondprefix): use sorted() for list_sort()
+ indent 4
+
+2006-10-26 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * flower/SConscript: Unit test rules.
+
+ * flower/test-std.cc: Compile fix.
+
+2006-10-26 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * python/midi.c (pymidi_parse_track): warning fixes.
+
+ * lily/dot-column.cc (struct Dot_position): initialize extremal_head_
+ include dot-column.hh
+
+2006-10-26 Graham Percival <gpermus@gmail.com>
+
+ * Documentation/user/{basic-, global}: minor changes from mailist.
+
+2006-10-26 Erlend Aasland <erlenda@gmail.com>
+
+ * scm/define-grobs.scm: trivial beautification
+
+ * lily/tie-performer.cc: no need to #include "pqueue.hh"
+
+ * lily/source-file.cc: put multibyte var inside #if clause
+
+ * scm/define-grob-interfaces.scm:
+ * scm/define-grob-properties.scm:
+ Build fix (string-fret-finger-combinations)
+
+ * Documentation/topdocs/INSTALL.texi: Remove obsolete info about
+ lexer-gcc-3.1.sh
+
+ * Documentation/user/lilypond-book.itely: Build fix.
+
+2006-10-26 Joe Neeman <joeneeman@gmail.com>
+
+ * lily/system.cc (get_paper_system):
+ * lily/paper-book.cc (systems):
+ move most of the backwards compatibility stuff into
+ Paper_book::systems
+
+ * Documentation/topdocs/NEWS.tely: add 2 entries for the
+ page breaking stuff
+
+ * Documentation/user/page.itely: remove time-scaled-music
+ bug for the Page_turn_engraver
+
+ * lily/paper-book.cc (set_system_penalty): backwards
+ compatibility (breakbefore) for the old page breaker
+
+2006-10-25 Graham Percival <gpermus@gmail.com>
+
+ * Diocumentation/user/instrument-notation.itely: added more
+ info about stanzas; thanks Geoff!
+
+ * Documentation/user/ {basic, advanced}: small fixes from
+ mailist.
+
+ * THANKS: add some bug reporters.
+
+2006-10-25 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * scm/define-context-properties.scm (all-user-translation-properties):
+ noteToFretFunction: Add.
+
+ * scm/define-grobs.scm (all-grob-descriptions): FretBoard: use
+ fret-diagram-interface (WAS: fret-board-interface). Fixes build.
+
+2006-10-23 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ * flower/file-name.cc (dos_to_posix): Help std::string.copy with
+ trailing zero.
+
+ * GNUmakefile.in ($(tree-share-prefix)/mf-link-tree link-mf-tree):
+ Remove bashism in delete.
+
+2006-10-25 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * scm/define-grobs.scm (all-grob-descriptions): set finger-code.
+
+ * scm/translation-functions.scm (determine-frets-mf): flatten let*
+
+ * scm/define-context-properties.scm
+ (all-user-translation-properties): add maximumFretStretch property.
+
+ * scm/translation-functions.scm (tunings): read and use maximumFretStretch.
+
+ * lily/source-file.cc (get_counts): use multibyte variable.
+
+ * scm/translation-functions.scm (determine-frets-mf): new
+ function: compute fret numbers.
+
+ * scm/output-lib.scm (string-frets->description) new function.
+ (fret-board::calc-stencil): new function
+
+ * scm/fret-diagrams.scm (fret-diagram-verbose): update doc string.
+
+ * scm/define-grobs.scm (all-grob-descriptions): add FretBoard grob.
+
+ * lily/include/lily-guile.hh (ly_cxx_vector_to_list): new function.
+
+ * lily/tab-note-heads-engraver.cc: cleanups.
+
+ * lily/fretboard-engraver.cc: new file
+
+ * ly/engraver-init.ly: add FretBoards context
+
+2006-10-24 Joe Neeman <joeneeman@gmail.com>
+
+ * lily/grob.cc (pure_relative_y_coordinate)
+ (pure_height): use the new call_pure_function stuff
+
+ * lily/grob-property.cc (call_pure_function): wrapper for the scheme
+ call-pure-function
+
+ * lily/side-position-interface.cc (pure_y_aligned_side): add an
+ optarg
+
+ * lily/simple-closure.cc (ly_eval_simple_closure): make
+ simple-closure evaluatable from scheme
+ (evaluate_with_simple_closure): make simple-closures pure-
+ evaluatable
+
+ * lily/slur.cc (pure_outside_slur_callback): new function
+
+ * ly/paper-defaults.ly: change default blank-page-force to 2 (this
+ fits in with previous changes that made the page forces much
+ smaller)
+
+ * scm/define-grobs.scm (call-pure-function): generalise pure-Y-offset
+ and pure-Y-extent into this new function.
+ (pure-conversions-alist): add outside-slur-callback
+
+2006-10-24 Mats Bengtsson <mabe@drongo.s3.kth.se>
+
+ * Documentation/user/advanced-notation.itely (Instrument names):
+ Remove obsolete bug workaround for instrument names on piano
+ staff.
+
+2006-10-24 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * Documentation/user/lilypond-book.itely (Integrating DocBook and
+ music): patch by Bertalan Fodor for docbook.
+
+ * Documentation/topdocs/GNUmakefile (LILYPOND_BINARY): use instead
+ of $(LILYPOND). Prevents lilypond run for .txt files.
+
+ * INSTALL.txt: gitness.
+
+ * .cvsignore: update to force gitness.
+
+2006-10-23 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * lily/tuplet-bracket.cc (calc_position_and_height): robustness:
+ detect suicide in nested tuplets.
+
+2006-10-23 Werner Lemberg <wl@gnu.org>
+
+ * lily/pango-font.cc (Pango_font::pango_item_string_stencil): Fix
+ typo in argument to FT_Get_X11_Font_Format.
+
+2006-10-23 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * stepmake/stepmake/po-vars.make: more gitness.
+
+ * flower/polynomial.cc (check_sol): no empty if bodies.
+
2006-10-22 Han-Wen Nienhuys <hanwen@lilypond.org>
* stepmake/stepmake/po-vars.make: test change for GIT gateway.
convert -geometry 50x50% $< $@
$(outdir)/%.png: %.eps
- convert $< $@
-
-$(outdir)/%.eps: %.png
- convert $< $@
-
-$(outdir)/%.eps: %.eps
- cp $< $@
+ gs -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=$@ -sDEVICE=png16m -dEPSCrop -dNOPAUSE -f $< -c quit
$(outdir)/%.pdf: %.png
convert $< $@
log = log[len (first):]
file_adddel = []
- final_log = ''
+
+ collated_log = ''
+ collated_message = ''
for c in commits:
print 'patch ', c.committish
new_log += header (last_commit)
- new_log = changelog_body (c) + new_log
+ collated_log = changelog_body (c) + collated_log
last_commit = c
-# FIXME: correct fix?
-# final_log += self.message + '\n'
- final_log += log
-
+ collated_message += c.message + '\n'
+
+
for (op, f) in file_adddel:
if op == 'del':
system ('cvs remove %(f)s' % locals ())
if op == 'add':
system ('cvs add %(f)s' % locals ())
- new_log = header (last_commit) + new_log + '\n'
+ if last_commit:
+ collated_log = header (last_commit) + collated_log + '\n'
- log = new_log + log
+ log = collated_log + log
try:
os.unlink ('ChangeLog~')
os.rename ('ChangeLog', 'ChangeLog~')
open ('ChangeLog', 'w').write (log)
- open ('.msg','w').write (final_log)
- print 'cvs commit -F .msg '
+ open ('.msg','w').write (collated_message)
+ print '\nCommit message\n**\n%s\n**\n' % collated_message
+ print '\nRun:\n\n\tcvs commit -F .msg\n\n'
main ()
--- /dev/null
+
+\header {
+
+
+ texidoc = "Like normal ties, single semities (LaissezVibrerTie or
+RepeatTie) get their direction from the stem direction, and may be
+tweaked with @code{#'direction}."
+
+
+}
+\version "2.9.27"
+\layout{ragged-right=##t}
+
+{
+ r4
+ c'\laissezVibrer\repeatTie
+ \stemUp
+ b'\laissezVibrer\repeatTie
+ r
+
+ \stemDown
+ b'\laissezVibrer\repeatTie
+ r
+ c''\laissezVibrer\repeatTie
+ r
+
+ \override LaissezVibrerTie #'direction = #DOWN
+ \override RepeatTie #'direction = #DOWN
+ c''\laissezVibrer_"override"\repeatTie
+}
Bezier get_transformed_bezier (Tie_details const &) const;
Bezier get_untransformed_bezier (Tie_details const &) const;
Real height (Tie_details const&) const;
+ int column_span_length () const;
static int compare (Tie_configuration const &a,
Tie_configuration const &b);
Tie_specification ();
int column_span () const;
+ void get_tie_manual_settings (Grob *);
};
struct Tie_configuration_variation
Semi_tie::calc_control_points (SCM smob)
{
Grob *me = unsmob_grob (smob);
+ (void) me->get_property ("direction");
+
if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS)))
{
me->get_parent (Y_AXIS)->get_property ("positioning-done");
return SCM_UNSPECIFIED;
}
-MAKE_SCHEME_CALLBACK(Semi_tie, calc_direction, 1)
-SCM
-Semi_tie::calc_direction (SCM smob)
-{
- Grob *me = unsmob_grob (smob);
- if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS)))
- {
- me->get_parent (Y_AXIS)->get_property("positioning-done");
- }
- else
- {
- programming_error ("lv tie without Semi_tie_column");
- set_grob_direction (me, UP);
- }
-
- return SCM_UNSPECIFIED;
-}
-
int
Semi_tie::get_position (Grob *me)
{
details.ratio_);
}
+int
+Tie_configuration::column_span_length () const
+{
+ return column_ranks_[RIGHT] - column_ranks_[LEFT];
+}
+
Real
Tie_configuration::distance (Tie_configuration const &a,
Tie_configuration const &b)
for (vsize i = 0; i < ties.size (); i++)
{
Tie_specification spec;
+
+ spec.get_tie_manual_settings (ties[i]);
- if (scm_is_number (ties[i]->get_property_data ("direction")))
- {
- spec.manual_dir_ = to_dir (ties[i]->get_property ("direction"));
- spec.has_manual_dir_ = true;
- }
-
- spec.position_ = Tie::get_position (ties[i]);
- if (scm_is_number (ties[i]->get_property ("staff-position")))
- {
- spec.manual_position_ = scm_to_double (ties[i]->get_property ("staff-position"));
- spec.has_manual_position_ = true;
- spec.position_ = int (my_round (spec.manual_position_));
- }
+
do
{
}
void
-Tie_formatting_problem::from_semi_ties (vector<Grob*> const &lv_ties, Direction head_dir)
+Tie_formatting_problem::from_semi_ties (vector<Grob*> const &semi_ties, Direction head_dir)
{
- if (lv_ties.empty ())
+ if (semi_ties.empty ())
return;
- details_.from_grob (lv_ties[0]);
+ details_.from_grob (semi_ties[0]);
vector<Item*> heads;
int column_rank = -1;
- for (vsize i = 0; i < lv_ties.size (); i++)
+ for (vsize i = 0; i < semi_ties.size (); i++)
{
Tie_specification spec;
- Item *head = unsmob_item (lv_ties[i]->get_object ("note-head"));
+ Item *head = unsmob_item (semi_ties[i]->get_object ("note-head"));
if (!head)
programming_error ("LV tie without head?!");
{
spec.position_ = int (Staff_symbol_referencer::get_position (head));
}
-
+ spec.get_tie_manual_settings (semi_ties[i]);
+
spec.note_head_drul_[head_dir] = head;
column_rank = dynamic_cast<Item*> (head)->get_column ()->get_rank ();
spec.column_ranks_ = Drul_array<int> (column_rank, column_rank);
specifications_.push_back (spec);
}
- x_refpoint_ = lv_ties [0];
- for (vsize i = 0; i < lv_ties.size (); i++)
- x_refpoint_ = lv_ties[i]->common_refpoint (x_refpoint_, X_AXIS);
+ x_refpoint_ = semi_ties [0];
+ for (vsize i = 0; i < semi_ties.size (); i++)
+ x_refpoint_ = semi_ties[i]->common_refpoint (x_refpoint_, X_AXIS);
for (vsize i = 0; i < heads.size (); i++)
x_refpoint_ = heads[i]->common_refpoint (x_refpoint_, X_AXIS);
conf->attachment_x_.widen ( - details_.x_gap_);
- Direction d = LEFT;
- do
+ if (conf->column_span_length ())
{
- Real y = conf->position_ * details_.staff_space_ * 0.5 + conf->delta_y_;
- if (get_stem_extent (conf->column_ranks_[d], d, X_AXIS).is_empty ()
- || !get_stem_extent (conf->column_ranks_[d], d, Y_AXIS).contains (y))
- continue;
+ /*
+ avoid the stems that we attach to as well. We don't do this
+ for semities (span length = 0)
- conf->attachment_x_[d] =
- d * min (d * conf->attachment_x_[d],
- d * (get_stem_extent (conf->column_ranks_[d], d, X_AXIS)[-d] - d * details_.stem_gap_));
- }
- while (flip (&d) != LEFT);
-
+ It would be better to check D against HEAD-DIRECTION if
+ applicable.
+ */
+ Direction d = LEFT;
+ do
+ {
+ Real y = conf->position_ * details_.staff_space_ * 0.5 + conf->delta_y_;
+ if (get_stem_extent (conf->column_ranks_[d], d, X_AXIS).is_empty ()
+ || !get_stem_extent (conf->column_ranks_[d], d, Y_AXIS).contains (y))
+ continue;
+
+ conf->attachment_x_[d] =
+ d * min (d * conf->attachment_x_[d],
+ d * (get_stem_extent (conf->column_ranks_[d], d, X_AXIS)[-d] - d * details_.stem_gap_));
+ }
+ while (flip (&d) != LEFT);
+ }
return conf;
}
column_ranks_[LEFT] = 0;
}
+
+void
+Tie_specification::get_tie_manual_settings (Grob *tie)
+{
+ if (scm_is_number (tie->get_property_data ("direction")))
+ {
+ manual_dir_ = to_dir (tie->get_property ("direction"));
+ has_manual_dir_ = true;
+ }
+
+ position_ = Tie::get_position (tie);
+ if (scm_is_number (tie->get_property ("staff-position")))
+ {
+ manual_position_ = scm_to_double (tie->get_property ("staff-position"));
+ has_manual_position_ = true;
+ position_ = int (my_round (manual_position_));
+ }
+}
+
int
Tie_specification::column_span () const
{
{
if (tie_configs->empty ())
return ;
-
+
if (!tie_configs->at (0).dir_)
- tie_configs->at (0).dir_ = DOWN;
+ {
+ if (tie_configs->size () == 1)
+ tie_configs->at (0).dir_ = Direction (sign (tie_configs->at (0).position_));
+
+ if (!tie_configs->at (0).dir_)
+ tie_configs->at (0).dir_ = DOWN;
+ }
+
if (!tie_configs->back ().dir_)
tie_configs->back ().dir_ = UP;
#include "tie-configuration.hh"
#include "tie-formatting-problem.hh"
#include "warn.hh"
+#include "semi-tie-column.hh"
bool
Grob *
Tie::head (Grob *me, Direction d)
{
+ if (is_direction (me->get_property ("head-direction")))
+ {
+ Direction hd = to_dir (me->get_property ("head-direction"));
+
+ return (hd == d)
+ ? unsmob_grob (me->get_object ("note-head"))
+ : 0;
+ }
+
Item *it = dynamic_cast<Spanner*> (me)->get_bound (d);
if (Note_head::has_interface (it))
return it;
{
Grob *me = unsmob_grob (smob);
Grob *yparent = me->get_parent (Y_AXIS);
- if (Tie_column::has_interface (yparent)
+ if ((Tie_column::has_interface (yparent)
+ || Semi_tie_column::has_interface (yparent))
&& unsmob_grob_array (yparent->get_object ("ties"))
&& unsmob_grob_array (yparent->get_object ("ties"))->size () > 1)
{
#
-$(outdir)/emmentaler-%.otf $(outdir)/emmentaler-%.svg: $(outdir)/emmentaler-%.pe $(outdir)/feta%.pfa $(outdir)/feta-alphabet%.pfa $(outdir)/parmesan%.pfa
+$(outdir)/emmentaler-%.otf $(outdir)/emmentaler-%.svg: $(outdir)/emmentaler-%.pe $(outdir)/feta%.pfa $(outdir)/feta-alphabet%.pfa $(outdir)/parmesan%.pfa $(outdir)/feta%.otf-table $(outdir)/feta%.otf-gtable
cd $(outdir) && $(FONTFORGE) -script $(notdir $(basename ,$@).pe)
-$(outdir)/aybabtu.otf $(outdir)/aybabtu.svg: $(outdir)/aybabtu.pe $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfa)
+$(outdir)/aybabtu.otf $(outdir)/aybabtu.svg: $(outdir)/aybabtu.pe $(foreach s,$(BRACES),$(outdir)/feta-braces-$(s).pfa) $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
cd $(outdir) && $(FONTFORGE) -script aybabtu.pe
-rm -f $(outdir)/*.scale.{pfa,afm}
tree-regen:
${MAKE} -C $(top-build-dir) link-mf-tree
-debian-mirror=http://ftp.us.debian.org
-debian-package =lilypond_$(TOPLEVEL_VERSION)-1_i386.deb
-$(outdir)/$(debian-package):
- wget --passive-ftp -P $(outdir) $(debian-mirror)/debian/pool/main/l/lilypond/$(debian-package)
-
-redhat-package=lilypond-$(TOPLEVEL_VERSION)-1.i386.rpm
-$(outdir)/$(redhat-package):
- wget --passive-ftp -P $(outdir) http://lilypond.org/download/binaries/Fedora-4/$(redhat-package)
-
##
## todo: this also depends on .tfm, FIXME.
$(outdir)/%.lisp $(outdir)/%.otf-gtable $(outdir)/%.enc $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log $(outdir)/%.tfm
$(PYTHON) $(buildscript-dir)/mf-to-table.py --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) --lisp=$(outdir)/$(<F:.log=.lisp) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --enc $(outdir)/$(<F:.log=.enc) --tex $(outdir)/$(<F:.log=.tex) $<
-fontdir: $(addprefix $(outdir)/, lilypond.map lilypond.sfd private-fonts fonts.scale fonts.dir Fontmap.lily)
-
-
local-clean:
rm -f mfplain.mem mfplain.log
rm -f *.tfm *.log
. (
(stencil . ,ly:tie::print)
(control-points . ,ly:semi-tie::calc-control-points)
- (direction . ,ly:semi-tie::calc-direction)
+ (direction . ,ly:tie::calc-direction)
(details . ((ratio . 0.333)
(height-limit . 1.0)))
+ (head-direction . ,LEFT)
(thickness . 1.0)
(meta . ((class . Item)
(interfaces . (semi-tie-interface))
. (
(stencil . ,ly:tie::print)
(control-points . ,ly:semi-tie::calc-control-points)
- (direction . ,ly:semi-tie::calc-direction)
+ (direction . ,ly:tie::calc-direction)
(details . ((ratio . 0.333)
(height-limit . 1.0)))
(thickness . 1.0)
+ (head-direction . ,RIGHT)
(meta . ((class . Item)
(interfaces . (semi-tie-interface))
))
. (
(X-extent . #f)
(Y-extent . #f)
+ (direction . ,ly:tie::calc-direction)
(head-direction . ,RIGHT)
+
(positioning-done . ,ly:semi-tie-column::calc-positioning-done)
(meta . ((class . Item)
(interfaces . (semi-tie-column-interface))