]> git.donarmstrong.com Git - lilypond.git/blob - lily/span-score-bar-engraver.cc
patch::: 1.3.18.jcn3
[lilypond.git] / lily / span-score-bar-engraver.cc
1 /*
2   span-score-bar-engraver.cc -- implement Span_score_bar_engraver,
3   Piano_bar_engraver and Staff_group_bar_engraver
4
5   source file of the GNU LilyPond music typesetter
6
7   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8 */
9
10 #include "span-bar.hh"
11 #include "span-score-bar-engraver.hh"
12 #include "paper-def.hh"
13 #include "dimension-cache.hh"
14
15 ADD_THIS_TRANSLATOR (Piano_bar_engraver);
16 ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
17 ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
18
19 Span_bar*
20 Span_score_bar_engraver::get_span_bar_p () const
21 {
22   Span_bar*s =  new Span_bar;
23   s->set_elt_property ("default-glyph",  gh_str02scm ("scorebar"));
24   s->set_elt_property ("break-aligned",SCM_BOOL_T);
25
26   return s;
27 }
28
29 Span_score_bar_engraver::Span_score_bar_engraver ()
30 {
31   use_priority_b_ = true;
32 }
33
34 Span_bar*
35 Piano_bar_engraver::get_span_bar_p () const
36 {
37   Span_bar *s= new Span_bar;
38   s->set_empty (X_AXIS);
39   s->set_elt_property ("default-glyph", gh_str02scm ("brace"));
40   return s;
41 }
42
43 void
44 Piano_bar_engraver::acknowledge_element (Score_element_info i)
45 {
46   Base_span_bar_engraver::acknowledge_element (i);
47
48   if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
49     {
50       SCM g = b->get_elt_property ("default-glyph");
51       if (gh_string_p (g) && (ly_scm2string (g) == "bracket"))
52         spanbar_p_->set_elt_property ("other", b->self_scm_);
53     }
54 }
55
56 Span_bar*
57 Staff_group_bar_engraver::get_span_bar_p () const
58 {
59   Span_bar *s= new Span_bar;
60   s->set_empty (X_AXIS);
61   s->set_elt_property ("default-glyph",  gh_str02scm ("bracket"));
62   return s;
63 }
64
65 void
66 Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
67 {
68   Base_span_bar_engraver::acknowledge_element (i);
69
70   if (!spanbar_p_)
71     return;
72
73   if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
74     {
75       SCM g = b->get_elt_property ("default-glyph");
76       if (gh_string_p (g) && (ly_scm2string (g) == "brace"))
77         spanbar_p_->set_elt_property ("other", b->self_scm_);
78     }
79 }
80
81