CVSROOT: /cvsroot/lilypond
Module name: lilypond
Branch:
Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/04/18 00:36:45
Modified files:
. : ChangeLog
lily : arpeggio.cc beam.cc book.cc break-algorithm.cc
break-align-interface.cc dot-column.cc
global-context-scheme.cc gourlay-breaking.cc
grob.cc hara-kiri-group-spanner.cc item.cc
music-output.cc paper-score.cc performance.cc
score-engraver.cc score-scheme.cc score.cc
spacing-spanner.cc spanner.cc system.cc
lily/include : global-context.hh music-output.hh
paper-score.hh performance.hh score.hh
system.hh
Log message:
* lily/include/paper-score.hh (class Paper_score): remove unused
prototypes.
* lily/book.cc (process): add -COUNT to midi output.
* lily/score.cc (book_rendering): remove outname argument
(book_rendering): return list of Music_outputs.
* lily/global-context-scheme.cc (LY_DEFINE): remove outname argument.
* lily/book.cc (process): loop over Music_outputs returned from
Score::book_rendering().
* lily/include/music-output.hh (class Music_output): smobify class.
* lily/include/paper-score.hh (class Paper_score): make members private.
* lily/performance.cc (process): return #f iso. #<undefined>. This
prevents #<undefined> leaking into GUILE-userspace.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3451&tr2=1.3452&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/arpeggio.cc.diff?tr1=1.49&tr2=1.50&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/beam.cc.diff?tr1=1.298&tr2=1.299&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/book.cc.diff?tr1=1.38&tr2=1.39&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/break-algorithm.cc.diff?tr1=1.42&tr2=1.43&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/break-align-interface.cc.diff?tr1=1.47&tr2=1.48&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/dot-column.cc.diff?tr1=1.81&tr2=1.82&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/global-context-scheme.cc.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/gourlay-breaking.cc.diff?tr1=1.81&tr2=1.82&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob.cc.diff?tr1=1.129&tr2=1.130&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/hara-kiri-group-spanner.cc.diff?tr1=1.34&tr2=1.35&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/item.cc.diff?tr1=1.112&tr2=1.113&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/music-output.cc.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-score.cc.diff?tr1=1.80&tr2=1.81&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/performance.cc.diff?tr1=1.55&tr2=1.56&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/score-engraver.cc.diff?tr1=1.142&tr2=1.143&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/score-scheme.cc.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/score.cc.diff?tr1=1.160&tr2=1.161&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/spacing-spanner.cc.diff?tr1=1.137&tr2=1.138&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/spanner.cc.diff?tr1=1.131&tr2=1.132&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/system.cc.diff?tr1=1.104&tr2=1.105&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/global-context.hh.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/music-output.hh.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/paper-score.hh.diff?tr1=1.29&tr2=1.30&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/performance.hh.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/score.hh.diff?tr1=1.53&tr2=1.54&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/system.hh.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.3451 lilypond/ChangeLog:1.3452
--- lilypond/ChangeLog:1.3451 Sun Apr 17 22:41:22 2005
+++ lilypond/ChangeLog Mon Apr 18 00:36:44 2005
@@ -1,5 +1,23 @@
2005-04-18 Han-Wen Nienhuys <[EMAIL PROTECTED]>
+ * lily/include/paper-score.hh (class Paper_score): remove unused
prototypes.
+
+ * lily/book.cc (process): add -COUNT to midi output.
+
+ * lily/score.cc (book_rendering): remove outname argument
+ (book_rendering): return list of Music_outputs.
+
+ * lily/global-context-scheme.cc (LY_DEFINE): remove outname argument.
+
+ * lily/book.cc (process): loop over Music_outputs returned from
Score::book_rendering().
+
+ * lily/*.cc (width_callback): remove spurious "unused" warnings
+ for assert (axis==[XY]_AXIS);
+
+ * lily/include/music-output.hh (class Music_output): smobify class.
+
+ * lily/include/paper-score.hh (class Paper_score): make members private.
+
* lily/performance.cc (process): return #f iso. #<undefined>. This
prevents #<undefined> leaking into GUILE-userspace.
Index: lilypond/lily/arpeggio.cc
diff -u lilypond/lily/arpeggio.cc:1.49 lilypond/lily/arpeggio.cc:1.50
--- lilypond/lily/arpeggio.cc:1.49 Tue Apr 12 22:49:29 2005
+++ lilypond/lily/arpeggio.cc Mon Apr 18 00:36:45 2005
@@ -140,8 +140,9 @@
Arpeggio::width_callback (SCM smob, SCM axis)
{
Grob *me = unsmob_grob (smob);
- Axis a = (Axis)scm_to_int (axis);
- assert (a == X_AXIS);
+ (void) axis;
+
+ assert (scm_to_int (axis) == X_AXIS);
Stencil arpeggio = Font_interface::get_default_font (me)->find_by_name
("scripts.arpeggio");
return ly_interval2scm (arpeggio.extent (X_AXIS));
Index: lilypond/lily/beam.cc
diff -u lilypond/lily/beam.cc:1.298 lilypond/lily/beam.cc:1.299
--- lilypond/lily/beam.cc:1.298 Tue Apr 12 22:49:29 2005
+++ lilypond/lily/beam.cc Mon Apr 18 00:36:45 2005
@@ -1287,12 +1287,12 @@
Beam::rest_collision_callback (SCM element_smob, SCM axis)
{
Grob *rest = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (axis);
+ (void) axis;
if (scm_is_number (rest->get_property ("staff-position")))
return scm_int2num (0);
- assert (a == Y_AXIS);
+ assert (scm_to_int (axis) == Y_AXIS);
Grob *st = unsmob_grob (rest->get_property ("stem"));
Grob *stem = st;
Index: lilypond/lily/book.cc
diff -u lilypond/lily/book.cc:1.38 lilypond/lily/book.cc:1.39
--- lilypond/lily/book.cc:1.38 Thu Mar 10 14:36:15 2005
+++ lilypond/lily/book.cc Mon Apr 18 00:36:45 2005
@@ -23,6 +23,9 @@
#include "text-item.hh"
#include "warn.hh"
+#include "performance.hh"
+#include "paper-score.hh"
+
#include "ly-smobs.icc"
Book::Book ()
@@ -95,20 +98,36 @@
paper_book->header_ = header_;
/* Render in order of parsing. */
+ int midi_count = 0;
for (SCM s = scm_reverse (scores_); s != SCM_EOL; s = scm_cdr (s))
{
if (Score *score = unsmob_score (scm_car (s)))
{
- SCM systems = score
- ->book_rendering (outname, paper_book->paper_, default_def, key);
+ SCM outputs = score
+ ->book_rendering (paper_book->paper_, default_def, key);
- /* If the score is empty, generate no output. Should we do
- titling? */
- if (scm_is_vector (systems))
+ while (scm_is_pair (outputs))
{
- if (ly_c_module_p (score->header_))
- paper_book->add_score (score->header_);
- paper_book->add_score (systems);
+ Music_output *output = unsmob_music_output (scm_car (outputs));
+
+ if (Performance *perf = dynamic_cast<Performance *> (output))
+ {
+ String fn = outname;
+ if (midi_count)
+ fn += "-" + to_string (midi_count);
+
+ midi_count ++;
+ perf->write_output (fn);
+ }
+ else if (Paper_score *pscore = dynamic_cast<Paper_score *>
(output))
+ {
+ SCM systems = pscore->get_systems ();
+ if (ly_c_module_p (score->header_))
+ paper_book->add_score (score->header_);
+ paper_book->add_score (systems);
+ }
+
+ outputs = scm_cdr (outputs);
}
}
else if (Text_interface::markup_p (scm_car (s)))
Index: lilypond/lily/break-algorithm.cc
diff -u lilypond/lily/break-algorithm.cc:1.42
lilypond/lily/break-algorithm.cc:1.43
--- lilypond/lily/break-algorithm.cc:1.42 Wed Mar 16 19:19:15 2005
+++ lilypond/lily/break-algorithm.cc Mon Apr 18 00:36:45 2005
@@ -19,7 +19,7 @@
Array<int>
Break_algorithm::find_break_indices () const
{
- Link_array<Grob> all = pscore_->system_->columns ();
+ Link_array<Grob> all = pscore_->root_system ()->columns ();
Array<int> retval;
for (int i = 0; i < all.size (); i++)
@@ -36,7 +36,7 @@
Link_array<Grob>
Break_algorithm::find_breaks () const
{
- Link_array<Grob> all = pscore_->system_->columns ();
+ Link_array<Grob> all = pscore_->root_system ()->columns ();
Link_array<Grob> retval;
for (int i = 0; i < all.size (); i++)
@@ -88,7 +88,7 @@
Break_algorithm::set_pscore (Paper_score *s)
{
pscore_ = s;
- linewidth_ = s->layout_->get_dimension (ly_symbol2scm ("linewidth"));
+ linewidth_ = s->layout ()->get_dimension (ly_symbol2scm ("linewidth"));
}
Array<Column_x_positions>
Index: lilypond/lily/break-align-interface.cc
diff -u lilypond/lily/break-align-interface.cc:1.47
lilypond/lily/break-align-interface.cc:1.48
--- lilypond/lily/break-align-interface.cc:1.47 Thu Mar 10 14:36:15 2005
+++ lilypond/lily/break-align-interface.cc Mon Apr 18 00:36:45 2005
@@ -43,8 +43,8 @@
Break_align_interface::self_align_callback (SCM element_smob, SCM axis)
{
Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (axis);
- assert (a == X_AXIS);
+ (void) axis;
+ assert (scm_to_int (axis) == X_AXIS);
Item *item = dynamic_cast<Item *> (me);
Direction bsd = item->break_status_dir ();
Index: lilypond/lily/dot-column.cc
diff -u lilypond/lily/dot-column.cc:1.81 lilypond/lily/dot-column.cc:1.82
--- lilypond/lily/dot-column.cc:1.81 Wed Mar 16 19:19:15 2005
+++ lilypond/lily/dot-column.cc Mon Apr 18 00:36:45 2005
@@ -29,8 +29,8 @@
Dot_column::force_shift_callback (SCM element_smob, SCM axis)
{
Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (axis);
- assert (a == Y_AXIS);
+ (void) axis;
+ assert (scm_to_int (axis) == Y_AXIS);
me = me->get_parent (X_AXIS);
if (!to_boolean (me->get_property ("positioning-done")))
@@ -47,8 +47,8 @@
Dot_column::side_position (SCM element_smob, SCM axis)
{
Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (axis);
- assert (a == X_AXIS);
+ (void) axis;
+ assert (scm_to_int (axis) == X_AXIS);
Grob *stem = unsmob_grob (me->get_property ("stem"));
if (stem
Index: lilypond/lily/global-context-scheme.cc
diff -u lilypond/lily/global-context-scheme.cc:1.7
lilypond/lily/global-context-scheme.cc:1.8
--- lilypond/lily/global-context-scheme.cc:1.7 Sun Apr 17 22:41:23 2005
+++ lilypond/lily/global-context-scheme.cc Mon Apr 18 00:36:45 2005
@@ -17,19 +17,17 @@
#include "main.hh"
LY_DEFINE (ly_format_output, "ly:format-output",
- 2, 0, 0, (SCM context, SCM outname),
+ 1, 0, 0, (SCM context),
"Given a Global context in its final state, "
- "process it and return the (rendered) result.")
+ "process it and return the @code{Music_output} object in its final
state.")
{
Global_context *g = dynamic_cast<Global_context *> (unsmob_context
(context));
SCM_ASSERT_TYPE (g, context, SCM_ARG1, __FUNCTION__, "Global context");
- SCM_ASSERT_TYPE (scm_is_string (outname), outname, SCM_ARG2, __FUNCTION__,
"output file name");
Music_output *output = g->get_output ();
progress_indication ("\n");
-
- /* ugh, midi still wants outname */
- return output->process (ly_scm2string (outname));
+ output->process ();
+ return output->self_scm ();
}
LY_DEFINE (ly_run_translator, "ly:run-translator",
Index: lilypond/lily/gourlay-breaking.cc
diff -u lilypond/lily/gourlay-breaking.cc:1.81
lilypond/lily/gourlay-breaking.cc:1.82
--- lilypond/lily/gourlay-breaking.cc:1.81 Tue Apr 12 22:49:28 2005
+++ lilypond/lily/gourlay-breaking.cc Mon Apr 18 00:36:45 2005
@@ -77,15 +77,15 @@
{
Array<Break_node> optimal_paths;
Link_array<Grob> all
- = pscore_->system_->columns ();
+ = pscore_->root_system ()->columns ();
Array<int> breaks = find_break_indices ();
Break_node first_node;
optimal_paths.push (first_node);
- bool ragged_right = to_boolean (pscore_->layout_->c_variable
("raggedright"));
- bool ragged_last = to_boolean (pscore_->layout_->c_variable ("raggedlast"));
+ bool ragged_right = to_boolean (pscore_->layout ()->c_variable
("raggedright"));
+ bool ragged_last = to_boolean (pscore_->layout ()->c_variable
("raggedlast"));
Real worst_force = 0.0;
for (int break_idx = 1; break_idx < breaks.size (); break_idx++)
@@ -111,7 +111,7 @@
cp.cols_ = line;
Interval line_dims
- = line_dimensions_int (pscore_->layout_,
optimal_paths[start_idx].line_);
+ = line_dimensions_int (pscore_->layout (),
optimal_paths[start_idx].line_);
Simple_spacer_wrapper *sp = generate_spacing_problem (line,
line_dims);
bool last_line = break_idx == breaks.size () - 1;
bool ragged = ragged_right
Index: lilypond/lily/grob.cc
diff -u lilypond/lily/grob.cc:1.129 lilypond/lily/grob.cc:1.130
--- lilypond/lily/grob.cc:1.129 Tue Apr 12 22:49:28 2005
+++ lilypond/lily/grob.cc Mon Apr 18 00:36:45 2005
@@ -172,7 +172,7 @@
Output_def *
Grob::get_layout () const
{
- return pscore_ ? pscore_->layout_ : 0;
+ return pscore_ ? pscore_->layout () : 0;
}
/* Recursively track all dependencies of this Grob. The status_ field
@@ -663,8 +663,8 @@
if (s->original_)
scm_gc_mark (s->original_->self_scm ());
- if (s->pscore_ && s->pscore_->layout_)
- scm_gc_mark (s->pscore_->layout_->self_scm ());
+ if (s->pscore_ && s->pscore_->layout ())
+ scm_gc_mark (s->pscore_->layout ()->self_scm ());
s->do_derived_mark ();
return s->mutable_property_alist_;
Index: lilypond/lily/hara-kiri-group-spanner.cc
diff -u lilypond/lily/hara-kiri-group-spanner.cc:1.34
lilypond/lily/hara-kiri-group-spanner.cc:1.35
--- lilypond/lily/hara-kiri-group-spanner.cc:1.34 Wed Mar 16 19:19:15 2005
+++ lilypond/lily/hara-kiri-group-spanner.cc Mon Apr 18 00:36:45 2005
@@ -19,9 +19,9 @@
Hara_kiri_group_spanner::y_extent (SCM element_smob, SCM scm_axis)
{
Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (scm_axis);
+ (void) scm_axis;
- assert (a == Y_AXIS);
+ assert (scm_to_int (scm_axis) == Y_AXIS);
consider_suicide (me);
return Axis_group_interface::group_extent_callback (me->self_scm (),
scm_axis);
}
@@ -59,8 +59,9 @@
Hara_kiri_group_spanner::force_hara_kiri_callback (SCM element_smob, SCM axis)
{
Grob *me = unsmob_grob (element_smob);
- Axis a = (Axis) scm_to_int (axis);
- assert (a == Y_AXIS);
+ (void) axis;
+
+ assert (scm_to_int (axis) == Y_AXIS);
consider_suicide (me);
return scm_make_real (0.0);
}
Index: lilypond/lily/include/global-context.hh
diff -u lilypond/lily/include/global-context.hh:1.8
lilypond/lily/include/global-context.hh:1.9
--- lilypond/lily/include/global-context.hh:1.8 Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/global-context.hh Mon Apr 18 00:36:45 2005
@@ -44,6 +44,6 @@
Moment now_mom_;
};
-SCM ly_format_output (SCM, SCM);
+SCM ly_format_output (SCM);
#endif // GLOBAL_CONTEXT_HH
Index: lilypond/lily/include/music-output.hh
diff -u lilypond/lily/include/music-output.hh:1.21
lilypond/lily/include/music-output.hh:1.22
--- lilypond/lily/include/music-output.hh:1.21 Sun Apr 17 22:41:23 2005
+++ lilypond/lily/include/music-output.hh Mon Apr 18 00:36:45 2005
@@ -12,12 +12,20 @@
#include "string.hh"
#include "lily-proto.hh"
#include "protected-scm.hh"
+#include "smobs.hh"
class Music_output
{
+ DECLARE_SMOBS(Music_output, foo);
+
+protected:
+ Music_output ();
+
public:
- virtual SCM process (String);
- virtual ~Music_output ();
+ virtual void derived_mark () const;
+ virtual void process ();
};
+DECLARE_UNSMOB (Music_output, music_output);
+
#endif /* MUSIC_OUTPUT_HH */
Index: lilypond/lily/include/paper-score.hh
diff -u lilypond/lily/include/paper-score.hh:1.29
lilypond/lily/include/paper-score.hh:1.30
--- lilypond/lily/include/paper-score.hh:1.29 Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/paper-score.hh Mon Apr 18 00:36:45 2005
@@ -15,27 +15,25 @@
/* LAYOUT output */
class Paper_score : public Music_output
{
-public:
Output_def *layout_;
System *system_;
+ SCM systems_;
- Paper_score ();
+public:
+ Paper_score (Output_def *);
- int find_col_idx (Paper_column const *) const;
- Link_array<Item> broken_col_range (Item const *, Item const *) const;
- void typeset_line (System *);
- void output ();
+ Output_def *layout () const;
+ System *root_system () const;
+
+ void typeset_system (System *);
+ Array<Column_x_positions> calc_breaking ();
+ SCM get_systems () const;
protected:
- virtual SCM process (String);
+ virtual void process ();
+ virtual void derived_mark () const;
private:
- Protected_scm systems_;
-
- void preprocess ();
- void calc_idealspacing ();
- Array<Column_x_positions> calc_breaking ();
- void postprocess ();
Paper_score (Paper_score const &);
};
Index: lilypond/lily/include/performance.hh
diff -u lilypond/lily/include/performance.hh:1.21
lilypond/lily/include/performance.hh:1.22
--- lilypond/lily/include/performance.hh:1.21 Sun Apr 17 22:41:23 2005
+++ lilypond/lily/include/performance.hh Mon Apr 18 00:36:45 2005
@@ -24,7 +24,7 @@
void output_header_track (Midi_stream &midi_stream_r);
void print () const;
- SCM process (String);
+ void write_output (String filename);
Link_array<Audio_staff> audio_staffs_;
Cons<Audio_element> *audio_element_list_;
Index: lilypond/lily/include/score.hh
diff -u lilypond/lily/include/score.hh:1.53 lilypond/lily/include/score.hh:1.54
--- lilypond/lily/include/score.hh:1.53 Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/score.hh Mon Apr 18 00:36:45 2005
@@ -35,7 +35,7 @@
SCM get_music () const;
void set_music (SCM music, SCM parser);
- SCM book_rendering (String, Output_def *, Output_def *, Object_key *);
+ SCM book_rendering (Output_def *, Output_def *, Object_key *);
};
DECLARE_UNSMOB (Score, score);
Index: lilypond/lily/include/system.hh
diff -u lilypond/lily/include/system.hh:1.18
lilypond/lily/include/system.hh:1.19
--- lilypond/lily/include/system.hh:1.18 Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/system.hh Mon Apr 18 00:36:45 2005
@@ -21,8 +21,8 @@
public:
int rank_;
void post_processing ();
- SCM get_line ();
- SCM get_lines ();
+ SCM get_paper_system ();
+ SCM get_paper_systems ();
System (SCM, Object_key const *);
System (System const &, int);
Index: lilypond/lily/item.cc
diff -u lilypond/lily/item.cc:1.112 lilypond/lily/item.cc:1.113
--- lilypond/lily/item.cc:1.112 Wed Mar 16 19:19:15 2005
+++ lilypond/lily/item.cc Mon Apr 18 00:36:45 2005
@@ -74,7 +74,7 @@
{
Grob *dolly = clone (count++);
Item *item = dynamic_cast<Item *> (dolly);
- pscore_->system_->typeset_grob (item);
+ pscore_->root_system ()->typeset_grob (item);
new_copies[i] = item;
}
while (flip (&i) != LEFT);
Index: lilypond/lily/music-output.cc
diff -u lilypond/lily/music-output.cc:1.1 lilypond/lily/music-output.cc:1.2
--- lilypond/lily/music-output.cc:1.1 Sun Apr 17 22:41:23 2005
+++ lilypond/lily/music-output.cc Mon Apr 18 00:36:45 2005
@@ -8,14 +8,16 @@
*/
#include "music-output.hh"
+#include "ly-smobs.icc"
-/*
- Just stubs.
- */
-SCM
+Music_output::Music_output ()
+{
+ smobify_self ();
+}
+
+void
Music_output::process ()
{
- return SCM_EOL;
}
Music_output::~Music_output ()
@@ -23,3 +25,28 @@
}
+void
+Music_output::derived_mark () const
+{
+}
+
+IMPLEMENT_SMOBS (Music_output);
+IMPLEMENT_DEFAULT_EQUAL_P (Music_output);
+IMPLEMENT_TYPE_P (Music_output, "ly:score?");
+
+SCM
+Music_output::mark_smob (SCM s)
+{
+ Music_output *sc = (Music_output *) SCM_CELL_WORD_1 (s);
+
+ sc->derived_mark ();
+ return SCM_EOL;
+}
+
+int
+Music_output::print_smob (SCM, SCM p, scm_print_state*)
+{
+ scm_puts ("#<Music_output>", p);
+
+ return 1;
+}
Index: lilypond/lily/paper-score.cc
diff -u lilypond/lily/paper-score.cc:1.80 lilypond/lily/paper-score.cc:1.81
--- lilypond/lily/paper-score.cc:1.80 Tue Apr 12 22:49:28 2005
+++ lilypond/lily/paper-score.cc Mon Apr 18 00:36:45 2005
@@ -21,10 +21,11 @@
#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_score::Paper_score (Paper_score const &s)
@@ -33,8 +34,15 @@
assert (false);
}
+
+void
+Paper_score::derived_mark () const
+{
+ scm_gc_mark (systems_);
+}
+
void
-Paper_score::typeset_line (System *system)
+Paper_score::typeset_system (System *system)
{
if (!system_)
system_ = system;
@@ -59,8 +67,8 @@
return sol;
}
-SCM
-Paper_score::process (String)
+void
+Paper_score::process ()
{
if (be_verbose_global)
message (_f ("Element count %d (spanners %d) ",
@@ -81,12 +89,24 @@
Array<Column_x_positions> breaking = calc_breaking ();
system_->break_into_pieces (breaking);
- SCM lines = system_->get_lines ();
+ system_->get_paper_systems ();
+}
- /*
- 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;
+System *
+Paper_score::root_system () const
+{
+ return system_;
+}
+
+Output_def *
+Paper_score::layout () const
+{
+ return layout_;
+}
+
+
+SCM
+Paper_score::get_systems () const
+{
+ return root_system ()->get_paper_systems ();
}
Index: lilypond/lily/performance.cc
diff -u lilypond/lily/performance.cc:1.55 lilypond/lily/performance.cc:1.56
--- lilypond/lily/performance.cc:1.55 Sun Apr 17 22:41:23 2005
+++ lilypond/lily/performance.cc Mon Apr 18 00:36:45 2005
@@ -149,8 +149,9 @@
audio_element_list_ = new Killing_cons<Audio_element> (p,
audio_element_list_);
}
-SCM
-Performance::process (String out)
+
+void
+Performance::write_output (String out)
{
if (out == "-")
out = "lelie.midi";
@@ -165,5 +166,4 @@
output (midi_stream);
progress_indication ("\n");
- return SCM_BOOL_F;
}
Index: lilypond/lily/score-engraver.cc
diff -u lilypond/lily/score-engraver.cc:1.142
lilypond/lily/score-engraver.cc:1.143
--- lilypond/lily/score-engraver.cc:1.142 Wed Mar 16 19:19:15 2005
+++ lilypond/lily/score-engraver.cc Mon Apr 18 00:36:45 2005
@@ -111,15 +111,14 @@
+ _ ("Aborting"));
}
- pscore_ = new Paper_score;
- pscore_->layout_ = dynamic_cast<Output_def *> (get_output_def ());
+ pscore_ = new Paper_score (dynamic_cast<Output_def *> (get_output_def ()));
SCM props = updated_grob_properties (context (), ly_symbol2scm ("System"));
Object_key const *sys_key = context ()->get_grob_key ("System");
- pscore_->typeset_line (new System (props, sys_key));
+ pscore_->typeset_system (new System (props, sys_key));
- system_ = pscore_->system_;
+ system_ = pscore_->root_system ();
make_columns ();
system_->set_bound (LEFT, command_column_);
command_column_->set_property ("breakable", SCM_BOOL_T);
@@ -156,7 +155,7 @@
Score_engraver::announce_grob (Grob_info info)
{
announce_infos_.push (info);
- pscore_->system_->typeset_grob (info.grob_);
+ pscore_->root_system ()->typeset_grob (info.grob_);
elems_.push (info.grob_);
}
Index: lilypond/lily/score-scheme.cc
diff -u lilypond/lily/score-scheme.cc:1.6 lilypond/lily/score-scheme.cc:1.7
--- lilypond/lily/score-scheme.cc:1.6 Thu Mar 10 14:36:13 2005
+++ lilypond/lily/score-scheme.cc Mon Apr 18 00:36:45 2005
@@ -62,7 +62,7 @@
SCM context = ly_run_translator (sc->get_music (), score_def->self_scm (),
key);
- SCM lines = ly_format_output (context, scm_makfrom0str ("<embedded>"));
+ SCM lines = ly_format_output (context);
scm_remember_upto_here_1 (prot);
return lines;
Index: lilypond/lily/score.cc
diff -u lilypond/lily/score.cc:1.160 lilypond/lily/score.cc:1.161
--- lilypond/lily/score.cc:1.160 Tue Apr 12 22:49:27 2005
+++ lilypond/lily/score.cc Mon Apr 18 00:36:45 2005
@@ -119,7 +119,7 @@
if (Global_context *g = dynamic_cast<Global_context *>
(unsmob_context (context)))
{
- SCM systems = ly_format_output (context, outname);
+ SCM systems = ly_format_output (context);
Music_output *output = g->get_output ();
if (systems != SCM_UNDEFINED)
{
@@ -135,7 +135,7 @@
paper_book->classic_output (ly_scm2string (outname));
scm_gc_unprotect_object (paper_book->self_scm ());
}
- delete output;
+ scm_gc_unprotect_object (output->self_scm ());
}
scm_remember_upto_here_1 (scaled_def);
@@ -143,14 +143,12 @@
}
/*
- Format score, return systems. OUTNAME is still passed to create a midi
- file.
+ Format score, return list of Music_output objects.
LAYOUTBOOK should be scaled already.
*/
SCM
-Score::book_rendering (String outname,
- Output_def *layoutbook,
+Score::book_rendering (Output_def *layoutbook,
Output_def *default_def,
Object_key *book_key)
{
@@ -163,8 +161,9 @@
if (layoutbook && layoutbook->c_variable ("is-paper") == SCM_BOOL_T)
scale = scm_to_double (layoutbook->c_variable ("outputscale"));
- SCM out = scm_makfrom0str (outname.to_str0 ());
- SCM systems = SCM_EOL;
+ SCM outputs = SCM_EOL;
+ SCM *tail = &outputs;
+
int outdef_count = defs_.size ();
Object_key *key = new Lilypond_general_key (book_key, user_key_, 0);
@@ -175,6 +174,7 @@
{
Output_def *def = outdef_count ? defs_[i] : default_def;
SCM scaled = SCM_EOL;
+
if (def->c_variable ("is-layout") == SCM_BOOL_T)
{
def = scale_output_def (def, scale);
@@ -187,9 +187,10 @@
SCM context = ly_run_translator (music_, def->self_scm (), scm_key);
if (dynamic_cast<Global_context *> (unsmob_context (context)))
{
- SCM s = ly_format_output (context, out);
- if (s != SCM_UNDEFINED)
- systems = s;
+ SCM s = ly_format_output (context);
+
+ *tail = scm_cons (s, SCM_EOL);
+ tail = SCM_CDRLOC(*tail);
}
scm_remember_upto_here_1 (scaled);
@@ -197,7 +198,7 @@
scm_remember_upto_here_1 (scm_key);
scm_remember_upto_here_1 (scaled_bookdef);
- return systems;
+ return outputs;
}
void
Index: lilypond/lily/spacing-spanner.cc
diff -u lilypond/lily/spacing-spanner.cc:1.137
lilypond/lily/spacing-spanner.cc:1.138
--- lilypond/lily/spacing-spanner.cc:1.137 Tue Apr 12 22:49:27 2005
+++ lilypond/lily/spacing-spanner.cc Mon Apr 18 00:36:45 2005
@@ -360,7 +360,7 @@
/*
can't use get_system() ? --hwn.
*/
- Link_array<Grob> all (me->pscore_->system_->columns ());
+ Link_array<Grob> all (me->pscore_->root_system ()->columns ());
set_explicit_neighbor_columns (all);
Index: lilypond/lily/spanner.cc
diff -u lilypond/lily/spanner.cc:1.131 lilypond/lily/spanner.cc:1.132
--- lilypond/lily/spanner.cc:1.131 Tue Apr 12 22:49:27 2005
+++ lilypond/lily/spanner.cc Mon Apr 18 00:36:45 2005
@@ -81,7 +81,7 @@
}
else
{
- Link_array<Item> break_points = pscore_->system_->broken_col_range
(left, right);
+ Link_array<Item> break_points = pscore_->root_system
()->broken_col_range (left, right);
break_points.insert (left, 0);
break_points.push (right);
Index: lilypond/lily/system.cc
diff -u lilypond/lily/system.cc:1.104 lilypond/lily/system.cc:1.105
--- lilypond/lily/system.cc:1.104 Tue Apr 12 22:49:27 2005
+++ lilypond/lily/system.cc Mon Apr 18 00:36:45 2005
@@ -83,7 +83,7 @@
}
SCM
-System::get_lines ()
+System::get_paper_systems ()
{
for (SCM s = get_property ("all-elements"); scm_is_pair (s); s = scm_cdr (s))
{
@@ -154,7 +154,7 @@
System *system = dynamic_cast<System *> (broken_intos_[i]);
system->post_processing ();
- scm_vector_set_x (lines, scm_int2num (i), system->get_line ());
+ scm_vector_set_x (lines, scm_int2num (i), system->get_paper_system ());
if (be_verbose_global)
progress_indication (to_string (i) + "]");
@@ -171,7 +171,7 @@
system->rank_ = i;
Link_array<Grob> c (breaking[i].cols_);
- pscore_->typeset_line (system);
+ pscore_->typeset_system (system);
system->set_bound (LEFT, c[0]);
system->set_bound (RIGHT, c.top ());
@@ -282,7 +282,7 @@
}
SCM
-System::get_line ()
+System::get_paper_system ()
{
static int const LAYER_COUNT = 3;
_______________________________________________
Lilypond-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs