2009/6/14 Reinhold Kainhofer <[email protected]>:

> 2) If I have extender lines turned on, it is not possible to print markup as a
> figure inside the Staff context. If I try this, I always get the same extender
> warning and no figure is shown:
> Programmierfehler: must have Item for spanner bound of BassFigureContinuation

I think the only solution for this is to patch the
Figured_bass_engraver (see attached patch).

Regards,
Neil
From 7f3126eae268432298db41a18a6228ca3ad6d0bf Mon Sep 17 00:00:00 2001
From: Neil Puttock <[email protected]>
Date: Sun, 14 Jun 2009 22:28:44 +0100
Subject: [PATCH] Make figured bass markup work when using extenders.

---
 lily/figured-bass-engraver.cc |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc
index f9ed332..f62b6b0 100644
--- a/lily/figured-bass-engraver.cc
+++ b/lily/figured-bass-engraver.cc
@@ -31,6 +31,7 @@ struct Figure_group
   SCM augmented_;
   SCM diminished_;
   SCM augmented_slash_;
+  SCM text_;
   
   Item *figure_item_; 
   Stream_event *current_event_;
@@ -46,6 +47,7 @@ struct Figure_group
     augmented_ = SCM_EOL;
     diminished_ = SCM_EOL;
     augmented_slash_ = SCM_EOL;
+    text_ = SCM_EOL;
     group_ = 0;
     current_event_ = 0;
   }
@@ -63,7 +65,9 @@ struct Figure_group
       && ly_is_equal (diminished_,
 		      current_event_->get_property ("diminished"))
       && ly_is_equal (augmented_slash_,
-		      current_event_->get_property ("augmented-slash"));
+		      current_event_->get_property ("augmented-slash"))
+      && ly_is_equal (text_,
+		      current_event_->get_property ("text"));
   }
 };
 
@@ -106,6 +110,7 @@ Figured_bass_engraver::derived_mark () const
       scm_gc_mark (groups_[i].augmented_);
       scm_gc_mark (groups_[i].diminished_);
       scm_gc_mark (groups_[i].augmented_slash_);
+      scm_gc_mark (groups_[i].text_);
     }
 }
 
@@ -177,10 +182,12 @@ Figured_bass_engraver::listen_bass_figure (Stream_event *ev)
   if (to_boolean (get_property ("useBassFigureExtenders")))
     {
       SCM fig = ev->get_property ("figure");
+      SCM txt = ev->get_property ("text");
       for (vsize i = 0; i < groups_.size (); i++)
 	{
 	  if (!groups_[i].current_event_
-	      && ly_is_equal (groups_[i].number_, fig))
+	      && (ly_is_equal (groups_[i].number_, fig)
+		  || ly_is_equal (groups_[i].text_, txt)))
 	    {
 	      groups_[i].current_event_ = ev;
 	      groups_[i].force_no_continuation_
@@ -366,6 +373,7 @@ Figured_bass_engraver::process_music ()
 	  groups_[i].augmented_ = SCM_BOOL_F;
 	  groups_[i].diminished_ = SCM_BOOL_F;
 	  groups_[i].augmented_slash_ = SCM_BOOL_F;
+	  groups_[i].text_ = SCM_BOOL_F;
 	}
     }
 
@@ -472,8 +480,9 @@ Figured_bass_engraver::create_grobs ()
 	  group.augmented_ = group.current_event_->get_property ("augmented");
 	  group.diminished_ = group.current_event_->get_property ("diminished");
 	  group.augmented_slash_ = group.current_event_->get_property ("augmented-slash");
+	  group.text_ = group.current_event_->get_property ("text");
 
-	  SCM text = group.current_event_->get_property ("text");
+	  SCM text = group.text_;
 	  if (!Text_interface::is_markup (text)
 	      && ly_is_procedure (proc))
 	    {
-- 
1.6.0.4

_______________________________________________
lilypond-user mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to