From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Mon, 19 Dec 2005 16:56:38 +0000 (+0000)
Subject: * lily/tuplet-bracket.cc (print): suicide if no control-points.
X-Git-Tag: release/2.7.24~1
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=55a66be7325a00f803b7fd6aaf3dbbbf9b2aeb37;p=lilypond.git

* 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.
---

diff --git a/ChangeLog b/ChangeLog
index df4c710624..71bc3207a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-12-19  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+	* 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<Offset> 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)