X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fpaper-def.hh;h=0ae3a6981e6ca00c3403cb2936897163a46bd7f2;hb=refs%2Ftags%2Frelease%2F1.1.0;hp=fba93580cb53fb30585786bd7979ecc972de60ab;hpb=4bdf5f822b18b10b48f619c116641e6aee1968ac;p=lilypond.git diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index fba93580cb..0ae3a6981e 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -1,54 +1,104 @@ /* - paper-def.hh -- declare + paper-def.hh -- declare Paper_def - source file of the LilyPond music typesetter + source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ -#ifndef Paper_def_HH -#define Paper_def_HH -#include "proto.hh" +#ifndef PAPER_DEF_HH +#define PAPER_DEF_HH +#include "lily-proto.hh" + #include "real.hh" -#include "string.hh" + #include "moment.hh" +#include "array.hh" +#include "interval.hh" +#include "music-output-def.hh" +/** -/** symbols, dimensions and constants + Symbols, dimensions and constants pertaining to visual output. 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. + constants. Most of them are related to the point-size of the fonts, + so therefore, the lookup table for symbols is also in here. + + TODO: + + add support for multiple fontsizes + add support for other len->wid conversions. + + Input_engraver should be in here. */ -class Paper_def { - Lookup *lookup_p_; +class Paper_def : public Music_output_def +{ + Assoc *lookup_p_assoc_p_; + static int default_count_i_; + +protected: + VIRTUAL_COPY_CONS(Paper_def,Music_output_def); + public: - String outfile; - - Real linewidth; - - /// how much space does a whole note take (ideally?) - Real whole_width; - - /// ideal = geometric_ ^ log2(duration) - Real geometric_; - - /* *************** */ - void reinit(); - Paper_def(Lookup*); - void set(Lookup*); - ~Paper_def(); - Paper_def(Paper_def const&); - Real interline()const; - Real internote()const; - Real rule_thickness()const; - Real standard_height()const; - Real note_width() const; - void print() const; - const Lookup* lookup_l(); // TODO naming - Real duration_to_dist(Moment); + virtual ~Paper_def (); + DECLARE_MY_RUNTIME_TYPEINFO; + + Array shape_int_a_; + + Real get_var (String) const; + void reinit (); + Paper_def (); + void set_lookup (int, Lookup*); + + Paper_def (Paper_def const&); + /// The distance between beams of multiplicity_i + Real interbeam_f (int multiplicity_i) const; + + /// The thickness of a beam + Real beam_thickness_f () const; + + /// The distance between lines + Real interline_f () const; + /// half the distance between lines + Real internote_f () const; + + /// thickness of the standard line + Real rule_thickness () const; + + /// thickness of the staff line + Real staffline_f () const; + + Interval line_dimensions_int (int) const; + Real linewidth_f () const; + + /// height of the staff + Real staffheight_f () const; + + /// width of a crotchet ball + Real note_width () const; + void print () const; + + Lookup const * lookup_l (int sz) const; // TODO naming + + /** convert a duration to an idealspacing + influence using the geometric_ and paratime_signatures. + */ + Real duration_to_dist (Moment, Real) const; + Real geometric_spacing (Moment) const; + Real arithmetic_constant (Moment minimal_mom) const; + Real arithmetic_spacing (Moment mom,Real constant) const; + virtual int get_next_default_count () const; + + void output_settings (Paper_outputter*) const; + Paper_outputter* paper_outputter_p (Paper_stream*, Scope*, String) const; + Paper_stream* paper_stream_p () const; + String base_output_str () const; + + // urg + friend int yyparse (void*); }; #endif // Paper_def_HH