]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/part-combine-engraver.cc
(measure_position): measure_position() is now a
[lilypond.git] / lily / part-combine-engraver.cc
index a941876ef3f798aceacea6a3f2e2e8716ca63131..6e4d63d12df9961207c384a6a6220483914c6ea7 100644 (file)
@@ -2,16 +2,14 @@
   part-combine-engraver.cc -- implement PC-engraver
 
   source file of the GNU LilyPond music typesetter
-  
-  (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
+
+  (c) 2000--2005 Jan Nieuwenhuizen <janneke@gnu.org>
 
   Han-Wen Nienhuys <hanwen@xs4all.nl>
-  
 */
 
 #include "engraver.hh"
-#include "item.hh"
-#include "text-item.hh"
+#include "text-interface.hh"
 #include "note-head.hh"
 #include "stem.hh"
 #include "side-position-interface.hh"
@@ -23,8 +21,8 @@ class Part_combine_engraver : public Engraver
 
 protected:
   virtual void acknowledge_grob (Grob_info);
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
+  PRECOMPUTED_VIRTUAL void process_music ();
+  PRECOMPUTED_VIRTUAL void stop_translation_timestep ();
   virtual bool try_music (Music *);
 private:
   Item *text_;
@@ -32,7 +30,7 @@ private:
 };
 
 bool
-Part_combine_engraver::try_music (Music*m)
+Part_combine_engraver::try_music (Music *m)
 {
   event_ = m;
   return true;
@@ -41,29 +39,28 @@ Part_combine_engraver::try_music (Music*m)
 Part_combine_engraver::Part_combine_engraver ()
 {
   text_ = 0;
-  event_  =0;
+  event_ 0;
 }
 
 void
 Part_combine_engraver::process_music ()
 {
   if (event_
-      && to_boolean (get_property ("soloADue")))
+      && to_boolean (get_property ("printPartCombineTexts")))
     {
       SCM what = event_->get_property ("part-combine-status");
       SCM text = SCM_EOL;
       if (what == ly_symbol2scm ("solo1"))
        text = get_property ("soloText");
-      else if (what== ly_symbol2scm ("solo2"))
+      else if (what == ly_symbol2scm ("solo2"))
        text = get_property ("soloIIText");
       else if (what == ly_symbol2scm ("unisono"))
        text = get_property ("aDueText");
 
-      if (Text_item::markup_p (text))
+      if (Text_interface::markup_p (text))
        {
-         text_ =  make_item ("CombineTextScript");
+         text_ = make_item ("CombineTextScript", event_->self_scm ());
          text_->set_property ("text", text);
-         announce_grob (text_, event_->self_scm ());
        }
     }
 }
@@ -73,38 +70,37 @@ Part_combine_engraver::acknowledge_grob (Grob_info i)
 {
   if (text_)
     {
-      if (Note_head::has_interface (i.grob_))
+      if (Note_head::has_interface (i.grob ()))
        {
-         Grob*t = text_;
-         Side_position_interface::add_support (t, i.grob_);
+         Grob *t = text_;
+         Side_position_interface::add_support (t, i.grob ());
          if (Side_position_interface::get_axis (t) == X_AXIS
              && !t->get_parent (Y_AXIS))
-           t->set_parent (i.grob_, Y_AXIS);
+           t->set_parent (i.grob (), Y_AXIS);
        }
-      if (Stem::has_interface (i.grob_))
+      if (Stem::has_interface (i.grob ()))
        {
-         Side_position_interface::add_support (text_, i.grob_);
+         Side_position_interface::add_support (text_, i.grob ());
        }
     }
 }
 
-void 
+void
 Part_combine_engraver::stop_translation_timestep ()
 {
-  if (text_)
-    {
-      typeset_grob (text_);
-      text_ = 0;
-    }
+  text_ = 0;
   event_ = 0;
 }
 
-ENTER_DESCRIPTION (Part_combine_engraver,
-/* descr */       "Part combine engraver for orchestral scores:                "
-                 "Print markings a2, Solo, Solo II, and unisono ",
-/* creats*/       "CombineTextScript",
-/* accepts */     "part-combine-event",
-/* acks  */       "multi-measure-rest-interface "
-"slur-interface stem-interface note-head-interface"
-,/* reads */       "soloADue",
-/* write */       "");
+#include "translator.icc"
+
+ADD_TRANSLATOR (Part_combine_engraver,
+               /* descr */ "Part combine engraver for orchestral scores:               "
+               "Print markings a2, Solo, Solo II, and unisono ",
+               /* creats*/ "CombineTextScript",
+               /* accepts */ "part-combine-event",
+               /* acks  */ "multi-measure-rest-interface "
+               "slur-interface stem-interface note-head-interface",
+               /* reads */ "printPartCombineTexts soloText soloIIText "
+               "aDueText",
+               /* write */ "");