]> git.donarmstrong.com Git - lilypond.git/blob - lily/p-col.cc
release: 1.1.41
[lilypond.git] / lily / p-col.cc
1 /*
2   p-col.cc -- implement Paper_column
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #include "p-col.hh"
10 #include "p-score.hh"
11 #include "debug.hh"
12
13 void
14 Paper_column::add_rod (Paper_column * p, Real d)
15 {
16   Direction dir =  Direction (sign (p->rank_i ()  - rank_i ()));
17   
18   if (!dir)
19     {
20       warning ("Must set minimum distance between differing columns.");
21       return;
22     }
23   
24   for (int i=0; i < minimal_dists_arr_drul_[dir].size (); i++)
25     {
26       Column_rod &rod = minimal_dists_arr_drul_[dir][i];
27       if (rod.other_l_ == p)
28         {
29           rod.distance_f_ = rod.distance_f_ >? d;
30           return ;
31         }
32     }
33
34   Column_rod cr;
35   cr.distance_f_ = d;
36   cr.other_l_ = p;
37
38   minimal_dists_arr_drul_[dir].push (cr);
39 }
40
41 int
42 Paper_column::rank_i() const
43 {
44   return rank_i_;
45 }
46
47 void
48 Paper_column::set_rank (int i)
49 {
50   rank_i_ = i;
51 }
52
53 void
54 Paper_column::do_print() const
55 {
56 #ifndef NPRINT
57   DOUT << "rank: " << rank_i_ << '\n';
58   for (int i=0; i < minimal_dists_arr_drul_[LEFT].size (); i++)
59     {
60       minimal_dists_arr_drul_[LEFT][i].print ();
61     }
62   DOUT << "Right: ";
63   for (int i=0; i < minimal_dists_arr_drul_[RIGHT].size (); i++)
64     {
65       minimal_dists_arr_drul_[RIGHT][i].print ();
66     }
67   Item::do_print ();
68 #endif 
69 }
70
71 bool
72 Paper_column::breakpoint_b() const
73 {
74   return !line_l_;
75 }
76
77 Paper_column::Paper_column()
78 {
79   set_axes (X_AXIS, X_AXIS);
80
81   line_l_=0;
82   rank_i_ = -1;
83 }
84
85 Line_of_score*
86 Paper_column::line_l() const
87 {
88   return line_l_;
89 }
90
91
92
93
94 Paper_column*
95 Paper_column::column_l () const
96 {
97   return (Paper_column*)(this);
98 }
99
100
101 void
102 Paper_column::preprocess ()
103 {
104   minimal_dists_arr_drul_[LEFT].sort (Column_rod::compare);
105   minimal_dists_arr_drul_[RIGHT].sort (Column_rod::compare);  
106 }