]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/auto-beam-engraver.hh
6621ecce1ac3c8870a96b63100adc19fee728ac2
[lilypond.git] / lily / include / auto-beam-engraver.hh
1 /*   
2   auto-beam-engraver.hh -- declare Auto_beam_engraver
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 1999 Jan Nieuwenhuizen <janneke@gnu.org>
7   
8  */
9
10 #ifndef AUTO_BEAM_ENGRAVER_HH
11 #define AUTO_BEAM_ENGRAVER_HH
12
13 #include "engraver.hh"
14
15 class Auto_beam_engraver : public Engraver
16 {
17 public:
18   Auto_beam_engraver ();
19   VIRTUAL_COPY_CONS (Translator);
20
21 protected:
22   virtual bool do_try_music (Music*);
23   virtual void do_pre_move_processing ();
24   virtual void do_post_move_processing ();
25   virtual void do_removal_processing ();
26   virtual void acknowledge_element (Score_element_info);
27   virtual void do_process_requests ();
28   virtual void process_acknowledged ();
29   virtual void do_creation_processing ();
30 private:
31   void begin_beam ();
32   void consider_end_and_begin (Moment test_mom);
33   Beam* create_beam_p ();
34   void end_beam ();
35   void junk_beam ();
36   bool same_grace_state_b (Score_element* e);
37   void typeset_beam ();
38
39   Moment shortest_mom_;
40   Beam *finished_beam_p_;
41   Array<Stem*>* stem_l_arr_p_;
42   
43   Moment last_add_mom_;
44   Moment extend_mom_;
45
46
47   Moment beam_start_moment_;
48   Moment beam_start_location_;
49   
50   Timing_translator * timer_l_;
51   // We act as if beam were created, and start a grouping anyway.
52   Beaming_info_list*grouping_p_;  
53   Beaming_info_list*finished_grouping_p_;
54 };
55
56 #endif /* AUTO_BEAM_ENGRAVER_HH */
57