X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-book.cc;h=08367608b38d7db94fe53e12506d873a200504ee;hb=87c76f9661ab6c7c24be704336fd207597ce5b3d;hp=2f4ba4d82107bbb605de54db903447168e4fb8e9;hpb=5856b3f565bfa6ef87d53b9fa9db7ec961ecf452;p=lilypond.git diff --git a/lily/paper-book.cc b/lily/paper-book.cc index 2f4ba4d821..08367608b3 100644 --- a/lily/paper-book.cc +++ b/lily/paper-book.cc @@ -21,10 +21,10 @@ Paper_book::Paper_book () { pages_ = SCM_BOOL_F; - lines_ = SCM_BOOL_F; + systems_ = SCM_BOOL_F; header_ = SCM_EOL; - bookpaper_ = 0; + paper_ = 0; smobify_self (); } @@ -40,20 +40,20 @@ SCM Paper_book::mark_smob (SCM smob) { Paper_book *b = (Paper_book*) SCM_CELL_WORD_1 (smob); - for (int i = 0; i < b->score_lines_.size (); i++) - b->score_lines_[i].gc_mark (); + for (int i = 0; i < b->score_systems_.size (); i++) + b->score_systems_[i].gc_mark (); - if (b->bookpaper_) - scm_gc_mark (b->bookpaper_->self_scm ()); + if (b->paper_) + scm_gc_mark (b->paper_->self_scm ()); scm_gc_mark (b->header_); scm_gc_mark (b->pages_); - return b->lines_; + return b->systems_; } int Paper_book::print_smob (SCM smob, SCM port, scm_print_state*) { - Paper_book *b = (Paper_book*) ly_cdr (smob); + Paper_book *b = (Paper_book*) SCM_CELL_WORD_1 (smob); scm_puts ("#<", port); scm_puts (classname (b), port); @@ -127,10 +127,10 @@ Paper_book::post_processing (SCM module, {make_ps, "convert-to-ps"}, {make_pdf, "convert-to-pdf"}, {make_png, "convert-to-png"}, - {0,0} + {0, 0}, }; - for (int i= 0; settings[i].func_name_; i++) + for (int i = 0; settings[i].func_name_; i++) { if (settings[i].do_it_) { @@ -139,7 +139,7 @@ Paper_book::post_processing (SCM module, { func = scm_variable_ref (func); if (ly_c_procedure_p (func)) - scm_call_2 (func, self_scm(), file_name); + scm_call_2 (func, self_scm (), file_name); } } } @@ -148,17 +148,21 @@ Paper_book::post_processing (SCM module, void Paper_book::output (String outname) { - if (!score_lines_.size ()) + if (!score_systems_.size ()) return; /* Generate all stencils to trigger font loads. */ pages (); SCM formats = ly_output_formats (); - for (SCM s = formats; ly_c_pair_p (s); s = ly_cdr (s)) + for (SCM s = formats; scm_is_pair (s); s = scm_cdr (s)) { - String format = ly_scm2string (ly_car (s)); - String file_name = outname + "." + format; + String format = ly_scm2string (scm_car (s)); + String file_name = outname; + + if (file_name != "-") + file_name += "." + format; + Paper_outputter *out = get_paper_outputter (file_name, format); SCM scopes = SCM_EOL; @@ -166,21 +170,23 @@ Paper_book::output (String outname) scopes = scm_cons (header_, scopes); String mod_nm = "scm framework-" + format; - - SCM mod = scm_c_resolve_module (mod_nm.to_str0 ()); - SCM func = scm_c_module_lookup (mod, "output-framework"); - func = scm_variable_ref (func); - scm_apply_0 (func, scm_list_n (out->self_scm (), - self_scm (), - scopes, - dump_fields (), - scm_makfrom0str (outname.to_str0 ()), - SCM_UNDEFINED)); - out->close (); - scm_gc_unprotect_object (out->self_scm ()); + SCM mod = scm_c_resolve_module (mod_nm.to_str0 ()); + if (make_pages) + { + SCM func = scm_c_module_lookup (mod, "output-framework"); - post_processing (mod, scm_makfrom0str (file_name.to_str0 ())); + func = scm_variable_ref (func); + scm_apply_0 (func, scm_list_n (out->self_scm (), + self_scm (), + scopes, + dump_fields (), + scm_makfrom0str (outname.to_str0 ()), + SCM_UNDEFINED)); + out->close (); + scm_gc_unprotect_object (out->self_scm ()); + post_processing (mod, scm_makfrom0str (file_name.to_str0 ())); + } if (make_preview) { @@ -201,24 +207,23 @@ Paper_book::output (String outname) post_processing (mod, scm_makfrom0str (file_name.to_str0 ())); } - - progress_indication ("\n"); } + progress_indication ("\n"); } void Paper_book::classic_output (String outname) { /* Generate all stencils to trigger font loads. */ - lines (); + systems (); // ugh code dup SCM scopes = SCM_EOL; if (ly_c_module_p (header_)) scopes = scm_cons (header_, scopes); - if (ly_c_module_p (score_lines_[0].header_)) - scopes = scm_cons (score_lines_[0].header_, scopes); + if (ly_c_module_p (score_systems_[0].header_)) + scopes = scm_cons (score_systems_[0].header_, scopes); //end ugh Array output_formats = split_string (output_format_global, ','); @@ -255,7 +260,7 @@ LY_DEFINE (ly_paper_book_pages, "ly:paper-book-pages", LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes", 1, 0, 0, (SCM book), - "Return pages in paper book @var{book}.") + "Return pages in layout book @var{book}.") { Paper_book *pb = unsmob_paper_book(book); SCM_ASSERT_TYPE(pb, book, SCM_ARG1, __FUNCTION__, "Paper_book"); @@ -267,25 +272,25 @@ LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes", return scopes; } -LY_DEFINE (ly_paper_book_lines, "ly:paper-book-lines", +LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems", 1, 0, 0, (SCM pb), - "Return lines in book PB.") + "Return systems in book PB.") { - return unsmob_paper_book (pb)->lines (); + return unsmob_paper_book (pb)->systems (); } -LY_DEFINE (ly_paper_book_book_paper, "ly:paper-book-book-paper", +LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper", 1, 0, 0, (SCM pb), "Return pages in book PB.") { - return unsmob_paper_book (pb)->bookpaper_->self_scm (); + return unsmob_paper_book (pb)->paper_->self_scm (); } /* TODO: resurrect more complex user-tweaks for titling? */ Stencil Paper_book::book_title () { - SCM title_func = bookpaper_->lookup_variable (ly_symbol2scm ("book-title")); + SCM title_func = paper_->lookup_variable (ly_symbol2scm ("book-title")); Stencil title; SCM scopes = SCM_EOL; @@ -296,7 +301,7 @@ Paper_book::book_title () SCM tit = SCM_EOL; if (ly_c_procedure_p (title_func)) tit = scm_call_2 (title_func, - bookpaper_->self_scm (), + paper_->self_scm (), scopes); if (unsmob_stencil (tit)) @@ -311,7 +316,7 @@ Paper_book::book_title () Stencil Paper_book::score_title (int i) { - SCM title_func = bookpaper_->lookup_variable (ly_symbol2scm ("score-title")); + SCM title_func = paper_->lookup_variable (ly_symbol2scm ("score-title")); Stencil title; @@ -320,14 +325,14 @@ Paper_book::score_title (int i) if (ly_c_module_p (header_)) scopes = scm_cons (header_, scopes); - if (ly_c_module_p (score_lines_[i].header_)) - scopes = scm_cons (score_lines_[i].header_, scopes); + if (ly_c_module_p (score_systems_[i].header_)) + scopes = scm_cons (score_systems_[i].header_, scopes); //end ugh SCM tit = SCM_EOL; if (ly_c_procedure_p (title_func)) tit = scm_call_2 (title_func, - bookpaper_->self_scm (), + paper_->self_scm (), scopes); if (unsmob_stencil (tit)) @@ -340,58 +345,58 @@ Paper_book::score_title (int i) } SCM -Paper_book::lines () +Paper_book::systems () { - if (lines_ != SCM_BOOL_F) - return lines_; + if (systems_ != SCM_BOOL_F) + return systems_; - lines_ = SCM_EOL; + systems_ = SCM_EOL; Stencil title = book_title (); if (!title.is_empty ()) { - Paper_system *pl = new Paper_system (title, true); - lines_ = scm_cons (pl->self_scm (), lines_); - scm_gc_unprotect_object (pl->self_scm ()); + Paper_system *ps = new Paper_system (title, true); + systems_ = scm_cons (ps->self_scm (), systems_); + scm_gc_unprotect_object (ps->self_scm ()); } - int score_count = score_lines_.size (); + int score_count = score_systems_.size (); for (int i = 0; i < score_count; i++) { Stencil title = score_title (i); if (!title.is_empty ()) { - Paper_system *pl = new Paper_system (title, true); - lines_ = scm_cons (pl->self_scm (), lines_); - scm_gc_unprotect_object (pl->self_scm ()); + Paper_system *ps = new Paper_system (title, true); + systems_ = scm_cons (ps->self_scm (), systems_); + scm_gc_unprotect_object (ps->self_scm ()); } - if (scm_vector_p (score_lines_[i].lines_) == SCM_BOOL_T) + if (scm_vector_p (score_systems_[i].systems_) == SCM_BOOL_T) { // guh. - SCM line_list = scm_vector_to_list (score_lines_[i].lines_); + SCM system_list = scm_vector_to_list (score_systems_[i].systems_); - line_list = scm_reverse (line_list); - lines_ = scm_append (scm_list_2 (line_list, lines_)); + system_list = scm_reverse (system_list); + systems_ = scm_append (scm_list_2 (system_list, systems_)); } } - lines_ = scm_reverse (lines_); + systems_ = scm_reverse (systems_); int i = 0; Paper_system *last = 0; - for (SCM s = lines_; s != SCM_EOL; s = ly_cdr (s)) + for (SCM s = systems_; s != SCM_EOL; s = scm_cdr (s)) { - Paper_system * p = unsmob_paper_line (ly_car (s)); - p->number_ = ++i; + Paper_system *ps = unsmob_paper_system (scm_car (s)); + ps->number_ = ++i; if (last && last->is_title ()) // ugh, hardcoded. - p->penalty_ = 10000; - last = p; + ps->penalty_ = 10000; + last = ps; } - return lines_; + return systems_; } SCM @@ -401,24 +406,24 @@ Paper_book::pages () return pages_; pages_ = SCM_EOL; - SCM proc = bookpaper_->c_variable ("page-breaking"); - pages_ = scm_apply_0 (proc, scm_list_2 (lines (), self_scm ())); + SCM proc = paper_->c_variable ("page-breaking"); + pages_ = scm_apply_0 (proc, scm_list_2 (systems (), self_scm ())); return pages_; } /****************************************************************/ -Score_lines::Score_lines () +Score_systems::Score_systems () { - lines_ = SCM_EOL; + systems_ = SCM_EOL; header_ = SCM_EOL; } void -Score_lines::gc_mark () +Score_systems::gc_mark () { - scm_gc_mark (lines_); + scm_gc_mark (systems_); scm_gc_mark (header_); }