blob: 8cd98339d4575baf0ef7e53a2b7ce5ea6bf086cf (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#include <math.h>
#include "paper.hh"
#include "debug.hh"
#include "lookup.hh"
#include "dimen.hh"
#include "textdb.hh"
double log2(double x) {
return log(x) /log(2.0);
}
// golden ratio
const Real PHI = (1+sqrt(5))/2;
// see Roelofs, p. 57
Real
Paperdef::duration_to_dist(Real d)
{
return whole_width * pow(geometric_, log2(d));
}
Real
Paperdef::rule_thickness()const
{
return convert_dimen(0.4, "pt");
}
Paperdef::Paperdef()
{
lookup_ = new Lookup();
parse();
linewidth = convert_dimen(15,"cm"); // in cm for now
whole_width= 8*note_width();
geometric_ = PHI;
}
void
Paperdef::parse()
{
Text_db symini("symbol.ini");
while (!symini.eof()) {
Text_record r( symini++);
if (r[0] == "symboltables")
lookup_->parse(symini);
}
}
Paperdef::~Paperdef()
{
delete lookup_;
}
Real
Paperdef::interline() const
{
return lookup_->ball(4).dim.y.length();
}
Real
Paperdef::note_width()const
{
return lookup_->ball(4).dim.x.length( );
}
Real
Paperdef::standard_height() const
{
return convert_dimen(20,"pt");
}
void
Paperdef::print() const
{
#ifndef NPRINT
mtor << "Paper {width: " << print_dimen(linewidth);
mtor << "whole: " << print_dimen(whole_width);
mtor << "out: " <<outfile;
mtor << "}\n";
#endif
}
|