CVSROOT: /cvsroot/lilypond
Module name: lilypond
Branch:
Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/08/15 11:17:43
Modified files:
. : ChangeLog
input/regression: spacing-accidental-stretch.ly
lily : mark-engraver.cc metronome-engraver.cc
paper-column.cc staff-spacing.cc
lily/include : staff-spacing.hh
Log message:
* lily/mark-engraver.cc (stop_translation_timestep): set grob
array for staves found.
* lily/metronome-engraver.cc (stop_translation_timestep): set grob
array for stavesFound.
* lily/staff-spacing.cc (next_note_correction): add fixed and
space to calling convention. This fixes spacing of accidentals
after barlines.
* input/regression/spacing-accidental-stretch.ly: add barline -
accidental case.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4002&tr2=1.4003&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/input/regression/spacing-accidental-stretch.ly.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/mark-engraver.cc.diff?tr1=1.110&tr2=1.111&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/metronome-engraver.cc.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/paper-column.cc.diff?tr1=1.81&tr2=1.82&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/staff-spacing.cc.diff?tr1=1.49&tr2=1.50&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/staff-spacing.hh.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4002 lilypond/ChangeLog:1.4003
--- lilypond/ChangeLog:1.4002 Mon Aug 15 00:10:29 2005
+++ lilypond/ChangeLog Mon Aug 15 11:17:43 2005
@@ -1,5 +1,18 @@
2005-08-15 Han-Wen Nienhuys <[EMAIL PROTECTED]>
+ * lily/mark-engraver.cc (stop_translation_timestep): set grob
+ array for staves found.
+
+ * lily/metronome-engraver.cc (stop_translation_timestep): set grob
+ array for stavesFound.
+
+ * lily/staff-spacing.cc (next_note_correction): add fixed and
+ space to calling convention. This fixes spacing of accidentals
+ after barlines.
+
+ * input/regression/spacing-accidental-stretch.ly: add barline -
+ accidental case.
+
* scm/framework-ps.scm (page-header): add version number to
creator
(eps-header): idem.
Index: lilypond/input/regression/spacing-accidental-stretch.ly
diff -u lilypond/input/regression/spacing-accidental-stretch.ly:1.24
lilypond/input/regression/spacing-accidental-stretch.ly:1.25
--- lilypond/input/regression/spacing-accidental-stretch.ly:1.24 Sun Jun
26 22:39:14 2005
+++ lilypond/input/regression/spacing-accidental-stretch.ly Mon Aug 15
11:17:43 2005
@@ -10,11 +10,12 @@
\score {
\relative c'' \context GrandStaff {
#(set-accidental-style 'piano-cautionary)
- d16 d d d d d cis d
+ \time 2/4
+ d16 d d d d d cis d dis dis dis dis
}
%% not raggedright!!
- \layout { linewidth = 14.\cm
+ \layout { linewidth = 18.\cm
}
}
Index: lilypond/lily/include/staff-spacing.hh
diff -u lilypond/lily/include/staff-spacing.hh:1.9
lilypond/lily/include/staff-spacing.hh:1.10
--- lilypond/lily/include/staff-spacing.hh:1.9 Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/staff-spacing.hh Mon Aug 15 11:17:43 2005
@@ -14,8 +14,8 @@
class Staff_spacing
{
public:
- static Real next_notes_correction (Grob *, Grob *);
- static Real next_note_correction (Grob *, Grob *, Interval);
+ static void next_notes_correction (Grob *, Grob *, Real *, Real *);
+ static void next_note_correction (Grob *, Grob *, Interval, Real*, Real *);
static bool has_interface (Grob *);
static void get_spacing_params (Grob *, Real *, Real *);
Index: lilypond/lily/mark-engraver.cc
diff -u lilypond/lily/mark-engraver.cc:1.110
lilypond/lily/mark-engraver.cc:1.111
--- lilypond/lily/mark-engraver.cc:1.110 Fri Aug 12 00:04:45 2005
+++ lilypond/lily/mark-engraver.cc Mon Aug 15 11:17:43 2005
@@ -14,6 +14,7 @@
#include "item.hh"
#include "warn.hh"
#include "text-interface.hh"
+#include "grob-array.hh"
/**
put stuff over or next to bars. Examples: bar numbers, marginal notes,
@@ -62,8 +63,8 @@
{
if (text_)
{
- SCM lst = get_property ("stavesFound");
- text_->set_object ("side-support-elements", lst);
+ text_->set_object ("side-support-elements",
+ grob_list_to_grob_array (get_property
("stavesFound")));
text_ = 0;
}
mark_ev_ = 0;
Index: lilypond/lily/metronome-engraver.cc
diff -u lilypond/lily/metronome-engraver.cc:1.27
lilypond/lily/metronome-engraver.cc:1.28
--- lilypond/lily/metronome-engraver.cc:1.27 Thu Aug 11 12:52:29 2005
+++ lilypond/lily/metronome-engraver.cc Mon Aug 15 11:17:43 2005
@@ -8,11 +8,11 @@
#include <cctype>
+#include "engraver.hh"
+
#include "note-column.hh"
-#include "bar-line.hh"
-#include "time-signature.hh"
-#include "engraver-group-engraver.hh"
#include "context.hh"
+#include "grob-array.hh"
/**
put stuff over or next to bars. Examples: bar numbers, marginal notes,
@@ -47,7 +47,8 @@
{
Grob *mc = unsmob_grob (get_property ("currentMusicalColumn"));
text_->set_parent (mc, X_AXIS);
- text_->set_object ("side-support-elements", get_property
("stavesFound"));
+ text_->set_object ("side-support-elements",
+ grob_list_to_grob_array (get_property
("stavesFound")));
text_ = 0;
}
Index: lilypond/lily/paper-column.cc
diff -u lilypond/lily/paper-column.cc:1.81 lilypond/lily/paper-column.cc:1.82
--- lilypond/lily/paper-column.cc:1.81 Sat Aug 13 21:35:22 2005
+++ lilypond/lily/paper-column.cc Mon Aug 15 11:17:43 2005
@@ -27,20 +27,26 @@
}
ADD_INTERFACE (Paper_column, "paper-column-interface",
- "@code{Paper_column} objects form the top-most X-parents for
items. "
+ "@code{Paper_column} objects form the top-most X-parents for
items."
" The are two types of columns: musical columns, where are
attached to, and "
" non-musical columns, where bar-lines, clefs etc. are attached
to. "
" The spacing engine determines the X-positions of these
objects."
+
"\n\n"
"They are\n"
" numbered, the first (leftmost) is column 0. Numbering happens
before\n"
" line-breaking, and columns are not renumbered after line
breaking.\n"
" Since many columns go unused, you should only use the rank
field to\n"
" get ordering information. Two adjacent columns may have\n"
- " non-adjacent numbers.\n"
- "\n",
- "between-cols when bounded-by-me "
- "page-penalty shortest-playing-duration
shortest-starter-duration");
+ " non-adjacent numbers.\n",
+
+
+ "between-cols "
+ "bounded-by-me "
+ "page-penalty "
+ "shortest-playing-duration "
+ "shortest-starter-duration "
+ "when ");
void
Paper_column::do_break_processing ()
@@ -110,6 +116,7 @@
extract_grob_set (me, "bounded-by-me", bbm);
if (bbm.size ())
return true;
+
return Item::is_breakable (me);
}
Index: lilypond/lily/staff-spacing.cc
diff -u lilypond/lily/staff-spacing.cc:1.49 lilypond/lily/staff-spacing.cc:1.50
--- lilypond/lily/staff-spacing.cc:1.49 Sat Aug 13 21:35:22 2005
+++ lilypond/lily/staff-spacing.cc Mon Aug 15 11:17:43 2005
@@ -24,13 +24,17 @@
Insert some more space for the next note, in case it has a stem in
the wrong direction
*/
-Real
+void
Staff_spacing::next_note_correction (Grob *me,
Grob *g,
- Interval bar_size)
+ Interval bar_size,
+ Real *space,
+ Real *fix)
{
+ (void)space;
+
if (!g || !Note_column::has_interface (g))
- return 0.0;
+ return ;
Item *col = dynamic_cast<Item *> (g)->get_column ();
Real max_corr = max (0., (- g->extent (col, X_AXIS)[LEFT]));
@@ -80,7 +84,8 @@
max_corr = max (max_corr, corr);
}
}
- return max_corr;
+
+ *fix += max_corr;
}
/*
@@ -114,24 +119,49 @@
pointers to the separation-items, not the note-columns or
note-spacings.
*/
-Real
-Staff_spacing::next_notes_correction (Grob *me, Grob *last_grob)
+void
+Staff_spacing::next_notes_correction (Grob *me, Grob *last_grob,
+ Real *compound_space, Real *compound_fixed
+ )
{
Interval bar_size = bar_y_positions (last_grob);
- Real max_corr = 0.0;
extract_grob_set (me, "right-items", right_items);
+
+ *compound_fixed = 0.0;
+ *compound_space = 0.0;
+ int wishes;
+
for (int i = right_items.size (); i--;)
{
Grob *g = right_items[i];
- max_corr = max (max_corr, next_note_correction (me, g, bar_size));
+ Real space = 0.0;
+ Real fixed = 0.0;
+
+ next_note_correction (me, g, bar_size, &space, &fixed);
+
+ *compound_space += space;
+ *compound_fixed += fixed;
+ wishes ++;
+
extract_grob_set (g, "elements", elts);
for (int j = elts.size (); j--;)
- max_corr = max (max_corr, next_note_correction (me, elts[j], bar_size));
+ {
+ Real space = 0.0;
+ Real fixed = 0.0;
+ next_note_correction (me, elts[j], bar_size, &space, &fixed);
+ *compound_fixed += fixed;
+ *compound_space += space;
+ wishes ++;
+ }
}
- return max_corr;
+ if (wishes)
+ {
+ *compound_space /= wishes;
+ *compound_fixed /= wishes;
+ }
}
void
@@ -152,7 +182,6 @@
}
// printf ("doing col %d\n" , Paper_column::get_rank (left_col));
-
if (!separation_item)
{
programming_error ("no sep item");
@@ -224,7 +253,10 @@
*fixed = *space;
}
- *space += next_notes_correction (me, last_grob);
+ Real correction_fixed, correction_space;
+ next_notes_correction (me, last_grob, &correction_space, &correction_fixed );
+ *space += correction_space;
+ *fixed += correction_fixed;
}
ADD_INTERFACE (Staff_spacing, "staff-spacing-interface",
_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs