+2006-03-08 Joe Neeman <joeneeman@gmail.com>
+
+ * lily/constrained-breaking.cc (get_max_systems): used to return a
+ much too big value
+ (combine_demerits): use pointers to reduce copying data
+ (calc_subproblem): idem
+ (get_page_penalty): add page turn penalties
+
2006-03-09 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * Documentation/user/invoking.itely (Invoking lilypond): better
+ explanation of -e usage.
+
+ * lily/main.cc (main_with_guile): don't append to
+ init_scheme_code_string
+
* tex/texinfo.tex (sectionheading, q.v.): don't center @image.
* Documentation/user/invoking.itely: add note about MacOS X scripts.
@item -e,--evaluate=@var{expr}
Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
Multiple @code{-e} options may be given, they will be evaluated
-sequentially.
+sequentially.
+
+The expression will be evaluated in the @code{guile-user} module, so
+if you want to use definitions in @var{expr}, use
+
+@example
+lilypond -e '(define-public a 42)'
+@end example
+
+@noindent
+on the command-line, and include
+
+@example
+#(use-modules (guile-user))
+@end example
+
+@noindent
+at the top of the @code{.ly} file.
@item -f,--format=@var{format}
which formats should be written. Choices are @code{svg}, @code{ps},
BUG HUNTERS/SUGGESTIONS
+Alan Stern
Andrea Valle
Bertalan Fodor
Bob Broadus
if (0 == sys && j > 0)
break; /* the first line cannot have its first break after the beginning */
- Column_x_positions const &cur = cols_[(j + start_col)*cols_rank_ + brk];
- Column_x_positions prev;
+ Column_x_positions const *cur = &cols_[(j + start_col)*cols_rank_ + brk];
+ Column_x_positions const *prev = NULL;
Real prev_dem = 0;
if (sys > 0)
Real dem;
Real force;
Real pen;
- combine_demerits(prev, cur, &force, &pen, &dem);
+ combine_demerits (prev, cur, &force, &pen, &dem);
dem += prev_dem;
if (isinf (dem))
continue;
for (vsize cur_sys = sys; cur_sys != VPOS; cur_sys--)
{
assert (brk != VPOS);
- ret.push_back( st[cur_sys*rank + brk].line_config_ );
+ ret.push_back( *st[cur_sys*rank + brk].line_config_ );
brk = st[cur_sys*rank + brk].prev_;
}
reverse (ret);
}
Real
-Constrained_breaking::get_page_penalty (vsize start, vsize end, vsize sys_count, vsize sys_num)
+Constrained_breaking::get_page_penalty (vsize start, vsize end, vsize sys_count, vsize sys_num, bool turn)
{
vsize rank;
vsize brk;
if (brk == VPOS) /* we didn't satisfy constraints */
return 0;
- vector<Grob*> &cols = state_[start][sys*rank + brk].line_config_.cols_;
+ vector<Grob*> const &cols = state_[start][sys*rank + brk].line_config_->cols_;
if (cols.empty ())
return 0;
- Grob *pc = cols.back ();
+ Grob const *pc = cols.back ();
if (pc->original ())
{
SCM pen = pc->get_property ("page-penalty");
- if (scm_is_number (pen) && fabs (scm_to_double (pen)) < 10000)
- return scm_to_double (pen);
+ SCM turn_pen = pc->get_property ("page-turn-penalty");
+ Real ret = 0;
+ if (!turn && scm_is_number (pen) && fabs (scm_to_double (pen)) < 10000)
+ ret = scm_to_double (pen);
+ if (turn && scm_is_number (turn_pen) && fabs (scm_to_double (turn_pen)) < 10000)
+ ret = scm_to_double (turn_pen);
+ return ret;
}
return 0;
}
return sys_count + 1;
}
/* no possible breaks satisfy constraints */
- return 0;
+ return 1;
}
int
Constrained_breaking::get_max_systems (vsize start, vsize end)
{
- vsize brk = (end >= start_.size ()) ? breaks_.size () - 1 : start_[end];
+ vsize brk = (end >= start_.size ()) ? breaks_.size () - 1 : starting_breakpoints_[end];
return brk - starting_breakpoints_[start];
}
}
void
-Constrained_breaking::combine_demerits (Column_x_positions const &prev,
- Column_x_positions const &col,
+Constrained_breaking::combine_demerits (Column_x_positions const *prev,
+ Column_x_positions const *col,
Real *force,
Real *penalty,
Real *demerits) const
{
+ Real prev_f = prev ? prev->force_ : 0;
+
*penalty = 0;
- if (col.cols_.empty () || !col.satisfies_constraints_)
+ if (col->cols_.empty () || !col->satisfies_constraints_)
*force = infinity_f;
else
{
- *force = col.force_;
+ *force = col->force_;
- Grob *pc = col.cols_.back ();
+ Grob *pc = col->cols_.back ();
if (pc->original ())
{
SCM pen = pc->get_property ("penalty");
}
}
- *demerits = (*force) * (*force) + abs (prev.force_ - *force) + *penalty;
+ *demerits = (*force) * (*force) + abs (prev_f - *force) + *penalty;
}
Real demerits_;
Real force_;
Real penalty_;
- Column_x_positions line_config_;
+ Column_x_positions const *line_config_;
Constrained_break_node ()
{
demerits_ = infinity_f;
force_ = infinity_f;
penalty_ = 0;
- line_config_.satisfies_constraints_ = false;
+ line_config_ = 0;
}
void print () const
int get_min_systems (vsize start, vsize end);
/* get the page penalty of system number sys with the given breaking */
- Real get_page_penalty (vsize start, vsize end, vsize sys_count, vsize sys);
+ Real get_page_penalty (vsize start, vsize end, vsize sys_count, vsize sys, bool turn);
void resize (vsize systems);
Column_x_positions space_line (vsize start_col, vsize end_col);
void prepare_solution (vsize start, vsize end, vsize sys_count, vsize *rank, vsize *brk);
- void combine_demerits (Column_x_positions const &, Column_x_positions const &,
+ void combine_demerits (Column_x_positions const *, Column_x_positions const *,
Real *force, Real *pen, Real *dem) const;
bool calc_subproblem(vsize start, vsize systems, vsize max_break_index);
+ init_scheme_variables + "))";
init_scheme_code_string
- += "(begin #t "
+ = "(begin #t "
+ init_scheme_variables
+ init_scheme_code_string
+ ")";
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr "zitierte Zeichenkette hinter \\version erwartet"
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
-msgstr "zitierte Zeichenkette hinter \\renameinput erwartet"
+msgid "quoted string expected after \\sourcefilename"
+msgstr "zitierte Zeichenkette hinter \\sourcefilename erwartet"
#: lexer.ll:218
msgid "EOF found inside a comment"
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr "\\version doit être suivi d'une chaîne entre guillemets"
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
-msgstr "\\renameinput doit être suivi d'une chaîne entre guillemets"
+msgid "quoted string expected after \\sourcefilename"
+msgstr "\\sourcefilename doit être suivi d'une chaîne entre guillemets"
#: lexer.ll:218
msgid "EOF found inside a comment"
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr "tekst tussen aanhalingstekens verwacht na \\version"
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
-msgstr "tekst tussen aanhalingstekens verwacht na \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
+msgstr "tekst tussen aanhalingstekens verwacht na \\sourcefilename"
#: lexer.ll:218
msgid "EOF found inside a comment"
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr ""
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
+msgid "quoted string expected after \\sourcefilename"
msgstr ""
#: lexer.ll:218
msgstr "\\version 後應該是加上引號的字串"
#: lexer.ll:205
-msgid "quoted string expected after \\renameinput"
-msgstr "\\renameinput 後應該是加上引號的字串"
+msgid "quoted string expected after \\sourcefilename"
+msgstr "\\sourcefilename 後應該是加上引號的字串"
#: lexer.ll:218
msgid "EOF found inside a comment"