]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/paper-score.cc
* lily/paper-score.cc (process): run get_paper_systems() only once.
[lilypond.git] / lily / paper-score.cc
index c27a9bfd4910bdfa2eef51cb67cbc02067ef742f..eb431864b2dd460e4cf12502cd63d00b3e9fbc09 100644 (file)
 #include "system.hh"
 #include "warn.hh"
 
-Paper_score::Paper_score ()
+Paper_score::Paper_score (Output_def *layout)
 {
-  layout_ = 0;
+  layout_ = layout;
   system_ = 0;
+  systems_ = SCM_EOL;
+  paper_systems_ = SCM_EOL;
 }
 
 Paper_score::Paper_score (Paper_score const &s)
@@ -33,8 +35,16 @@ Paper_score::Paper_score (Paper_score const &s)
   assert (false);
 }
 
+
+void
+Paper_score::derived_mark () const
+{
+  scm_gc_mark (systems_);
+  scm_gc_mark (paper_systems_);
+}
+
 void
-Paper_score::typeset_line (System *system)
+Paper_score::typeset_system (System *system)
 {
   if (!system_)
     system_ = system;
@@ -59,15 +69,15 @@ Paper_score::calc_breaking ()
   return sol;
 }
 
-SCM
-Paper_score::process (String)
+void
+Paper_score::process ()
 {
   if (be_verbose_global)
-    progress_indication (_f ("Element count %d (spanners %d) ",
+    message (_f ("Element count %d (spanners %d) ",
                             system_->element_count (),
                             system_->spanner_count ()));
 
-  progress_indication (_ ("Preprocessing graphical objects...") + " ");
+  message (_ ("Preprocessing graphical objects...") + " ");
 
   /* FIXME: Check out why we need this - removing gives assertion failures
      down the road.
@@ -81,12 +91,25 @@ Paper_score::process (String)
 
   Array<Column_x_positions> breaking = calc_breaking ();
   system_->break_into_pieces (breaking);
-  SCM lines = system_->get_lines ();
-
-  /*
-    retain Grobs, since they are pointed to by the point & click data
-    structures, and are not marked fully, because child -> parent
-    links aren't marked.
-   */
-  return lines;
+
+  paper_systems_ = system_->get_paper_systems ();
+}
+
+System *
+Paper_score::root_system () const
+{
+  return system_;
+}
+
+Output_def *
+Paper_score::layout () const
+{
+  return layout_;
+}
+  
+
+SCM
+Paper_score::get_systems () const
+{
+  return paper_systems_;
 }