]> git.donarmstrong.com Git - lilypond.git/blob - lily/timing-engraver.cc
release: 1.3.50
[lilypond.git] / lily / timing-engraver.cc
1 /*
2   timing-grav.cc -- implement Timing_engraver
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #include "score-engraver.hh"
10 #include "timing-engraver.hh"
11 #include "command-request.hh"
12 #include "score-element-info.hh"
13 #include "multi-measure-rest.hh"
14
15 ADD_THIS_TRANSLATOR(Timing_engraver);
16
17 void
18 Timing_engraver::do_post_move_processing( )
19 {
20   bar_req_l_ = 0;
21   Timing_translator::do_post_move_processing ();
22   
23 }
24
25 bool
26 Timing_engraver::do_try_music (Music*m)
27 {
28   if (Bar_req  * b= dynamic_cast <Bar_req *> (m))
29     {
30       if (bar_req_l_ && !bar_req_l_->equal_b (b)) // huh?
31         return false;
32       
33       bar_req_l_ = b;
34       return true;
35     }
36   
37   return Timing_translator::do_try_music (m);
38 }
39
40 #if 0
41 String
42 Timing_engraver::do_process_music ()
43 {
44   if (gh_string_p (get_property  ("barType")))
45     ;
46   else if (!now_mom ())
47     {
48       daddy_trans_l_->set_property ("barType", ly_str02scm ("|"));
49     }
50   else
51
52   {
53   }
54 }
55 #endif
56
57
58 /*
59   TODO make properties of this.
60  */
61 String
62 Timing_engraver::which_bar ()
63 {
64   if (!bar_req_l_)
65     {
66       if (!now_mom ())
67         return "|";
68
69       SCM nonauto = get_property ("barNonAuto");
70       if (!to_boolean (nonauto))
71         {
72           SCM always = get_property ("barAlways");
73           if (!measure_position ()
74               || (to_boolean (always)))
75             {
76               SCM def=get_property ("defaultBarType" );
77               return (gh_string_p (def))? ly_scm2string (def) : "";
78             }
79         }
80       return "";
81     }
82   else
83     {
84       return bar_req_l_->type_str_;
85     }
86 }