lilypond-0.1.57
[lilypond.git] / lily / stem-info.cc
blob34aadfc976d97f32723a55776f5e433f20e33d31
1 /*
2 stem-info.cc -- implement Stem_info
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
8 */
10 #include "proto.hh"
11 #include "dimen.hh"
12 #include "misc.hh"
13 #include "debug.hh"
14 #include "atom.hh"
15 #include "stem.hh"
16 #include "paper-def.hh"
17 #include "lookup.hh"
18 #include "stem-info.hh"
20 Stem_info::Stem_info ()
24 Stem_info::Stem_info (Stem const *s)
26 x = s->hpos_f ();
27 dir_ = s->dir_;
28 beams_i_ = 0 >? (abs (s->flag_i_) - 2);
31 [todo]
32 * get algorithm
33 * runtime
35 Breitkopf + H\"artel:
36 miny_f_ = interline + #beams * interbeam
37 ideal8 = 2 * interline + interbeam
38 ideal16,32,64,128 = 1.5 * interline + #beams * interbeam
40 * B\"arenreiter:
41 miny_f_ = interline + #beams * interbeam
42 ideal8,16 = 2 interline + #beams * interbeam
43 ideal32,64,128 = 1.5 interline + #beams * interbeam
47 Real internote_f = s->paper ()->internote_f ();
48 Real interline_f = 2 * internote_f;
49 Real notehead_y = interline_f;
50 // huh? why do i seem to need the / 2 ?
51 Real interbeam_f = s->paper ()->interbeam_f ();
52 // Real interbeam_f = s->paper ()->interbeam_f () / 2;
53 // perhaps bo dim (y) = internote?
55 idealy_f_ = dir_ * s->stem_begin_f () + beams_i_ * interbeam_f;
56 if (beams_i_ < 3)
57 idealy_f_ += 2 * interline_f;
58 else
59 idealy_f_ += 1.5 * interline_f;
60 idealy_f_ /= internote_f;
61 miny_f_ = dir_ * s->stem_begin_f () + 2 + beams_i_ * interbeam_f / internote_f;
63 idealy_f_ = miny_f_ >? idealy_f_;
64 // assert (miny_f_ <= idealy_f_);