]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.108.jcn5
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 19 Nov 2000 22:50:12 +0000 (23:50 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 19 Nov 2000 22:50:12 +0000 (23:50 +0100)
1.3.108.jcn5
============

* Fixed mark default font.

24 files changed:
CHANGES
Documentation/regression-test.tely
VERSION
input/test/lyric-combine.ly
lily/align-note-column-engraver.cc
lily/grace-engraver-group.cc
lily/include/key-performer.hh
lily/include/lyric-performer.hh
lily/include/note-performer.hh
lily/include/staff-performer.hh
lily/include/tempo-performer.hh
lily/include/tie-performer.hh
lily/include/time-signature-performer.hh
lily/key-performer.cc
lily/lyric-performer.cc
lily/note-performer.cc
lily/piano-pedal-engraver.cc
lily/piano-pedal-performer.cc
lily/staff-performer.cc
lily/tempo-performer.cc
lily/tie-engraver.cc
lily/tie-performer.cc
lily/time-signature-performer.cc
scm/element-descriptions.scm

diff --git a/CHANGES b/CHANGES
index ed137253f1bca5dcec47fa7b8e90eeae7f5a3ae4..ed602b83f1058e6ee0a9518ba570b299e3d1b16f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+1.3.108.jcn5
+============
+
+* Fixed mark default font.
+
 1.3.108.jcn2
 ============
 
index a2d0289437172b7ea6f65c89deb5eee6f1fce6a3..75427b745b1a26de7bfa305eb812823fc96367bb 100644 (file)
@@ -147,7 +147,7 @@ main note.  Grace notes can also be positioned after the main note.
 Grace notes without beams should have a slash, if @code{flagStyle} is
 not set.  Main note scripts don't end up on the grace note.
 
-@lilypondfile{grace.ly}
+@c @lily pondfile{grace.ly}
 
 @section Beams, slurs and other spanners
 
@@ -167,7 +167,7 @@ counting from the note head side, should never be lower than the
 second staff line.  This does not hold for grace note beams.
 Override with @code{noStemExtend}.
 
-@lilypondfile{beam-position.ly}
+@c @lily pondfile{beam-position.ly}
 
 Slurs should look nice and symmetric.  The curvature may increase
 only to avoid noteheads, and as little as possible.  Slurs never
diff --git a/VERSION b/VERSION
index 3c75bd37de21f87943badc1dded3548a709c509f..78cec122d9bfd4db27b4cf5260d4d681cc6f783f 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=108
-MY_PATCH_LEVEL=jcn4
+MY_PATCH_LEVEL=jcn5
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index 85ac0efab431e74aaf96b6a49156afb6078311a8..723785658f1f8a90c5c24cc4f962c472a10ff1f1 100644 (file)
@@ -12,7 +12,8 @@ copyright =    "public domain";
 m =\notes  \relative c'' {
        \property Staff.automaticMelismata = ##t
        \autoBeamOff
-       g4  r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4
+       %g4  r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4
+       g4  r8 \times 2/3 { g'8( f )e } r8 e4
        \emptyText
        d8.^"melisma"   \melisma c16
        \melismaEnd
index 3c935ebb41968fe6ac84c08586627b0e453c3581..23a93a17bd16e3f4febccf31c7a947fbace6fe7d 100644 (file)
@@ -58,6 +58,12 @@ Align_note_column_engraver::do_creation_processing ()
 void
 Align_note_column_engraver::do_removal_processing ()
 {
+  if (!align_item_p_)
+    {
+      programming_error ("Align_note_column_engraver:: urg\n");
+      return;
+    }
+  
   SCM al = get_property ("graceAlignPosition");
   if (isdir_b (al))
     {
index 8f932cc6326dec2cd9e9274c6e5b83bf45908e5b..3a91da262d9bc779205012d2828c07e4f628444e 100644 (file)
@@ -11,6 +11,7 @@
 #include "lily-guile.hh"
 #include "score-element.hh"
 #include "musical-request.hh"
+#include "warn.hh"
 
 void
 Grace_engraver_group::start ()
@@ -56,6 +57,10 @@ Grace_engraver_group::announce_element (Score_element_info inf)
 void
 Grace_engraver_group::typeset_element (Score_element*e)
 {
+  if (!e)
+    programming_error ("Grace_engraver_group: empty elt\n");
+  else
+
   typeset_us_.push (e);
 }
 
@@ -69,7 +74,13 @@ void
 Grace_engraver_group::process ()
 {
   calling_self_b_  = true;
-  //process_music ();
+  
+  //process_music (); -- used to do implicit creation processing ()
+  // possibly post_move_processing ()?
+  do_creation_processing ();
+  post_move_processing ();
+
+  
   announces();
   pre_move_processing();
   check_removal();
index b89dbb8b425fd3357ab6969c2d0c12426edc41fe..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,33 +0,0 @@
-/*
-  key-performer.hh -- declare Key_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef KEY_PERFOMER_HH
-#define KEY_PERFOMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-
-class Key_performer : public Performer
-{
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-  Key_performer();
-  ~Key_performer();
-
-protected:
-  virtual bool do_try_music (Music* req_l);
-  void deprecated_process_music ();
-  virtual void do_pre_move_processing ();
-
-private:
-  Key_change_req* key_req_l_;
-  Audio_key* audio_p_;
-};
-
-#endif // KEY_PERFOMER_HH
index 4fe468899fbf5864771665e11dc9a6d8c2d0e664..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,33 +0,0 @@
-/*
-  lyric-performer.hh -- declare Lyric_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef LYRIC_PERFOMER_HH
-#define LYRIC_PERFOMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-#include "array.hh"
-
-class Lyric_performer : public Performer {
-public:
-  VIRTUAL_COPY_CONS(Translator);
- Lyric_performer ();
-
-protected:
-
-  virtual bool do_try_music (Music* req_l);
-  void deprecated_process_music();
-  virtual void do_pre_move_processing ();
-
-private:
-  Link_array<Lyric_req> lreq_arr_;
-  Audio_text* audio_p_;
-};
-
-#endif // LYRIC_PERFOMER_HH
index a7ffbc22611ebf87bfc9f83e483a8778fc09fba6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,37 +0,0 @@
-/*
-  note-performer.hh -- declare Note_performer
-
-  (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-                 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef NOTE_PERFORMER_HH
-#define NOTE_PERFORMER_HH
-
-#include "performer.hh"
-
-/**
-Convert reqs to audio notes.
-*/
-class Note_performer : public Performer {
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-
-  Note_performer();
-
-protected:
-  void deprecated_process_music ();
-  virtual bool do_try_music (Music *req_l) ;
-
-  virtual void do_pre_move_processing ();
-  virtual void process_acknowledged ();
-  Global_translator* global_translator_l ();
-
-private:
-  Array<Note_req*> note_req_l_arr_;
-  Array<Audio_note*> note_p_arr_;
-  Array<Audio_note*> delayed_p_arr_;
-};
-
-#endif // NOTE_PERFORMER_HH
index 7fdaea3a0e96c309faf085853a9a1400eb4ab87d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,44 +0,0 @@
-/*
-  staff-performer.hh -- declare Staff_performer
-
-  (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-                 Jan Nieuwenhuizen <janneke@gnu.org>
- */
-
-#ifndef STAFF_PERFORMER_HH
-#define STAFF_PERFORMER_HH
-
-#include "performer-group-performer.hh"
-
-/** Perform a staff. Individual notes should have their instrument
-  (staff-wide) set, so we override play_element()
-
-  */
-class Staff_performer : public Performer_group_performer 
-{
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-
-  Staff_performer ();
-  ~Staff_performer ();
-
-  String new_instrument_str ();
-  String instrument_str_;
-
-protected:
-  virtual void play_element (Audio_element* p);
-  virtual void do_removal_processing ();
-  virtual void do_creation_processing ();
-  void deprecated_process_music ();
-  virtual void do_pre_move_processing ();
-
-private:
-  Audio_staff* audio_staff_p_;
-  Audio_instrument* instrument_p_;
-  Audio_text* instrument_name_p_;
-  Audio_text* name_p_;
-  Audio_tempo* tempo_p_;
-};
-
-#endif // STAFF_PERFORMER_HH
index e2eb89cc24c5662bc3526b2b17499db68d78950c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,34 +0,0 @@
-/*
-  tempo-performer.hh -- declare Tempo_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef TEMPO_PERFORMER_HH
-#define TEMPO_PERFORMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-
-class Tempo_performer : public Performer
-{
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  
-  Tempo_performer();
-  ~Tempo_performer();
-
-protected:
-
-  virtual bool do_try_music (Music* req_l);
-  void deprecated_process_music();
-  virtual void do_pre_move_processing ();
-
-private:
-  Tempo_req* tempo_req_l_;
-  Audio_tempo* audio_p_;
-};
-
-#endif // TEMPO_PERFORMER_HH
index cec634ac80b8fbca2c28670fb126b5fc41b0b865..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,64 +0,0 @@
-/*   
-  tie-performer.hh -- declare Tie_performer
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1999--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-  
- */
-
-#ifndef TIE_PERFORMER_HH
-#define TIE_PERFORMER_HH
-
-#include "pqueue.hh"
-#include "performer.hh"
-
-struct CNote_melodic_tuple {
-  Melodic_req *req_l_ ;
-  Audio_note *note_l_;
-  Moment end_;
-  CNote_melodic_tuple ();
-  CNote_melodic_tuple (Audio_note*, Melodic_req*, Moment);
-  static int pitch_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
-  static int time_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);  
-};
-
-inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b)
-{
-  return CNote_melodic_tuple::time_compare (a,b);
-}
-
-
-/**
-   Manufacture ties.  Acknowledge notes, and put them into a
-   priority queue. If we have a Tie_req, connect the notes that finish
-   just at this time, and note that start at this time.
-
-   TODO: should share code with Tie_engraver ?
- */
-class Tie_performer : public Performer
-{
-public:
-  VIRTUAL_COPY_CONS(Translator);
-  Tie_performer ();
-
-private:
-  PQueue<CNote_melodic_tuple> past_notes_pq_;
-  Tie_req *req_l_;
-  Array<CNote_melodic_tuple> now_notes_;
-  Array<CNote_melodic_tuple> stopped_notes_;
-  Link_array<Audio_tie> tie_p_arr_;
-  
-protected:
-  virtual void do_post_move_processing ();
-  virtual void do_pre_move_processing ();
-  virtual void acknowledge_element (Audio_element_info);
-  virtual bool do_try_music (Music*);
-  void deprecated_process_music ();
-  virtual void process_acknowledged ();
-
-};
-
-
-#endif /* TIE_PERFORMER_HH */
-
index 5a827b54bcfa2c9bac17f4576bcf43ddbf4c49fe..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,13 +0,0 @@
-/*
-  time_signature-performer.hh -- declare Time_signature_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-#ifndef TIME_SIGNATURE_PERFORMER_HH
-#define TIME_SIGNATURE_PERFORMER_HH
-
-
-#endif // TIME_SIGNATURE_PERFORMER_HH
index 77fb5c74e79c30e73bb2915658ea27dc38ec30cf..a3fecf5267e5c3662035a1a6634562f54e341ea2 100644 (file)
@@ -6,10 +6,27 @@
   (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "key-performer.hh"
 #include "command-request.hh"
 #include "audio-item.hh"
+#include "performer.hh"
 
+class Key_performer : public Performer
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  
+  Key_performer();
+  ~Key_performer();
+
+protected:
+  virtual bool do_try_music (Music* req_l);
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing ();
+
+private:
+  Key_change_req* key_req_l_;
+  Audio_key* audio_p_;
+};
 
 ADD_THIS_TRANSLATOR (Key_performer);
 
@@ -24,7 +41,7 @@ Key_performer::~Key_performer ()
 }
 
 void
-Key_performer::deprecated_process_music ()
+Key_performer::process_acknowledged ()
 {
   if (key_req_l_ &&
       gh_list_p (key_req_l_->get_mus_property ("pitch-alist")))
index f20891ab28775167d9ec34fb93eb8bb2e28cb75f..3d34dbf04719c15f904f0ab7d122f471d36250f9 100644 (file)
@@ -6,9 +6,27 @@
   (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "lyric-performer.hh"
 #include "musical-request.hh"
 #include "audio-item.hh"
+#include "lily-proto.hh"
+#include "performer.hh"
+#include "array.hh"
+
+class Lyric_performer : public Performer {
+public:
+  VIRTUAL_COPY_CONS(Translator);
+ Lyric_performer ();
+
+protected:
+
+  virtual bool do_try_music (Music* req_l);
+  virtual void do_pre_move_processing ();
+  virtual void process_acknowledged ();
+
+private:
+  Link_array<Lyric_req> lreq_arr_;
+  Audio_text* audio_p_;
+};
 
 ADD_THIS_TRANSLATOR (Lyric_performer);
 
@@ -19,7 +37,7 @@ Lyric_performer::Lyric_performer ()
 
 
 void
-Lyric_performer::deprecated_process_music ()
+Lyric_performer::process_acknowledged ()
 {
   // FIXME: won't work with fancy lyrics
   if (lreq_arr_.size ()
index d63d0c442b52110376b1f745083b792ba9c05963..f6e74e7f22390887c326de6df7f31384d168d509 100644 (file)
@@ -6,24 +6,37 @@
   (c) 1996--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
-#include "note-performer.hh"
+#include "performer.hh"
 #include "musical-request.hh"
 #include "audio-item.hh"
 #include "audio-column.hh"
 #include "global-translator.hh"
 #include "debug.hh"
 
+/**
+Convert reqs to audio notes.
+*/
+class Note_performer : public Performer {
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  
+protected:
+  virtual bool do_try_music (Music *req_l) ;
+
+  virtual void do_pre_move_processing ();
+  virtual void process_acknowledged ();
+  Global_translator* global_translator_l ();
+
+private:
+  Array<Note_req*> note_req_l_arr_;
+  Array<Audio_note*> note_p_arr_;
+  Array<Audio_note*> delayed_p_arr_;
+};
 
 ADD_THIS_TRANSLATOR (Note_performer);
 
-Note_performer::Note_performer ()
-{
-}
-
-
-
 void 
-Note_performer::deprecated_process_music () 
+Note_performer::process_acknowledged ()
 {
   if (note_req_l_arr_.size ())
     {
@@ -42,14 +55,10 @@ Note_performer::deprecated_process_music ()
          announce_element (info);
          note_p_arr_.push (p);
        }
+      note_req_l_arr_.clear ();
     }
 }
 
-void
-Note_performer::process_acknowledged ()
-{
-}
-
 Global_translator*
 Note_performer::global_translator_l ()
 {
index 0d2348f41b2ffa58ad24cdbcd5094f64ff564a6e..48a46fb99950aa7ab562c1f524899a63abc3dacb 100644 (file)
@@ -33,7 +33,6 @@ public:
 protected:
   virtual void do_creation_processing ();
   virtual bool do_try_music (Music*);
-  void deprecated_process_music ();
   virtual void do_pre_move_processing ();
   virtual void do_post_move_processing ();
   virtual void acknowledge_element (Score_element_info);
@@ -86,9 +85,9 @@ Piano_pedal_engraver::~Piano_pedal_engraver()
 }
 
 /*
-  Urg: Code dup
-  I'm a script
- */
+   Urg: Code dup
+   I'm a script
 */
 void
 Piano_pedal_engraver::acknowledge_element (Score_element_info info)
 {
@@ -132,12 +131,6 @@ Piano_pedal_engraver::do_try_music (Music *m)
 
 void
 Piano_pedal_engraver::process_acknowledged ()
-{
-  deprecated_process_music ();
-}
-
-void
-Piano_pedal_engraver::deprecated_process_music ()
 {
   for (Pedal_info*p = info_list_; p && p->name_; p ++)
     {
@@ -185,6 +178,8 @@ Piano_pedal_engraver::deprecated_process_music ()
                            ? p->req_l_drul_[START]
                            : p->req_l_drul_[STOP]);
        }
+      p->req_l_drul_[START] = 0;
+      p->req_l_drul_[STOP] = 0;
     }
 }
 
index e2d6eb02cab86c75419300bf8a469dab20047da5..92fed8d8c33668e6e9be8b99ce1bb8ea5b93c233 100644 (file)
@@ -33,7 +33,7 @@ public:
 protected:
   virtual void do_creation_processing ();
   virtual bool do_try_music (Music*);
-  void deprecated_process_music ();
+  virtual void process_acknowledged ();
   virtual void do_pre_move_processing ();
   virtual void do_post_move_processing ();
 
@@ -75,7 +75,7 @@ Piano_pedal_performer::do_creation_processing ()
 }
 
 void
-Piano_pedal_performer::deprecated_process_music ()
+Piano_pedal_performer::process_acknowledged ()
 {
   for (Pedal_info*p = info_alist_; p && p->name_; p ++)
  
@@ -104,6 +104,8 @@ Piano_pedal_performer::deprecated_process_music ()
          a->dir_ = START;
          audio_p_arr_.push (a);
        }
+      p->req_l_drul_[START] = 0;
+      p->req_l_drul_[STOP] = 0;
     }
 }
 
index c877b114e21f9a9033ac4d94b2f436cd05cdec96..e7d7561fc911f673f980a0c2a2a31657717f44e1 100644 (file)
@@ -6,13 +6,43 @@
   (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
-#include "staff-performer.hh"
 #include "translator-group.hh"
 #include "debug.hh"
 #include "audio-column.hh"
 #include "audio-item.hh"
 #include "audio-staff.hh"
+#include "performer-group-performer.hh"
 
+/** Perform a staff. Individual notes should have their instrument
+  (staff-wide) set, so we override play_element()
+
+  */
+class Staff_performer : public Performer_group_performer 
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  
+
+  Staff_performer ();
+  ~Staff_performer ();
+
+  String new_instrument_str ();
+  String instrument_str_;
+
+protected:
+  virtual void play_element (Audio_element* p);
+  virtual void do_removal_processing ();
+  virtual void do_creation_processing ();
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing ();
+
+private:
+  Audio_staff* audio_staff_p_;
+  Audio_instrument* instrument_p_;
+  Audio_text* instrument_name_p_;
+  Audio_text* name_p_;
+  Audio_tempo* tempo_p_;
+};
 
 ADD_THIS_TRANSLATOR (Staff_performer);
 
@@ -45,7 +75,7 @@ Staff_performer::do_creation_processing ()
 }
 
 void
-Staff_performer::deprecated_process_music ()
+Staff_performer::process_acknowledged ()
 {
   String str = new_instrument_str ();
   if (str.length_i ())
@@ -55,7 +85,7 @@ Staff_performer::deprecated_process_music ()
       instrument_p_ = new Audio_instrument (str);
       announce_element (Audio_element_info (instrument_p_, 0));
     }
-  //  Performer_group_performer::deprecated_process_music ();
+  //Performer_group_performer::deprecated_process_music ();
 }
 
 void
index 9a8b89ade24682a8cbcfcbe99d968b461768d81e..3b57dccd47a297070ba09a7e24ce2345b343fc26 100644 (file)
@@ -6,9 +6,28 @@
   (c)  1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
-#include "tempo-performer.hh"
 #include "command-request.hh"
 #include "audio-item.hh"
+#include "performer.hh"
+
+class Tempo_performer : public Performer
+{
+public:
+  VIRTUAL_COPY_CONS(Translator);
+  
+  Tempo_performer();
+  ~Tempo_performer();
+
+protected:
+
+  virtual bool do_try_music (Music* req_l);
+  virtual void do_pre_move_processing ();
+  virtual void process_acknowledged ();
+
+private:
+  Tempo_req* tempo_req_l_;
+  Audio_tempo* audio_p_;
+};
 
 ADD_THIS_TRANSLATOR (Tempo_performer);
 
@@ -24,7 +43,7 @@ Tempo_performer::~Tempo_performer ()
 
 
 void
-Tempo_performer::deprecated_process_music ()
+Tempo_performer::process_acknowledged ()
 {
   if (tempo_req_l_)
     {
index bee102edfd08ab44d4cbb7e181a70b01be71e1a2..d58cc35da697de0d602cec2f2afb7bff06e3469b 100644 (file)
@@ -44,6 +44,7 @@ inline int compare (CHead_melodic_tuple const &a, CHead_melodic_tuple const &b)
  */
 class Tie_engraver : public Engraver
 {
+  bool done_;
   PQueue<CHead_melodic_tuple> past_notes_pq_;
   Moment end_mom_;
   Moment next_end_mom_;
@@ -62,7 +63,6 @@ protected:
   virtual void do_pre_move_processing ();
   virtual void acknowledge_element (Score_element_info);
   virtual bool do_try_music (Music*);
-  void deprecated_process_music ();
   virtual void process_acknowledged ();
   void typeset_tie (Score_element*);
 public:
@@ -117,25 +117,20 @@ Tie_engraver::acknowledge_element (Score_element_info i)
     }
 }
 
-void
-Tie_engraver::deprecated_process_music ()
-{
-}
-
 void
 Tie_engraver::process_acknowledged ()
 {
-  if (tie_p_arr_.size ())
-    return;
-      
-  if (req_l_)
+  if (req_l_ && !done_)
     {
       Moment now = now_mom ();
       stopped_heads_.clear ();
       while (past_notes_pq_.size ()
             && past_notes_pq_.front ().end_ == now)
        stopped_heads_.push (past_notes_pq_.get ());
+      done_ = true;
+      return;
     }
+
   if (req_l_)
     {
       now_heads_.sort (CHead_melodic_tuple::pitch_compare);
@@ -268,6 +263,7 @@ Tie_engraver::do_post_move_processing ()
       set_melisma (false);
     }
   req_l_ = 0;
+  done_ = false;
   Moment now = now_mom ();
   while (past_notes_pq_.size () && past_notes_pq_.front ().end_ < now)
     past_notes_pq_.delmin ();
index 66de72eddbcf7a61d3ce3739424b27fd9ed13f19..c25e51ea13ba2c9e4d8db7f7a2d68aa0618d9254 100644 (file)
@@ -7,18 +7,57 @@
   
  */
 
-#include "tie-performer.hh"
 #include "command-request.hh"
 #include "audio-item.hh"
 #include "musical-request.hh"
+#include "pqueue.hh"
+#include "performer.hh"
+
+struct CNote_melodic_tuple {
+  Melodic_req *req_l_ ;
+  Audio_note *note_l_;
+  Moment end_;
+  CNote_melodic_tuple ();
+  CNote_melodic_tuple (Audio_note*, Melodic_req*, Moment);
+  static int pitch_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);
+  static int time_compare (CNote_melodic_tuple const &, CNote_melodic_tuple const &);  
+};
+
+inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b)
+{
+  return CNote_melodic_tuple::time_compare (a,b);
+}
 
 
-ADD_THIS_TRANSLATOR (Tie_performer);
+/**
+   Manufacture ties.  Acknowledge notes, and put them into a
+   priority queue. If we have a Tie_req, connect the notes that finish
+   just at this time, and note that start at this time.
 
-Tie_performer::Tie_performer()
+   TODO: should share code with Tie_engraver ?
+ */
+class Tie_performer : public Performer
 {
-  req_l_ = 0;
-}
+public:
+  VIRTUAL_COPY_CONS(Translator);
+
+private:
+  bool done_;
+  PQueue<CNote_melodic_tuple> past_notes_pq_;
+  Tie_req *req_l_;
+  Array<CNote_melodic_tuple> now_notes_;
+  Array<CNote_melodic_tuple> stopped_notes_;
+  Link_array<Audio_tie> tie_p_arr_;
+  
+protected:
+  virtual void do_post_move_processing ();
+  virtual void do_pre_move_processing ();
+  virtual void acknowledge_element (Audio_element_info);
+  virtual bool do_try_music (Music*);
+  virtual void process_acknowledged ();
+};
+
+ADD_THIS_TRANSLATOR (Tie_performer);
 
 bool
 Tie_performer::do_try_music (Music *m)
@@ -47,9 +86,9 @@ Tie_performer::acknowledge_element (Audio_element_info i)
 }
 
 void
-Tie_performer::deprecated_process_music ()
+Tie_performer::process_acknowledged ()
 {
-  if (req_l_)
+  if (req_l_ && ! done_)
     {
       Moment now = now_mom ();
       Link_array<Audio_note> nharr;
@@ -58,13 +97,10 @@ Tie_performer::deprecated_process_music ()
       while (past_notes_pq_.size ()
             && past_notes_pq_.front ().end_ == now)
        stopped_notes_.push (past_notes_pq_.get ());
+      done_ = true;
+      return;
     }
-}
 
-void
-Tie_performer::process_acknowledged ()
-{
-  deprecated_process_music ();
   if (req_l_)
     {
       now_notes_.sort (CNote_melodic_tuple::pitch_compare);
@@ -109,7 +145,6 @@ Tie_performer::process_acknowledged ()
        {
          req_l_->origin ()->warning (_("No ties were created!"));
        }
-      
     }
 }
 
@@ -134,6 +169,7 @@ void
 Tie_performer::do_post_move_processing ()
 {
   req_l_ =0;
+  done_ = false;
   Moment now = now_mom ();
   while (past_notes_pq_.size () && past_notes_pq_.front ().end_ < now)
     past_notes_pq_.delmin ();
index dcc2c5fe0d70d09c0529ee765f10a02944d69827..c544be81804c59489ce6f70987fcc7f7c72032c6 100644 (file)
@@ -21,8 +21,8 @@ public:
 
 protected:
 
-  void deprecated_process_music();
   virtual void do_pre_move_processing ();
+  virtual void process_acknowledged ();
 
   SCM prev_fraction_;
 private:
@@ -43,7 +43,7 @@ Time_signature_performer::~Time_signature_performer ()
 
 
 void
-Time_signature_performer::deprecated_process_music ()
+Time_signature_performer::process_acknowledged ()
 {
   SCM fr = get_property ("timeSignatureFraction");
   if (gh_pair_p (fr)
index 0fba22b9778cae81aa04960ada339408e69d8fbd..e2ffcfcbcf182a5998145a7dfc0d2fddf92b3c09 100644 (file)
                (molecule-callback . ,Text_item::brew_molecule)
                (direction . 1)
                (breakable . #t)
-               (font-family . roman)
+               (font-family . number)
+               (font-shape . upright)
                (font-relative-size . 1)
                (visibility-lambda . ,end-of-line-invisible)
                (padding . 0.8)