#include "paper-column.hh"
#include "scm-hash.hh"
#include "gourlay-breaking.hh"
-#include "paper-outputter.hh"
+//#include "paper-outputter.hh"
#include "input-file-results.hh"
#include "misc.hh"
#include "all-font-metrics.hh"
+#include "stencil.hh"
+#include "paper-book.hh"
+#include "ly-module.hh"
+
Paper_score::Paper_score ()
{
- paper_ =0;
- outputter_ =0;
+ paper_ = 0;
system_ = 0;
- main_smob_ = SCM_EOL;
+}
+
+Paper_score::Paper_score (Paper_score const &s)
+ : Music_output (s)
+{
+ assert (false);
}
void
-Paper_score::typeset_line (System *l)
+Paper_score::typeset_line (System *system)
{
if (!system_)
- {
- system_ = l; // ugh.
- }
+ system_ = system;
- main_smob_ = gh_cons (l->self_scm (), main_smob_);
- l->pscore_ = this;
+ systems_ = gh_cons (system->self_scm (), systems_);
+ system->pscore_ = this;
- scm_gc_unprotect_object (l->self_scm());
-}
-
-
-Paper_score::Paper_score (Paper_score const &s)
- : Music_output (s)
-{
- assert (false);
+ scm_gc_unprotect_object (system->self_scm ());
}
Array<Column_x_positions>
return sol;
}
-/*
- urg. clean me
- */
-void
-Paper_score::process (String outname)
+SCM
+Paper_score::process (String)
{
if (verbose_global_b)
progress_indication (_f ("Element count %d (spanners %d) ",
system_->element_count (),
system_->spanner_count ()));
-
progress_indication (_ ("Preprocessing graphical objects...") + " ");
- /*
- Be sure to set breakability on first & last column.
- */
- {
- Link_array<Grob> pc (system_->columns ());
-
- pc[0]->set_grob_property ("breakable", SCM_BOOL_T);
- pc.top ()->set_grob_property ("breakable", SCM_BOOL_T);
- }
+ /* FIXME: Check out why we need this - removing gives assertion failures
+ down the road.
+
+ doubly, also done in Score_engraver */
+ Link_array<Grob> pc (system_->columns ());
+ pc[0]->set_property ("breakable", SCM_BOOL_T);
+ pc.top ()->set_property ("breakable", SCM_BOOL_T);
+
system_->pre_processing ();
Array<Column_x_positions> breaking = calc_breaking ();
system_->break_into_pieces (breaking);
-
- outputter_ = paper_->get_paper_outputter (outname);
- outputter_->output_header ();
- outputter_->output_version ();
-
+ SCM lines = system_->get_lines ();
progress_indication ("\n");
- if (global_input_file->header_)
- {
- outputter_->output_scope (global_input_file->header_, "lilypond");
- outputter_->write_header_fields_to_file (global_input_file->header_);
- }
+ /* Only keep result stencils in lines_, *title_; delete all grobs. */
+ systems_ = SCM_EOL;
- if (header_)
- {
- outputter_->output_scope (header_, "lilypond");
- outputter_->write_header_fields_to_file (header_);
- }
-
- outputter_->output_scope (paper_->scope_, "lilypondpaper");
-
- SCM scm = scm_list_n (ly_symbol2scm ("header-end"), SCM_UNDEFINED);
- outputter_->output_scheme (scm);
-
- system_->output_lines ();
-
- scm = scm_list_n (ly_symbol2scm ("end-output"), SCM_UNDEFINED);
- outputter_->output_scheme (scm);
-
- progress_indication ("\n");
-
- // huh?
- delete outputter_;
- outputter_ = 0;
+ return lines;
}