property: add-stem-support
+2004-09-12 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * lily/new-fingering-engraver.cc (stop_translation_timestep): new
+ property: add-stem-support
+
2004-09-11 Han-Wen Nienhuys <hanwen@xs4all.nl>
2004-09-11 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * lily/slur-scoring.cc (get_bound_info): only do
+ broken trend at the end of the line.
+
* VERSION (PACKAGE_NAME): release 2.3.16.
* input/regression/phrasing-slur.ly (Module): remove (duplicate
* VERSION (PACKAGE_NAME): release 2.3.16.
* input/regression/phrasing-slur.ly (Module): remove (duplicate
@code{toplevel-book-handler}. By changing these variables, different
results can be obtained.
@code{toplevel-book-handler}. By changing these variables, different
results can be obtained.
-This required a small change in the syntax. Mode changing commands,
-such as @code{\chords} and @code{\figures} now be directly followed by
-delimeters. The following example demonstrates the new behavior,
+@item Mode changing commands,
+such as @code{\chords} and @code{\figures} must now be directly
+followed by delimiters. The following example demonstrates the new
+behavior,
@verbatim
\figures \context Figures { .. } % wrong
@verbatim
\figures \context Figures { .. } % wrong
-@item Start pitch for @code{relative} music is optional for music lists.
+@item The starting pitch for @code{relative} music is optional for music lists.
The default value is middle C.
@c update-me? formal definition of newaddlyrics, once it works
The default value is middle C.
@c update-me? formal definition of newaddlyrics, once it works
-@item Combining lyrics with music can be done with @code{\newlyrics}
+@item Combining lyrics with music can be done with @code{\addlyrics}
-Syntactically, @code{\newlyrics} acts like an infix operator.
+Syntactically, @code{\addlyrics} acts like an infix operator.
@item The parser is encapsulated in a Scheme function
@code{ly:parse-file}, so the following fragment processes two files
@item The parser is encapsulated in a Scheme function
@code{ly:parse-file}, so the following fragment processes two files
-Titling and page breaks are handled by LilyPond. For automatic page
-breaking, two algorithms are available, the classic ragged pages (the
-default), and optimal page breaking.
-Page breaks may be inserted manually with
+
+@item
+Titling and page breaks are handled by LilyPond. Page breaks may be
+inserted manually with
@example
\pageBreak
@end example
@example
\pageBreak
@end example
cis''''4^\markup { \small \italic "m.g." }\arpeggio~
\grace {
cis8
cis''''4^\markup { \small \italic "m.g." }\arpeggio~
\grace {
cis8
+ \override Stem #'direction = #CENTER
- \override Stem #'direction = #0
-
- a16[-5( fis dis]
#(set-octavation 0)
cis32[ a-1 fis-4 dis] cis[ a fis)-2]
#(set-octavation 0)
cis32[ a-1 fis-4 dis] cis[ a fis)-2]
\override Fingering #'direction = #1
% Manual fix for collision with slur
\override Fingering #'direction = #1
% Manual fix for collision with slur
- \override Fingering #'extra-offset = #'(0 . 1) %tweak
+ \override Fingering #'inside-slur = ##f
<gis gis,> <fis fis,> e)-1-4-5 r
| %6
<gis gis,> <fis fis,> e)-1-4-5 r
| %6
\slurDown
% \fingerDown
\override Fingering #'direction = #-1
\slurDown
% \fingerDown
\override Fingering #'direction = #-1
- \override Fingering #'extra-offset = #'(0 . 1.2)
<e, gis, e d!>2
| %5
s8 cis4. d4
<e, gis, e d!>2
| %5
s8 cis4. d4
- %%<cis e,>8[( <b-3 d,-1>
- <cis e,>8[( <b d,>-3-1
+ \override Fingering #'add-stem-support = ##t
+ \override Fingering #'padding = #0.1
+ <cis e,>8[( <d,_3 b'_1>
- %%<a-2 cis,-1>)] cis4. d4
- <a cis,>)]-2-1 cis4. d4
+ <cis_1 a'_2>)] cis'4. d4
<cis e,>8[( <b d,>
| %7
<a cis,>)]
<cis e,>8[( <b d,>
| %7
<a cis,>)]
- % Allow ugly (highly blown-up) slurs
- \override Slur #'beautiful = #5.0 %tweak
- \override Slur #'attachment-offset = #'((0 . 3) . (0 . -4)) %tweak
\dynamicUp
r8. e,16(\f_2 <a a,>8[ <b b,>]
\dynamicUp
r8. e,16(\f_2 <a a,>8[ <b b,>]
<cis cis,>4\sustainDown
\change Staff=treble
\stemDown
<cis cis,>4\sustainDown
\change Staff=treble
\stemDown
- \override Slur #'attachment = #'(stem . stem) %tweak
- \revert Slur #'attachment %tweak
\change Staff=bass
\stemBoth
\change Staff=bass
\stemBoth
- \revert Slur #'y-free %tweak
- \override Slur #'y-free = #0.1 %tweak
- \revert Slur #'attachment-offset %tweak
- \override Slur #'attachment-offset = #'((0 . 3) . (0 . 8)) %tweak
r8. cis,,16(\sustainUp <fis fis,>8 <gis gis,>
| %3
r8. cis,,16(\sustainUp <fis fis,>8 <gis gis,>
| %3
- \revert Slur #'beautiful %tweak
- \revert Slur #'attachment-offset %tweak
\stemDown
<b,, b,>4
\clef treble
\stemDown
<b,, b,>4
\clef treble
>>
\break
c4) f='2.(\break
>>
\break
c4) f='2.(\break
+ a2.)
+ \stemUp
+ <d='' d'>8( <c c'> \break
+ <bis f' b>)
{
if (fingerings_.size ())
{
{
if (fingerings_.size ())
{
+ for (int i = 0; i < fingerings_.size(); i++)
+ if (stem_ && to_boolean (fingerings_[i].script_->get_property ("add-stem-support")))
+ Side_position_interface::add_support (fingerings_[i].script_, stem_);
position_scripts ();
fingerings_.clear ();
}
for (int i = articulations_.size (); i--;)
{
position_scripts ();
fingerings_.clear ();
}
for (int i = articulations_.size (); i--;)
{
- Grob *sc = articulations_[i].script_;
+ Grob *script = articulations_[i].script_;
for (int j = heads_.size () ; j--;)
for (int j = heads_.size () ; j--;)
- Side_position_interface::add_support (sc, heads_[j]);
+ Side_position_interface::add_support (script, heads_[j]);
- if (stem_ && to_dir (sc->get_property ("side-relative-direction")))
- sc->set_property ("direction-source", stem_->self_scm ());
+ if (stem_ && to_dir (script->get_property ("side-relative-direction")))
+ script->set_property ("direction-source", stem_->self_scm ());
+
+
+ if (stem_ && to_boolean (script->get_property ("add-stem-support")))
+ Side_position_interface::add_support (script, stem_);
if (articulations_[i].follow_into_staff_)
{
if (articulations_[i].follow_into_staff_)
{
- sc->add_offset_callback (Side_position_interface::quantised_position_proc, Y_AXIS);
- sc->set_property ("staff-padding" , SCM_EOL);
+ script->add_offset_callback (Side_position_interface::quantised_position_proc, Y_AXIS);
+ script->set_property ("staff-padding" , SCM_EOL);
ADD_INTERFACE (Text_script,"text-script-interface",
"An object that is put above or below a note",
ADD_INTERFACE (Text_script,"text-script-interface",
"An object that is put above or below a note",
- "slur script-priority inside-slur");
+ "add-stem-support slur script-priority inside-slur");
+
+/*
+ Hmm. Where should we put add-stem-support ?
+ */
ADD_INTERFACE (Script_interface, "script-interface",
"An object that is put above or below a note",
ADD_INTERFACE (Script_interface, "script-interface",
"An object that is put above or below a note",
- "slur script-priority script-stencil inside-slur");
+ "add-stem-support slur script-priority script-stencil inside-slur");
/* descr */ "Build slurs grobs from slur events",
/* creats*/ "Slur",
/* accepts */ "slur-event",
/* descr */ "Build slurs grobs from slur events",
/* creats*/ "Slur",
/* accepts */ "slur-event",
- /* acks */ "note-column-interface accidental-interface fingering-interface script-interface tie-interface",
+ /* acks */ "note-column-interface accidental-interface fingering-interface script-interface tie-interface text-script-interface",
/* reads */ "slurMelismaBusy doubleSlurs",
/* write */ "");
/* reads */ "slurMelismaBusy doubleSlurs",
/* write */ "");
extremes[d].staff_space_ = Staff_symbol_referencer
::staff_space (extremes[d].stem_);
}
extremes[d].staff_space_ = Staff_symbol_referencer
::staff_space (extremes[d].stem_);
}
+ else if (d == RIGHT)
+ /*
+ right side anticipates on the next note.
+ */
extremes[d].neighbor_y_ = broken_trend_y (me, common, d);
extremes[d].neighbor_y_ = broken_trend_y (me, common, d);
+
+ else
+ {
+ Link_array<Grob> columns
+ = Pointer_group_interface__extract_grobs (me, (Grob *) 0, "note-columns");
+ extremes[d].neighbor_y_ = columns[0]->extent (common[Y_AXIS], Y_AXIS)[dir];
+ }
}
while (flip (&d) != LEFT);
return extremes;
}
while (flip (&d) != LEFT);
return extremes;
(Y-offset-callbacks ,list? "see @code{X-offset-callbacks}.")
(accidentals ,list? "List of alteration numbers.")
(Y-offset-callbacks ,list? "see @code{X-offset-callbacks}.")
(accidentals ,list? "List of alteration numbers.")
+ (add-stem-support ,boolean? "If set, the Stem object is included in this script's support")
(align-dir ,ly:dir? "Which side to align? @code{-1}: left side,
@code{0}: around center of width, @code{1}: right side.")
(align-dir ,ly:dir? "Which side to align? @code{-1}: left side,
@code{0}: around center of width, @code{1}: right side.")
stems that are placed in tight configurations. For opposite
directions, this amount is the correction for two normal sized stems
that overlap completely.")
stems that are placed in tight configurations. For opposite
directions, this amount is the correction for two normal sized stems
that overlap completely.")
(string-count ,integer? "The number of strings in a fret diagram.")
(stroke-style ,string? "set to \"grace\" to turn stroke through flag on.")
(string-count ,integer? "The number of strings in a fret diagram.")
(stroke-style ,string? "set to \"grace\" to turn stroke through flag on.")