2 chord-name-engraver.cc -- implement Chord_name_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1998--1999 Jan Nieuwenhuizen <janneke@gnu.org>
9 #include "chord-name-engraver.hh"
11 #include "musical-request.hh"
12 #include "paper-def.hh"
14 #include "paper-def.hh"
16 #include "dimensions.hh"
17 #include "text-item.hh"
19 ADD_THIS_TRANSLATOR (Chord_name_engraver);
21 Chord_name_engraver::Chord_name_engraver ()
29 Chord_name_engraver::acknowledge_element (Score_element_info i)
31 if (Note_req* n = dynamic_cast<Note_req*> (i.req_l_))
32 pitch_arr_.push (n->pitch_);
36 Chord_name_engraver::do_try_music (Music* m)
38 if (Note_req* n = dynamic_cast<Note_req*> (m))
40 pitch_arr_.push (n->pitch_);
43 if (Tonic_req* t = dynamic_cast<Tonic_req*> (m))
48 if (Inversion_req* i = dynamic_cast<Inversion_req*> (m))
53 if (Bass_req* b = dynamic_cast<Bass_req*> (m))
62 Chord_name_engraver::do_process_requests ()
64 if (text_p_arr_.size ())
66 if (!pitch_arr_.size ())
69 bool find_inversion_b = false;
70 SCM chord_inversion = get_property ("chordInversion", 0);
71 if (gh_boolean_p (chord_inversion))
72 find_inversion_b = gh_scm2bool (chord_inversion);
74 Chord chord = to_chord (pitch_arr_, tonic_req_, inversion_req_, bass_req_,
77 Text_item* item_p = new Text_item;
81 - switch on property, add american (?) chordNameStyle:
82 Chord::american_str (...)
84 SCM chordNameStyle = get_property ("chordNameStyle", 0);
85 if (chordNameStyle == "Banter")
86 item_p->text_str_ = chord.banter_str (inversion);
89 item_p->text_str_ = chord.banter_str ();
91 text_p_arr_.push (item_p);
92 announce_element (Score_element_info (item_p, 0));
96 Chord_name_engraver::do_pre_move_processing ()
98 for (int i=0; i < text_p_arr_.size (); i++)
100 typeset_element (text_p_arr_[i]);
102 text_p_arr_.clear ();