From 497e6135d3ed969dd844b382d49c2282deb991a3 Mon Sep 17 00:00:00 2001 From: fred Date: Sun, 24 Mar 2002 19:47:52 +0000 Subject: [PATCH] lilypond-0.0.75 --- input/book.tex | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ lily/break.cc | 42 ++++++++++++++++++++++-------- lily/wordwrap.cc | 2 +- 3 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 input/book.tex diff --git a/input/book.tex b/input/book.tex new file mode 100644 index 0000000000..9a1e16453d --- /dev/null +++ b/input/book.tex @@ -0,0 +1,67 @@ +% should be scriptified, probably +\documentclass{article} +\input lilyponddefs +\title{Bach's Cello suites} + +\author{A.U.Thor} +\begin{document} +\maketitle + +\section{Banjo} + +It is normal to have some text around various figures. Such as this +text which is merely to add some weight to the page. In het midden van +mei/Als de nachtegaals zingen/En de avondglans huwt/aan de morgense schijn. +Als de schuchtere geur/ van de bloeiende seringen/zich mengt met de +geur/van de late jasmijn. Op een tochtje langs de rijn. + +\def\EndLilyPondOutput{} +\begin{figure}[h] + \begin{center} + \leavevmode + \input bach1.out + \caption{original} + \end{center} +\end{figure} + +Voglio centocinquante gramme di gorgonzola, tre di questi pannini e due bionde +ragazze con ciocolatta e panna, per favore. Presto! Non posso parlare +o scrivere la lingua italiana, ma provo. + +\section{Hammond-organ and electric guitar} + +It is normal to have some text around various figures. Such as this +text which is merely to add some weight to the page. In het midden van +mei/Als de nachtegaals zingen/En de avondglans huwt/aan de morgense schijn. +Als de schuchtere geur/ van de bloeiende seringen/zich mengt met de +geur/van de late jasmijn. Op een tochtje langs de rijn. + +\begin{figure}[h] + \begin{center} + \leavevmode +\input bach2.out + + \caption{interpretation 1} + \end{center} +\end{figure} + +It is normal to have some text around various figures. Such as this +text which is merely to add some weight to the page. In het midden van +mei/Als de nachtegaals zingen/En de avondglans huwt/aan de morgense schijn. +Als de schuchtere geur/ van de bloeiende seringen/zich mengt met de +geur/van de late jasmijn. Op een tochtje langs de rijn. + +\begin{figure}[h] + \begin{center} + \leavevmode +\input bach3.out + + \caption{interpretation 2} + \end{center} +\end{figure} + +Voglio centocinquante gramme di gorgonzola, tre di questi pannini e due bionde +ragazze con ciocolatta e panna, per favore. Presto! Non posso parlare +o scrivere la lingua italiana, ma provo. + +\end{document} diff --git a/lily/break.cc b/lily/break.cc index 0f0aabe681..826346f4b3 100644 --- a/lily/break.cc +++ b/lily/break.cc @@ -20,22 +20,35 @@ Line_of_cols Break_algorithm::find_breaks() const { Line_of_cols retval; - for (iter_top(pscore_.cols,c); c.ok(); c++) + for (iter_top(pscore_.cols,c); c.ok(); c++) { if (c->breakable_b()) retval.push(c); - assert(retval.top() == pscore_.cols.bottom().ptr()); + } + if ( linelength <=0) + while ( retval.size() >2) + retval.del(1); + return retval; } +void +Break_algorithm::generate_spacing_problem(Line_of_cols curline, Spacing_problem & sp)const +{ + sp.add_column(curline[0], true, 0.0); + for (int i=1; i< curline.size()-1; i++) + sp.add_column(curline[i]); + + if ( linelength > 0) + sp.add_column(curline.top(), true, linelength); + else + sp.add_column(curline.top()); +} Col_hpositions Break_algorithm::stupid_solution(Line_of_cols curline)const { Spacing_problem sp; - sp.add_column(curline[0], true, 0.0); - for (int i=1; i< curline.size()-1; i++) - sp.add_column(curline[i]); - sp.add_column(curline.top(), true, linelength); + generate_spacing_problem(curline, sp); Col_hpositions colhpos; colhpos.cols = curline; colhpos.energy = INFTY; @@ -49,11 +62,7 @@ Col_hpositions Break_algorithm::solve_line(Line_of_cols curline) const { Spacing_problem sp; - - sp.add_column(curline[0], true, 0.0); - for (int i=1; i< curline.size()-1; i++) - sp.add_column(curline[i]); - sp.add_column(curline.top(), true, linelength); + generate_spacing_problem(curline, sp); // misschien moeven uit Spacing_problem? for (iter_top(pscore_.suz,i); i.ok(); i++) { @@ -80,6 +89,9 @@ Break_algorithm::Break_algorithm(PScore&s) bool Break_algorithm::feasible(Line_of_cols curline) const { + if (linelength <= 0) + return true; + Real l =0; for (int i=0; i < curline.size(); i++) l +=curline[i]->width().length(); @@ -99,3 +111,11 @@ Break_algorithm::problem_OK() const assert(end->breakable_b()); #endif } + +Array +Break_algorithm::solve()const +{ + + return do_solve(); +} + diff --git a/lily/wordwrap.cc b/lily/wordwrap.cc index f0ddf035e3..5aefed16f3 100644 --- a/lily/wordwrap.cc +++ b/lily/wordwrap.cc @@ -17,7 +17,7 @@ */ Array -Word_wrap::solve() +Word_wrap::do_solve()const { problem_OK(); iter_top(pscore_.cols,curcol); -- 2.39.5