]> git.donarmstrong.com Git - lilypond.git/blob - src/lyriccolumn.cc
release: 0.0.27
[lilypond.git] / src / lyriccolumn.cc
1 #include "request.hh"
2 #include "voice.hh"
3 #include "staffwalker.hh"
4 #include "debug.hh"
5 #include "staff.hh"
6 #include "lyricstaff.hh"
7 #include "lyriccolumn.hh"
8 #include "sccol.hh" 
9 #include "pscore.hh"
10
11
12 Lyric_column::Lyric_column(Score_column*s, Lyric_staff* lstaff_l)
13     : Staff_column(s)
14 {
15     lstaff_l_ = lstaff_l;
16 }
17
18 void
19 Lyric_column::setup_requests()
20 {
21     for (int i = 0 ; i < v_elts.size(); i ++) {
22         for (iter_top(v_elts[i]->reqs,j); j.ok(); j++) {
23             Request* req_l = j;
24             if (req_l->barcheck()) {
25                 if (tdescription_->whole_in_measure) {
26                     error( "Barcheck failed ", req_l->defined_ch_c_l_m );
27                 }
28             }
29             if (req_l->lreq_l()) {
30                 winfo_array_.push(req_l->lreq_l());
31             }
32         }
33     }
34 }
35
36 Interval itemlist_width(const Array<Item*> &its);
37
38 void
39 Lyric_column::typeset_item(Item *i, int breakst)
40 {
41     assert(i);
42     
43     lstaff_l_->pscore_l_->typeset_item(i, score_column_l_->pcol_l_,
44                                   lstaff_l_->line_pstaff_p_,breakst);
45     
46     if (breakst == BREAK_PRE - BREAK_PRE) {
47         
48         Array<Item*> to_move(
49             lstaff_l_->pscore_l_->select_items(lstaff_l_->line_pstaff_p_,
50                                           score_column_l_->pcol_l_->prebreak_p_));
51         Interval column_wid = itemlist_width(to_move);
52         assert(!column_wid.empty());
53
54         for (int j=0; j < to_move.size(); j++) {
55             to_move[j]->translate(Offset(-column_wid.right, 0));
56         }
57     }
58 }    
59
60 Word_info::Word_info()
61 {
62     lreq_l_ = 0;
63 }
64
65 Word_info::Word_info(Lyric_req* lreq_l) 
66 {
67     lreq_l_ = lreq_l;
68 }