]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/lyric-phrasing-engraver.hh
patch::: 1.5.40.jcn1
[lilypond.git] / lily / include / lyric-phrasing-engraver.hh
index e00a1c159cb622db9121a68407b7aaac0b6e329a..8a336e55ae59c2d4eeaccc19d2beadcb375f0960 100644 (file)
@@ -23,31 +23,30 @@ class Syllable_group;
    right aligning end of phrases, centering others under their notes.
  */
 
-
 /* 
 * Build an engraver that catches noteheads and lyrics.
 
-(It needs to be in a context above Staff and Lyrics, eg. in Score
+ (It needs to be in a context above Staff and Lyrics, eg. in Score
 context.)
 
 * Determine which heads belong to which lyrics
 
-(eg. by looking at the names of their originating contexts, or maybe
+ (eg. by looking at the names of their originating contexts, or maybe
 some \properties)
 
 * Attach the lyrics to the appropriate heads
 
-(by doing lyric->set_parent (head, X_AXIS), that will fix the current
+ (by doing lyric->set_parent (head, X_AXIS), that will fix the current
 noteheadwidth guessing kludge)
 
 * Check if the lyric syllables end or start a phrase.
 
-(eg. check if the syllable ends with punctuation, and remember that
+ (eg. check if the syllable ends with punctuation, and remember that
 fact for the next one.)
 
 * Adjust their alignment accordingly. 
 
-(eg. by doing lyric->add_offset_callback(centered_on_parent,X_AXIS)
+ (eg. by doing lyric->add_offset_callback (centered_on_parent,X_AXIS)
 and setting self-alignment-X)
 
 * Add a property to switch on/off the engraver (for multi stanza
@@ -63,63 +62,63 @@ for melismas as well.
 class Lyric_phrasing_engraver : public Engraver 
 {
 protected:
-  virtual void acknowledge_element(Score_element_info);
-  virtual void process_acknowledged ();
-  virtual void do_pre_move_processing();
-  
+  virtual void acknowledge_grob (Grob_info);
+  virtual void create_grobs ();
+  virtual void stop_translation_timestep ();
+  virtual void finalize ();  
 private:
-  void record_notehead(const String &context_id, Score_element * notehead);
-  void record_lyric(const String &context_id, Score_element * lyric);
-  void record_melisma(const String &context_id);
-  void record_extender(const String &context_id, Score_element * extender);
-  Syllable_group * lookup_context_id(const String &context_id);
+  void record_notehead (const String &context_id, Grob * notehead);
+  void record_lyric (const String &context_id, Grob * lyric);
+  void record_melisma (const String &context_id);
+  void record_extender (const String &context_id, Grob * extender);
+  Syllable_group * lookup_context_id (const String &context_id);
 
 public:
-  Lyric_phrasing_engraver ();
+
   ~Lyric_phrasing_engraver ();
-  VIRTUAL_COPY_CONS (Translator);
+  TRANSLATOR_DECLARATIONS(  Lyric_phrasing_engraver);
 
 private:
   /** association list of Syllable_group smobs
   */
   Protected_scm voice_alist_;
-  Score_element * any_notehead_l_;
+  Grob * any_notehead_l_;
 };
 
 
 class Syllable_group
 {
   bool first_in_phrase_b_;
-  Score_element * notehead_l_;
-  Link_array<Score_element> lyric_list_;
-  Score_element * longest_lyric_l_;
-  Score_element * shortest_lyric_l_;
+  Grob * notehead_l_;
+  Link_array<Grob> lyric_list_;
+  Grob * longest_lyric_l_;
+  Grob * shortest_lyric_l_;
   int alignment_i_;
   bool melisma_b_;
   Real group_translation_f_;
 public:
-  static SCM make_entry();
-  void set_first_in_phrase(bool f);
-  void set_notehead(Score_element * notehead);
-  void add_lyric(Score_element * lyric);
-  void add_extender(Score_element * extender);
-  void set_melisma() { melisma_b_ = true; }
-  bool get_melisma() { return melisma_b_; }
-  int lyric_count() { return lyric_list_.size(); }
-  void clear();
-  bool is_empty();
-  bool set_lyric_align(const char *punc, Score_element *default_notehead_l);
-  void adjust_melisma_align();
-  int appropriate_alignment(const char *punc);
-  Real amount_to_translate();
-  void next_lyric();
-  void copy(Syllable_group *);
+  static SCM make_entry ();
+  void set_first_in_phrase (bool f);
+  void set_notehead (Grob * notehead);
+  void add_lyric (Grob * lyric);
+  void add_extender (Grob * extender);
+  void set_melisma () { melisma_b_ = true; }
+  bool get_melisma () { return melisma_b_; }
+  int lyric_count () { return lyric_list_.size (); }
+  void clear ();
+  bool is_empty ();
+  bool set_lyric_align (const char *punc, Grob *default_notehead_l);
+  void adjust_melisma_align ();
+  int appropriate_alignment (const char *punc);
+  Real amount_to_translate ();
+  void next_lyric ();
+  void copy (Syllable_group *);
 private:
-  Syllable_group();
-  DECLARE_SIMPLE_SMOBS(Syllable_group,);
+  Syllable_group ();
+  DECLARE_SIMPLE_SMOBS (Syllable_group,);
 } ;
 
-Syllable_group * unsmob_voice_entry (SCM);
+DECLARE_UNSMOB(Syllable_group,voice_entry);
 
 
 #endif // LYRIC_PHRASING_ENGRAVER_HH