X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-def.cc;h=9234da4d1c89b793c002e1932b9f34d50a487b54;hb=07dc00d6c83be5b05f5ec16f1ed36b1cf41b885c;hp=d3d4a6795476f3d07af96b7cc857b9c7e1ef7207;hpb=59ed0cee2aae58a3f0483f21261c68aee406fa10;p=lilypond.git diff --git a/lily/paper-def.cc b/lily/paper-def.cc index d3d4a67954..9234da4d1c 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -3,167 +3,128 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--2000 Han-Wen Nienhuys */ #include + +#include "all-font-metrics.hh" #include "string.hh" -#include "assoc.hh" #include "misc.hh" #include "paper-def.hh" #include "debug.hh" #include "lookup.hh" -#include "ps-lookup.hh" -#include "tex-lookup.hh" -#include "assoc-iter.hh" #include "score-engraver.hh" -#include "p-score.hh" +#include "paper-score.hh" #include "identifier.hh" #include "main.hh" #include "scope.hh" -#include "assoc.hh" -#include "assoc-iter.hh" +#include "dictionary-iter.hh" +#include "file-results.hh" // urg? header_global_p +#include "paper-outputter.hh" +#include "paper-stream.hh" + Paper_def::Paper_def () { - lookup_p_assoc_p_ = new Assoc; + lookup_p_tab_p_ = new map; } Paper_def::~Paper_def () { - for (Assoc_iter ai(*lookup_p_assoc_p_); ai.ok (); ai++) + for (map::const_iterator ai = lookup_p_tab_p_->begin(); + ai != lookup_p_tab_p_->end (); ai++) { - delete ai.val (); + delete (*ai).second; } - delete lookup_p_assoc_p_; + delete lookup_p_tab_p_; } Paper_def::Paper_def (Paper_def const&s) : Music_output_def (s) { - lookup_p_assoc_p_ = new Assoc; - for (Assoc_iter ai(*s.lookup_p_assoc_p_); ai.ok (); ai++) + shape_int_a_ = s.shape_int_a_; + lookup_p_tab_p_ = new map; + + for (map::const_iterator ai = s.lookup_p_tab_p_->begin(); + ai != s.lookup_p_tab_p_->end (); ai++) { - Lookup * l = global_lookup_l->lookup_p (*ai.val ()); - l->paper_l_ = this; - set_lookup (ai.key(), l); + Lookup * l = new Lookup (* (*ai).second); + set_lookup ((*ai).first, l); } } + Real Paper_def::get_var (String s) const +{ + return get_realvar (ly_symbol2scm (s.ch_C())); +} + +Real +Paper_def::get_realvar (SCM s) const { if (!scope_p_->elem_b (s)) - error (_f ("unknown paper variable: `%s\'", s)); - Real * p = scope_p_->elem (s)->access_Real (false); + error (_f ("unknown paper variable: `%s'", ly_symbol2string (s))); + Real * p = scope_p_->elem (s)->access_content_Real (false); if (!p) { - error (_ ("not a real variable")); + error (_("not a real variable")); return 0.0; } return *p; } + Interval Paper_def::line_dimensions_int (int n) const { - if (!shape_int_a_.size ()) - if (n) - return Interval (0, linewidth_f ()); - else - return Interval (get_var ("indent"), linewidth_f ()); - - if (n >= shape_int_a_.size ()) - n = shape_int_a_.size () -1; - - return shape_int_a_[n]; -} - -Real -Paper_def::beam_thickness_f () const -{ - return get_var ("beam_thickness"); -} - -Real -Paper_def::linewidth_f () const -{ - return get_var ("linewidth"); -} - -Real -Paper_def::duration_to_dist (Moment d,Real k) const -{ - return arithmetic_spacing (d,k); -} - - -/** - Get the measure wide constant for arithmetic. + SCM s = default_properties_.get (ly_symbol2scm ("margin-shape")); + if (!gh_pair_p (s)) + { + Real lw = get_var ("linewidth"); + Real ind = n? 0.0:get_var ("indent"); - @see - John S. Gourlay. ``Spacing a Line of Music,'' Technical Report - OSU-CISRC-10/87-TR35, Department of Computer and Information Science, - The Ohio State University, 1987. + return Interval (ind, lw); + } - */ -Real -Paper_def::arithmetic_constant (Moment d) const -{ - return get_var ("arithmetic_basicspace") - log_2 (Moment (1,8) elem_b (i)) + map :: const_iterator it (lookup_p_tab_p_->find (i)); + if (it != lookup_p_tab_p_->end ()) { - delete lookup_p_assoc_p_->elem (i); + delete (*it).second; } - l ->paper_l_ = this; - (*lookup_p_assoc_p_)[i] = l; -} - -Real -Paper_def::interline_f () const -{ - return get_var ("interline"); -} - -Real -Paper_def::rule_thickness () const -{ - return get_var ("rulethickness"); + (*lookup_p_tab_p_)[i] = l; } -Real -Paper_def::staffline_f () const -{ - return get_var ("rulethickness"); -} - -Real -Paper_def::staffheight_f () const -{ - return get_var ("staffheight"); -} +/* + junkme. + */ Real Paper_def::interbeam_f (int multiplicity_i) const { @@ -173,72 +134,75 @@ Paper_def::interbeam_f (int multiplicity_i) const return get_var ("interbeam4"); } -Real -Paper_def::internote_f () const -{ - return get_var ("interline") /2.0 ; -} - -Real -Paper_def::note_width () const -{ - return get_var ("notewidth"); -} void Paper_def::print () const { #ifndef NPRINT Music_output_def::print (); - DOUT << "Paper {"; - - for (Assoc_iter ai(*lookup_p_assoc_p_); ai.ok (); ai++) + DEBUG_OUT << "Paper {"; + for (map::const_iterator ai = lookup_p_tab_p_->begin(); + ai != lookup_p_tab_p_->end (); ai++) { - DOUT << "Lookup: " << ai.key () ; - ai.val ()->print (); + DEBUG_OUT << "Lookup: " << (*ai).first + << " = " << (*ai).second->font_name_ << '\n'; } - - DOUT << "}\n"; + DEBUG_OUT << "}\n"; #endif } Lookup const * Paper_def::lookup_l (int i) const { - return (*lookup_p_assoc_p_)[i]; + return (*lookup_p_tab_p_)[i]; } -IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def); -String -Paper_def::ps_output_settings_str () const + +int Paper_def::default_count_i_ = 0; + +int +Paper_def::get_next_default_count () const { - String s ("\n "); - for (Assoc_iter i (*scope_p_); i.ok (); i++) - s += String ("/mudelapaper") + i.key () - + "{" + i.val ()->str () + "} bind def\n"; - s += *scope_p_->elem ("pssetting")->access_String (); - return s; + return default_count_i_ ++; } -String -Paper_def::tex_output_settings_str () const +void +Paper_def::reset_default_count() { - String s ("\n "); - for (Assoc_iter i (*scope_p_); i.ok (); i++) - s += String ("\\def\\mudelapaper") + i.key () - + "{" + i.val ()->str () + "}\n"; - s += *scope_p_->elem ("texsetting")->access_String (); - return s; + default_count_i_ = 0; } -int Paper_def::default_count_i_ = 0; -int -Paper_def::get_next_default_count () const +Paper_stream* +Paper_def::paper_stream_p () const { - return default_count_i_ ++; + String outname = base_output_str (); + + if (outname != "-") + outname += String (".") + output_global_ch; + progress_indication (_f ("paper output to %s...", + outname == "-" ? String ("") : outname)); + + + target_str_global_array.push (outname); + return new Paper_stream (outname); } +String +Paper_def::base_output_str () const +{ + String str = get_default_output (); + + if (str.empty_b ()) + { + str = default_outname_base_global; + int def = get_next_default_count (); + if (def) + str += "-" + to_str (def); + } + return str; +} +