]> git.donarmstrong.com Git - lilypond.git/blob - lily/span-score-bar-engraver.cc
release: 1.1.29
[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
14 Span_bar*
15 Span_score_bar_engraver::get_span_bar_p () const
16 {
17   Span_bar*s =  new Span_bar;
18   s->visibility_lambda_
19     = gh_eval_str ("spanbar_non_postbreak_visibility");
20   s->type_str_ = "scorebar";
21     
22   return s;
23 }
24
25
26 Span_score_bar_engraver::Span_score_bar_engraver ()
27 {
28   use_priority_b_ = true;
29   break_priority_i_ = -4;
30 }
31
32 Span_bar*
33 Piano_bar_engraver::get_span_bar_p () const
34 {
35   Span_bar *s= new Span_bar;
36   s->visibility_lambda_
37     = gh_eval_str ("spanbar_postbreak_only_visibility");
38   s->no_width_b_ =true;
39   s->type_str_ = "{";
40   return s;
41 }
42
43 Span_bar*
44 Staff_group_bar_engraver::get_span_bar_p () const
45 {
46   Span_bar *s= new Span_bar;
47   s->visibility_lambda_
48     = gh_eval_str ("spanbar_postbreak_only_visibility");
49   s->no_width_b_ =true;
50   s->type_str_ = "[";
51   return s;
52 }
53
54 void
55 Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
56 {
57   Base_span_bar_engraver::acknowledge_element (i);
58   if (Span_bar * b = dynamic_cast<Span_bar *> (i.elem_l_))
59     {
60       if (b->type_str_ == "{")
61         b->extra_x_off_ -=  paper ()->interline_f (); // ugh
62     }
63 }
64
65 ADD_THIS_TRANSLATOR (Piano_bar_engraver);
66 ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
67 ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
68