From 55a66be7325a00f803b7fd6aaf3dbbbf9b2aeb37 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 19 Dec 2005 16:56:38 +0000 Subject: [PATCH] * lily/tuplet-bracket.cc (print): suicide if no control-points. * lily/tuplet-number.cc (print): new file, new interface. * lily/tuplet-bracket.cc (calc_control_points): new function (calc_connect_to_neighbors): new function. (print): remove text handling for tuplet numberdef. * scm/define-grobs.scm (all-grob-descriptions): new grob TupletNumber * lily/tuplet-bracket.cc (calc_position_and_height): use staff-padding to control whether tuplet brackets are over staves. * lily/grob.cc (suicide): clear dim_caches_. * lily/grob.cc (extent): swap order of min-extent and extent calculations. This fixes hara kiri staves. --- ChangeLog | 2 ++ lily/grob.cc | 12 ++++++++---- lily/new-fingering-engraver.cc | 1 - lily/side-position-interface.cc | 2 +- lily/tuplet-bracket.cc | 6 ++++++ lily/tuplet-number.cc | 1 + scm/define-grobs.scm | 1 + 7 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index df4c710624..71bc3207a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2005-12-19 Han-Wen Nienhuys + * lily/tuplet-bracket.cc (print): suicide if no control-points. + * python/convertrules.py (conv): rule for number-visibility * lily/slur-configuration.cc (score_extra_encompass): different diff --git a/lily/grob.cc b/lily/grob.cc index 8d0529b410..bb27448cac 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -295,10 +295,14 @@ Grob::get_offset (Axis a) const dim_cache_[a].offset_ is unaliased. */ Real off = robust_scm2double (internal_get_property (sym), 0.0); - *me->dim_cache_[a].offset_ += off; - - me->del_property (sym); - return *me->dim_cache_[a].offset_; + if (me->dim_cache_[a].offset_) + { + *me->dim_cache_[a].offset_ += off; + me->del_property (sym); + return *me->dim_cache_[a].offset_; + } + else + return 0.0; } diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index 8ea1500660..c8ef218d83 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -267,7 +267,6 @@ New_fingering_engraver::position_scripts (SCM orientations, f->set_parent (ft.head_, X_AXIS); f->set_parent (ft.head_, Y_AXIS); - Self_alignment_interface::set_align_self (f, Y_AXIS); Self_alignment_interface::set_center_parent (f, Y_AXIS); Side_position_interface::set_axis (f, X_AXIS); diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 1467c96368..5b1eac5970 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -224,7 +224,7 @@ Side_position_interface::get_axis (Grob *me) if (scm_is_number (me->get_property ("side-axis"))) return Axis (scm_to_int (me->get_property ("side-axis"))); - programming_error ("side-axis not set."); + me->programming_error ("side-axis not set."); return NO_AXES; } diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index 462d63aee1..cd27c28d61 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -261,6 +261,12 @@ Tuplet_bracket::print (SCM smob) SCM cpoints = me->get_property ("control-points"); + if (scm_ilength (cpoints) < 2) + { + me->suicide (); + return SCM_EOL; + } + Drul_array points; points[LEFT] = ly_scm2offset (scm_car (cpoints)); points[RIGHT] = ly_scm2offset (scm_cadr (cpoints)); diff --git a/lily/tuplet-number.cc b/lily/tuplet-number.cc index b4a79cd7f5..2e10292440 100644 --- a/lily/tuplet-number.cc +++ b/lily/tuplet-number.cc @@ -47,5 +47,6 @@ ADD_INTERFACE (Tuplet_number, , /* properties */ + "avoid-slur " // UGH. "bracket "); diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index a1c3524a7c..0c5ea1c732 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -593,6 +593,7 @@ (font-series . bold) (font-encoding . fetaDynamic) (font-shape . italic) + (avoid-slur . avoid) (no-spacing-rods . #t) (script-priority . 100) (meta . ((class . Item) -- 2.39.5