2 part-combine-engraver.cc -- implement PC-engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
8 Han-Wen Nienhuys <hanwen@xs4all.nl>
12 #include "engraver.hh"
13 #include "text-item.hh"
14 #include "note-head.hh"
16 #include "side-position-interface.hh"
17 #include "multi-measure-rest.hh"
19 class Part_combine_engraver : public Engraver
21 TRANSLATOR_DECLARATIONS (Part_combine_engraver);
24 virtual void acknowledge_grob (Grob_info);
25 virtual void process_music ();
26 virtual void stop_translation_timestep ();
27 virtual bool try_music (Music *);
34 Part_combine_engraver::try_music (Music*m)
40 Part_combine_engraver::Part_combine_engraver ()
47 Part_combine_engraver::process_music ()
50 && to_boolean (get_property ("printPartCombineTexts")))
52 SCM what = event_->get_property ("part-combine-status");
54 if (what == ly_symbol2scm ("solo1"))
55 text = get_property ("soloText");
56 else if (what == ly_symbol2scm ("solo2"))
57 text = get_property ("soloIIText");
58 else if (what == ly_symbol2scm ("unisono"))
59 text = get_property ("aDueText");
61 if (Text_interface::markup_p (text))
63 text_ = make_item ("CombineTextScript", event_->self_scm () );
64 text_->set_property ("text", text);
70 Part_combine_engraver::acknowledge_grob (Grob_info i)
74 if (Note_head::has_interface (i.grob_))
77 Side_position_interface::add_support (t, i.grob_);
78 if (Side_position_interface::get_axis (t) == X_AXIS
79 && !t->get_parent (Y_AXIS))
80 t->set_parent (i.grob_, Y_AXIS);
82 if (Stem::has_interface (i.grob_))
84 Side_position_interface::add_support (text_, i.grob_);
90 Part_combine_engraver::stop_translation_timestep ()
96 ADD_TRANSLATOR (Part_combine_engraver,
97 /* descr */ "Part combine engraver for orchestral scores: "
98 "Print markings a2, Solo, Solo II, and unisono ",
99 /* creats*/ "CombineTextScript",
100 /* accepts */ "part-combine-event",
101 /* acks */ "multi-measure-rest-interface "
102 "slur-interface stem-interface note-head-interface"
103 ,/* reads */ "printPartCombineTexts",