]> git.donarmstrong.com Git - lilypond.git/blob - lily/span-score-bar-engraver.cc
release: 1.3.41
[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--2000 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 Span_bar*
16 Span_score_bar_engraver::get_span_bar_p () const
17 {
18   Span_bar*s =  new Span_bar;
19   s->set_elt_property ("glyph",  gh_str02scm ("scorebar"));
20   s->set_elt_property ("break-aligned",SCM_BOOL_T);
21
22   return s;
23 }
24
25
26 Span_score_bar_engraver::Span_score_bar_engraver ()
27 {
28   use_priority_b_ = true;
29 }
30
31 Span_bar*
32 Piano_bar_engraver::get_span_bar_p () const
33 {
34   Span_bar *s= new Span_bar;
35   s->set_empty (X_AXIS);
36   s->set_elt_property ("glyph", gh_str02scm ("brace"));
37   return s;
38 }
39
40 Span_bar*
41 Staff_group_bar_engraver::get_span_bar_p () const
42 {
43   Span_bar *s= new Span_bar;
44   s->set_empty (X_AXIS);
45   s->set_elt_property ("glyph",  gh_str02scm ("bracket"));
46
47   SCM collapse = get_property ("bracketCollapseHeight");
48   if (gh_number_p (collapse))
49     s->set_elt_property ("collapse-height", collapse);
50   else
51     s->set_elt_property ("collapse-height", gh_double2scm (1));
52       
53   return s;
54 }
55
56 void
57 Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
58 {
59   Base_span_bar_engraver::acknowledge_element (i);
60
61   /*
62     UGH. This has to go into the backend. 
63    */
64   if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
65     {
66       SCM gl = b->get_elt_property ("glyph");
67       if (gh_string_p (gl) && ly_scm2string (gl)  == "brace")
68         b->translate_axis ( -paper_l ()->get_var ("interline"),
69                             X_AXIS); // ugh
70     }
71 }
72
73 ADD_THIS_TRANSLATOR (Piano_bar_engraver);
74 ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
75 ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
76
77