]> git.donarmstrong.com Git - lilypond.git/blob - lily/ledger-line-engraver.cc
* lily/ledger-line-engraver.cc: new file.
[lilypond.git] / lily / ledger-line-engraver.cc
1 /* 
2   ledger-line-engraver.cc --  implement Ledger_line_engraver=
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
7   
8 */
9
10
11 #include "group-interface.hh"
12 #include "spanner.hh"
13 #include "engraver.hh"
14
15 class Ledger_line_engraver : public Engraver
16 {
17   Spanner * span_;
18
19 public:
20   TRANSLATOR_DECLARATIONS (Ledger_line_engraver);
21
22 protected:
23   virtual void finalize ();
24   virtual void process_music ();
25   virtual void acknowledge_grob (Grob_info);
26 };
27
28 Ledger_line_engraver::Ledger_line_engraver()
29 {
30   span_ = 0;
31 }
32
33 void
34 Ledger_line_engraver::process_music ()
35 {
36   if (!span_)
37     {
38       span_ = make_spanner("LedgerLineSpanner", SCM_EOL);
39   
40       span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
41     }
42 }
43
44 void
45 Ledger_line_engraver::finalize ()
46 {
47   if (span_)
48     span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
49 }
50
51
52 void
53 Ledger_line_engraver::acknowledge_grob (Grob_info s)
54 {
55   Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"),
56                                      s.grob_);
57 }
58
59 ENTER_DESCRIPTION (Ledger_line_engraver,
60                    "Creates spanner to draw ledger lines",
61                    /* creats*/       "LedgerLineSpanner",
62                    /* accepts */     "",
63                    /* acks  */      "note-head-interface", // ledgered-interface? 
64                    /* reads */       "",
65                    /* write */       "")