2 paper-def.cc -- implement Paper_def
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
13 #include "paper-def.hh"
17 #include "input-engraver.hh"
18 #include "engraver-group.hh"
19 #include "assoc-iter.hh"
22 Paper_def::set_var(String s, Real r)
24 real_vars_p_->elem(s) = r;
28 Paper_def::get_var(String s)const
30 if(! real_vars_p_->elt_b(s))
31 error ( "unknown paper variable `" + s+"'");
32 return real_vars_p_->elem(s);
36 Paper_def::linewidth_f() const
38 return get_var("linewidth");
42 Paper_def::duration_to_dist(Moment d)
47 return get_var("unitspace") * pow(get_var("geometric"), log_2(d));
51 Paper_def::Paper_def()
55 real_vars_p_ = new Assoc<String,Real>;
56 outfile_str_ = "lelie.tex";
59 Paper_def::~Paper_def()
66 Paper_def::Paper_def(Paper_def const&s)
68 igrav_p_ = s.igrav_p_ ? new Input_engraver( *s.igrav_p_):0;
69 lookup_p_ = s.lookup_p_? new Lookup(*s.lookup_p_) : 0;
70 lookup_p_->paper_l_ = this;
71 real_vars_p_ = new Assoc<String,Real> (*s.real_vars_p_);
72 outfile_str_ = s.outfile_str_;
76 Paper_def::set(Input_engraver * igrav_p)
83 Paper_def::set(Lookup*l)
85 assert(l != lookup_p_);
88 lookup_p_->paper_l_ = this;
92 Paper_def::interline_f() const
94 return get_var("interline");
99 Paper_def::rule_thickness()const
101 return get_var("rule_thickness");
105 Paper_def::interbeam_f() const
107 return get_var("interbeam");
110 Paper_def::internote_f() const
112 return interline_f() / 2;
116 Paper_def::note_width()const
118 return get_var("notewidth");
122 Paper_def::print() const
126 mtor << "out: " <<outfile_str_;
128 for (Assoc_iter<String,Real> i(*real_vars_p_); i.ok(); i++) {
129 mtor << i.key() << "= " << i.val() << "\n";
136 Paper_def::lookup_l()
143 Paper_def::get_global_translator_p() const
145 return igrav_p_->get_group_engraver_p()->global_l();