summaryrefslogtreecommitdiff
path: root/src/paper.cc
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
}