struct Input_staff {
- /// defined where?
+
const char * defined_ch_c_l_;
String type;
IPointerList<Input_command*> commands_;
#include "fproto.hh"
#include "scalar.hh"
+/// intuitive interface to symbol table
struct Lookup {
Symtables *symtables_;
String texsetting;
--- /dev/null
+/*
+ paperdef.hh -- declare
+
+ source file of the LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef PAPERDEF_HH
+#define PAPERDEF_HH
+#include "proto.hh"
+#include "real.hh"
+#include "string.hh"
+#include "moment.hh"
+
+
+/** symbols, dimensions and constants
+
+ This struct takes care of all kinds of symbols, dimensions and
+ constants. Most of them are related to the point-size of the fonts,
+ so therefore, the lookup table for symbols is also in here.
+
+ see TODO
+ */
+struct Paperdef {
+ Lookup *lookup_p_;
+ String outfile;
+
+ Real linewidth;
+
+ /// how much space does a whole note take (ideally?)
+ Real whole_width;
+
+ /// ideal = geometric_ ^ log2(duration)
+ Real geometric_;
+
+ /* *************** */
+ void reinit();
+ Paperdef(Lookup*);
+ void set(Lookup*);
+ ~Paperdef();
+ Paperdef(Paperdef const&);
+ Real interline()const;
+ Real internote()const;
+ Real rule_thickness()const;
+ Real standard_height()const;
+ Real note_width() const;
+ void print() const;
+ Real duration_to_dist(Moment);
+};
+
+#endif // PAPERDEF_HH
+
#include "bar.hh"
#include "string.hh"
#include "molecule.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lookup.hh"
NAME_METHOD(Bar);
#include "leastsquares.hh"
#include "pcol.hh"
#include "stem.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lookup.hh"
#include "grouping.hh"
do calculations for breaking problem
*/
#include "break.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "linespace.hh"
#include "debug.hh"
#include "scoreline.hh"
#include "idealspacing.hh"
#include "score.hh"
#include "pscore.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "sccol.hh"
-//#include "debug.hh"
#include "dimen.hh"
while (j->when() < d + i->when())
j++;
- assert( j->when()== d+i->when());
+ Moment delta_desired = j->when() - (d+i->when());
+ dist += paper_p_->duration_to_dist(delta_desired);
pscore_p_->connect(i->pcol_l_, j->pcol_l_, dist, strength);
}
#include "clefitem.hh"
#include "string.hh"
#include "molecule.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lookup.hh"
#include "clef.hh"
#include "request.hh"
#include "pscore.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "complexstaff.hh"
#include "sccol.hh"
#include "debug.hh"
#include "rest.hh"
#include "notehead.hh"
#include "headreg.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "complexwalker.hh"
#include "inputscore.hh"
#include "inputstaff.hh"
#include "score.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "staff.hh"
void
#include "key.hh"
#include "debug.hh"
#include "molecule.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lookup.hh"
#include "clef.hh"
#include "molecule.hh"
#include "scalar.hh"
#include "lookup.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "request.hh"
#include "notehead.hh"
#include "request.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lyricitem.hh"
#include "stem.hh"
#include "molecule.hh"
#include "scalar.hh"
#include "molecule.hh"
#include "meter.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lookup.hh"
NAME_METHOD(Meter);
Meter::Meter(Array<Scalar>a)
--- /dev/null
+#include <math.h>
+#include "misc.hh"
+#include "paperdef.hh"
+#include "debug.hh"
+#include "lookup.hh"
+#include "dimen.hh"
+
+
+
+// golden ratio
+const Real PHI = (1+sqrt(5))/2;
+
+// see Roelofs, p. 57
+Real
+Paperdef::duration_to_dist(Moment d)
+{
+ if (!d)
+ return 0;
+
+ return whole_width * pow(geometric_, log_2(d));
+}
+
+Real
+Paperdef::rule_thickness()const
+{
+ return 0.4 PT;
+}
+
+Paperdef::Paperdef(Lookup *l)
+{
+ lookup_p_ = l;
+ linewidth = 15 *CM_TO_PT; // in cm for now
+ whole_width = 8 * note_width();
+ geometric_ = sqrt(2);
+}
+
+Paperdef::~Paperdef()
+{
+ delete lookup_p_;
+}
+Paperdef::Paperdef(Paperdef const&s)
+{
+ lookup_p_ = new Lookup(*s.lookup_p_);
+ geometric_ = s.geometric_;
+ whole_width = s.whole_width;
+ outfile = s.outfile;
+ linewidth = s.linewidth;
+}
+
+void
+Paperdef::set(Lookup*l)
+{
+ assert(l != lookup_p_);
+ delete lookup_p_;
+ lookup_p_ = l;
+}
+
+Real
+Paperdef::interline() const
+{
+ return lookup_p_->ball(4).dim.y.length();
+}
+
+Real
+Paperdef::internote() const
+{
+ return lookup_p_->internote();
+}
+Real
+Paperdef::note_width()const
+{
+ return lookup_p_->ball(4).dim.x.length( );
+}
+Real
+Paperdef::standard_height() const
+{
+ return 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
+}
#include "debug.hh"
#include "lookup.hh"
#include "spanner.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "molecule.hh"
#include "dimen.hh"
#include "scoreline.hh"
#include "rest.hh"
#include "dimen.hh"
#include "debug.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "lookup.hh"
#include "molecule.hh"
#include "dimen.hh"
#include "spanner.hh"
#include "symbol.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "pcol.hh"
#include "pscore.hh"
#include "request.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "script.hh"
#include "stem.hh"
#include "molecule.hh"
#include "slur.hh"
#include "scalar.hh"
#include "lookup.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "notehead.hh"
#include "pcol.hh"
#include "molecule.hh"
#include "dimen.hh"
#include "spanner.hh"
#include "symbol.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "molecule.hh"
#include "pcol.hh"
#include "pscore.hh"
*/
#include "staffsym.hh"
#include "lookup.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "debug.hh"
NAME_METHOD(Staff_symbol);
#include "stem.hh"
#include "dimen.hh"
#include "debug.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "notehead.hh"
#include "lookup.hh"
#include "molecule.hh"
#include "debug.hh"
#include "lookup.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "molecule.hh"
#include "textdef.hh"
#include "request.hh"
-#include "paper.hh"
+#include "paperdef.hh"
#include "textitem.hh"
#include "stem.hh"
#include "molecule.hh"
#include "textspanner.hh"
#include "textdef.hh"
#include "debug.hh"
-#include "paper.hh"
+#include "paperdef.hh"
NAME_METHOD(Text_spanner);