Guide, node Updating translation committishes.
@end ignore
-@c \version "2.13.36"
+@c \version "2.13.48"
@c Translators: Till Paala
\override Staff.StaffSymbol #'line-positions = #'(-2 3)
% This is necessary; if not entered, the barline would be too short!
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
}
\new DrumStaff {
@end lilypond
In diesem Spezialfalls muss die Länge der Taktlinie mit
-@code{\override Staff.BarLine #'bar-size #number} angepasst werden.
+@code{\override Staff.BarLine #'bar-extent #'(von . zu)} angepasst werden.
Andernfalls wäre sie zu kurz. Die Position der beiden Linien muss
auch definiert werden.
tambustaff = {
\override Staff.StaffSymbol #'line-positions = #'( 0 )
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Tambourine"
}
tamtamstaff = {
\override Staff.StaffSymbol #'line-positions = #'( 0 )
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Tamtam"
}
bellstaff = {
\override DrumStaff.StaffSymbol #'line-positions = #'(-2 3)
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Different Bells"
}
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.36"
+@c \version "2.13.48"
@node Percusión
@section Percusión
\override Staff.StaffSymbol #'line-positions = #'(-2 3)
% This is necessary; if not entered, the barline would be too short!
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
}
\new DrumStaff {
@end lilypond
Observe que en este caso especial se debe alterar la longitud de la
-línea divisoria con @code{\override Staff.BarLine #'bar-size #number}.
+línea divisoria con @code{\override Staff.BarLine #'bar-extent #'(de . a)}.
En caso contrario resulta demasiado corta. También debe definir las
posiciones de las dos líneas del pentagrama. Para más información
sobre estos delicados asuntos, consulte @ref{El símbolo del pentagrama}.
tambustaff = {
\override Staff.StaffSymbol #'line-positions = #'( 0 )
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Tambourine"
}
tamtamstaff = {
\override Staff.StaffSymbol #'line-positions = #'( 0 )
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Tamtam"
}
bellstaff = {
\override DrumStaff.StaffSymbol #'line-positions = #'(-2 3)
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Different Bells"
}
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.36"
+@c \version "2.13.48"
@c Translators: Valentin Villenave
@c Translation checkers: Jean-Charles Malahieude, John Mandereau
@lilypond[ragged-right,verbatim]
\new ChordNames \with {
- \override BarLine #'bar-size = #4
+ \override BarLine #'bar-extent = #'(-2 . 2)
\consists Bar_engraver
\consists "Volta_engraver"
}
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.36"
+@c \version "2.13.48"
@node Percussion
@section Percussion
\override Staff.StaffSymbol #'line-positions = #'(-2 3)
% This is necessary; if not entered, the barline would be too short!
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
}
\new DrumStaff {
@end lilypond
Note that in this special case the length of the barline must
-altered with @code{\override Staff.BarLine #'bar-size #number}.
+altered with @code{\override Staff.BarLine #'bar-extent #'(from . to)}.
Otherwise it would be too short. And you have also to define the
positions of the two stafflines. For more information about these
delicate things have a look at @ref{Staff symbol}.
tambustaff = {
\override Staff.StaffSymbol #'line-positions = #'( 0 )
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Tambourine"
}
tamtamstaff = {
\override Staff.StaffSymbol #'line-positions = #'( 0 )
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Tamtam"
}
bellstaff = {
\override DrumStaff.StaffSymbol #'line-positions = #'(-2 3)
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
- \override Staff.BarLine #'bar-size = #3
+ \override Staff.BarLine #'bar-extent = #'(-1.5 . 1.5)
\set DrumStaff.instrumentName = #"Different Bells"
}
%% Do not edit this file; it is automatically
%% generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.12.2"
+\version "2.13.48"
\header {
lsrtags = "chords"
} % begin verbatim
\new ChordNames \with {
- \override BarLine #'bar-size = #4
+ \override BarLine #'bar-extent = #'(-2 . 2)
\consists "Bar_engraver"
}
\chordmode {
%% Do not edit this file; it is automatically
%% generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.12.2"
+\version "2.13.48"
\header {
lsrtags = "rhythms, percussion"
\new DrumStaff \with {
drumStyleTable = #timbales-style
\override StaffSymbol #'line-count = #2
- \override BarLine #'bar-size = #2
+ \override BarLine #'bar-extent = #'(-1 . 1)
} <<
\set Staff.instrumentName = #"timbales"
\timb
%% Do not edit this file; it is automatically
%% generated from LSR http://lsr.dsi.unimi.it
%% This file is in the public domain.
-\version "2.12.2"
+\version "2.13.48"
\header {
lsrtags = "ancient-notation"
\override NoteHead #'style = #'vaticana.vupes
g f
\override NoteHead #'style = #'vaticana.linea.punctum
- \once \override Staff.BarLine #'bar-size = #2.0 \bar "|"
+ \once \override Staff.BarLine #'bar-extent = #'(-1 . 1) \bar "|"
% \break % 3 (8*1)
es d
--- /dev/null
+\header {
+ texidoc = "Bar line extent can be customised and the customised value
+ must be respected when staff symbol is changed temporarily (e.g. to
+ simulate ledger lines of renaissance prints and manuscripts);
+ moreover, span bars should not enter the staves."
+}
+
+
+\version "2.13.48"
+
+ledgerUp =
+{
+ s2
+ \stopStaff
+ \override Staff.StaffSymbol #'line-positions = #'(-4 -2 0 2 4 6)
+ \startStaff
+ s2
+ \noBreak
+ s2
+ \stopStaff
+ \revert Staff.StaffSymbol #'line-positions
+ \startStaff
+ s2
+}
+
+ledgerDown =
+{
+ s2
+ \stopStaff
+ \override Staff.StaffSymbol #'line-positions = #'(-6 -4 -2 0 2 4)
+ \startStaff
+ s1
+ \stopStaff
+ \revert Staff.StaffSymbol #'line-positions
+ \startStaff
+ s2
+}
+
+\new StaffGroup
+<<
+ \new Staff \with
+ {
+ \override BarLine #'bar-extent = #'(-1 . 1.5)
+ }
+ {
+ \ledgerUp \ledgerDown
+ s1*4
+ s1*4
+ \ledgerUp \ledgerDown
+ \ledgerUp \ledgerDown
+ \ledgerUp \ledgerDown
+ \ledgerUp \ledgerDown
+ s1*4
+ s1*4
+ }
+
+ \new Staff \with
+ {
+ \override BarLine #'bar-extent = #'(0 . 0)
+ }
+ {
+ s1*4
+ s1*4
+ \ledgerUp \ledgerDown
+ \ledgerUp \ledgerDown
+ \ledgerDown \ledgerUp
+ s1*4
+ s1*4
+ \ledgerUp \ledgerDown
+ \ledgerUp \ledgerDown
+ }
+
+ \new Staff \with
+ {
+ \override BarLine #'bar-extent = #'(-2 . 0)
+ }
+ {
+ s1*4
+ \ledgerUp \ledgerDown
+ s1*4
+ s1*4
+ s1*4
+ \ledgerUp \ledgerDown
+ \ledgerDown \ledgerUp
+ \ledgerUp \ledgerDown
+ \ledgerDown \ledgerUp
+ }
+>>
}
-\version "2.12.0"
+\version "2.13.48"
drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
drl = \drummode {\repeat "unfold" 3 {bd4 sn8 bd bd4 << bd ss >> } bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
\new DrumStaff \with {
drumStyleTable = #timbales-style
\override StaffSymbol #'line-count = #2
- \override BarLine #'bar-size = #2
+ \override BarLine #'bar-extent = #'(-1 . 1)
} <<
\set Staff.instrumentName = "timbales"
\timb
staves synchronized with the notes."
}
-\version "2.12.0"
+\version "2.13.48"
skips =
{
\consists "Grid_point_engraver"
\override VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 4)
gridInterval = #(ly:make-moment 1 8)
- \override BarLine #'bar-size = #0.05
+ \override BarLine #'bar-extent = #'(-0.025 . 0.025)
}
\context {
\StaffGroup
-\version "2.12.0"
+\version "2.13.48"
\header{
texidoc="
\context Lyrics \with {
\consists "Bar_engraver"
\consists "Separating_line_group_engraver"
- \override BarLine #'bar-size = #4
+ \override BarLine #'bar-extent = #'(-2 . 2)
} \lyricmode {
looooooooooooooooooooooooooooooooooong1 syllable
}
SCM
Bar_line::calc_bar_extent (SCM smob)
{
+ Interval result;
Grob *me = unsmob_grob (smob);
+ if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me))
+ result = staff->extent (staff, Y_AXIS);
- SCM size = me->get_property ("bar-size");
-
- if (!scm_is_number (size)
- || !Staff_symbol_referencer::get_staff_symbol (me))
- return ly_interval2scm (Interval ());
-
- Real h = scm_to_double (size);
- return ly_interval2scm (Interval (-h / 2, h / 2));
+ return ly_interval2scm (result);
}
Interval
Grob *me = unsmob_grob (smob);
SCM s = me->get_property ("glyph-name");
- SCM barsize = me->get_property ("bar-size");
+ SCM extent = me->get_property ("bar-extent");
- if (scm_is_string (s) && scm_is_number (barsize))
+ if (scm_is_string (s) && is_number_pair (extent))
{
string str = ly_scm2string (s);
- Real sz = robust_scm2double (barsize, 0);
- if (sz <= 0)
- return SCM_EOL;
+ Interval ex = ly_scm2interval (extent);
+ if (ex.length () > 0)
+ {
+ Stencil result = compound_barline (me, str, ex, false);
- return compound_barline (me, str, sz, false).smobbed_copy ();
+ return result.smobbed_copy ();
+ }
}
return SCM_EOL;
}
Stencil
-Bar_line::compound_barline (Grob *me, string str, Real h,
+Bar_line::compound_barline (Grob *me, string str, Interval const &extent,
bool rounded)
{
Real kern = robust_scm2double (me->get_property ("kern"), 1);
hair *= staffline;
fatline *= staffline;
- Stencil thin = simple_barline (me, hair, h, rounded);
- Stencil thick = simple_barline (me, fatline, h, rounded);
+ Stencil thin = simple_barline (me, hair, extent, rounded);
+ Stencil thick = simple_barline (me, fatline, extent, rounded);
Stencil dot = Font_interface::get_default_font (me)->find_by_name ("dots.dot");
int lines = Staff_symbol_referencer::line_count (me);
colon.add_stencil (dot);
colon.translate_axis (-dist / 2, Y_AXIS);
+ Real const h = extent.length ();
Stencil m;
- Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
- Real center = 0;
- if (staff)
- {
- Interval staff_extent = staff->extent (staff, Y_AXIS);
- center = staff_extent.center ();
- }
if (str == "||:")
str = "|:";
if (str == "")
{
- Stencil empty = Lookup::blank (Box (Interval (0, 0), Interval (-h / 2, h / 2)));
- empty.translate_axis (center, Y_AXIS);
+ Stencil empty = Lookup::blank (Box (Interval (0, 0), extent));
return empty;
}
else if (str == "|")
- {
- thin.translate_axis (center, Y_AXIS);
- return thin;
- }
+ return thin;
else if (str == ".")
- {
- thick.translate_axis (center, Y_AXIS);
- return thick;
- }
+ return thick;
else if (str == "|." || (h == 0 && str == ":|"))
{
m.add_at_edge (X_AXIS, LEFT, thick, 0);
}
else if (str == ":")
{
- int c = (Staff_symbol_referencer::line_count (me));
-
- for (int i = 0; i < c - 1; i++)
+ if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me))
{
- Real y = (- (c - 1.0) / 2 + 0.5 + i) * staff_space;
- Stencil d (dot);
-
- d.translate_axis (y, Y_AXIS);
- m.add_stencil (d);
+ Interval staff_extent = staff->extent (staff, Y_AXIS);
+
+ /*
+ assume staff lines are disposed equally at unit space;
+ put a dot into each space within extent (may extend staff_extent).
+
+ staff_extent is an interval of two integers or two half-integers;
+ in the former case dots are to be placed at half-integers,
+ in the latter at integers.
+
+ these integers are not exact due to staff line thickness.
+ */
+ int const pos = int (rint (staff_extent.at (UP) * 2));
+ Real const correction = pos & 1 ? 0.0 : 0.5;
+
+ for (int i = int (rint (extent.at (DOWN) + (0.5 - correction))),
+ e = int (rint (extent.at (UP) + (0.5 - correction)));
+ i < e;
+ ++i)
+ {
+ Stencil d (dot);
+
+ d.translate_axis (i + correction, Y_AXIS);
+ m.add_stencil (d);
+ }
}
}
else if (str == "dashed")
- m = dashed_bar_line (me, h, hair);
+ m = dashed_bar_line (me, extent, hair);
else if (str == "'")
- m = tick_bar_line (me, h, rounded);
+ m = tick_bar_line (me, extent.at (UP), rounded);
- m.translate_axis (center, Y_AXIS);
return m;
}
Stencil
Bar_line::simple_barline (Grob *me,
Real w,
- Real h,
+ Interval const &extent,
bool rounded)
{
Real blot
? me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"))
: 0.0;
- return Lookup::round_filled_box (Box (Interval (0, w),
- Interval (-h / 2, h / 2)), blot);
+ return Lookup::round_filled_box (Box (Interval (0, w), extent), blot);
}
Stencil
: 0.0;
return Lookup::round_filled_box (Box (Interval (0, line_thick),
- Interval (h / 2 - th, h / 2 + th)), blot);
-}
-
-MAKE_SCHEME_CALLBACK (Bar_line, calc_bar_size, 1);
-SCM
-Bar_line::calc_bar_size (SCM smob)
-{
- Grob *me = unsmob_grob (smob);
- if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (me))
- {
- Interval staff_y = staff->extent (staff, Y_AXIS);
- return scm_from_double (staff_y.is_empty () ? 0.0 : staff_y.length ());
- }
- return scm_from_int (0);
+ Interval (h - th, h + th)), blot);
}
Stencil
-Bar_line::dashed_bar_line (Grob *me, Real h, Real thick)
+Bar_line::dashed_bar_line (Grob *me, Interval const &extent, Real thick)
{
Real dash_size
= 1.0 - robust_scm2double (me->get_property ("gap"), 0.3);
connections.
*/
Real ss = Staff_symbol_referencer::staff_space (me);
- int count = Staff_symbol_referencer::line_count (me);
- Real line_thick = Staff_symbol_referencer::line_thickness (me);
+ Real const h = extent.length ();
+ int dashes = int (rint (h / ss));
- if (fabs (line_thick + (count -1) * ss - h) < 0.1) // ugh.
+ /*
+ there are two concerns:
+ 1. one dash plus one space should be one staff space
+ 2. the line should begin and end with half a dash
+
+ both can be satisfied, if the extent is (roughly) an integer
+ multiple of staff space.
+ */
+ if (fabs (h / ss - dashes) < 0.1)
{
Real blot
= me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
- Real half_space = ss / 2;
+ Real const half_dash = dash_size / 2;
Stencil bar;
- for (int i = (count - 1); i >= -(count - 1); i -= 2)
+ for (int i = 0; i <= dashes; ++i)
{
- Real top_y = min ((i + dash_size) * half_space,
- (count - 1) * half_space + line_thick / 2);
- Real bot_y = max ((i - dash_size) * half_space,
- -(count - 1) * half_space - line_thick / 2);
+ Real top_y = extent.at (DOWN)
+ + (i == dashes ? h : (i + half_dash) * ss);
+ Real bot_y = extent.at (DOWN) + (i ? (i - half_dash) * ss : 0.0);
bar.add_stencil (Lookup::round_filled_box (Box (Interval (0, thick),
Interval (bot_y, top_y)),
We have to scale the dashing so it starts and ends with half a
dash exactly.
*/
- int dashes = int (rint (h / ss));
Real total_dash_size = h / dashes;
Real factor = (dash_size - thick) / ss;
box.add_point (Offset (0, h));
Stencil s (box, at);
- s.translate (Offset (thick / 2, -h / 2));
+ s.translate (Offset (thick / 2, extent.at (DOWN)));
return s;
}
return Stencil ();
"thick-thickness "
"glyph "
"glyph-name "
- "bar-size "
"bar-extent "
);
public:
DECLARE_GROB_INTERFACE();
- static Stencil dashed_bar_line (Grob *me, Real h, Real thick);
+ static Stencil dashed_bar_line (Grob *me, Interval const &extent, Real thick);
static Stencil tick_bar_line (Grob *me, Real h, bool rounded);
- static Stencil compound_barline (Grob *, string, Real height, bool rounded);
- static Stencil simple_barline (Grob *, Real wid, Real height, bool rounded);
+ static Stencil compound_barline (Grob *, string, Interval const &extent,
+ bool rounded);
+ static Stencil simple_barline (Grob *, Real wid, Interval const &extent,
+ bool rounded);
static Interval bar_y_extent (Grob *, Grob *);
static bool non_empty_barline (Grob *me);
DECLARE_SCHEME_CALLBACK (calc_bar_extent, (SCM));
- DECLARE_SCHEME_CALLBACK (calc_bar_size, (SCM));
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (calc_anchor, (SCM));
};
static void add_bar (Grob *, Grob *);
static void evaluate_glyph (Grob *);
DECLARE_SCHEME_CALLBACK (width, (SCM smob));
- DECLARE_SCHEME_CALLBACK (calc_bar_size, (SCM));
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (calc_glyph_name, (SCM));
DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
#include "bar-line.hh"
#include "grob.hh"
#include "pointer-group-interface.hh"
+#include "staff-symbol-referencer.hh"
+
void
Span_bar::add_bar (Grob *me, Grob *b)
{
Grob *bar = elements[i];
Interval ext = Bar_line::bar_y_extent (bar, refp);
+ if (Grob *staff = Staff_symbol_referencer::get_staff_symbol (bar))
+ ext.unite (staff->extent (refp, Y_AXIS));
if (ext.is_empty ())
continue;
{
Stencil interbar = Bar_line::compound_barline (model_bar,
glyph_string,
- l.length (),
+ l,
false);
- interbar.translate_axis (l.center (), Y_AXIS);
span_bar.add_stencil (interbar);
}
}
/*
urg.
*/
- Stencil m = Bar_line::compound_barline (me, gl, 40 PT, false);
+ Stencil m =
+ Bar_line::compound_barline (me, gl, Interval (-20 PT, 20 PT), false);
return ly_interval2scm (m.extent (X_AXIS));
}
return ly_scm2interval (Axis_group_interface::generic_group_extent (me, Y_AXIS));
}
-MAKE_SCHEME_CALLBACK (Span_bar, calc_bar_size, 1);
-SCM
-Span_bar::calc_bar_size (SCM smob)
-{
- Grob *me = unsmob_grob (smob);
- Interval iv (get_spanned_interval (me));
- if (iv.is_empty ())
- {
- /* This happens if the bars are hara-kiried from under us. */
- me->suicide ();
- return scm_from_double (-1);
- }
- return scm_from_double (iv.length ());
-}
-
ADD_INTERFACE (Span_bar,
"A bar line that is spanned between other barlines. This"
" interface is used for bar lines that connect different"
%%%% You should have received a copy of the GNU General Public License
%%%% along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
-\version "2.13.42"
+\version "2.13.48"
\context {
\name "Global"
\name RhythmicStaff
\alias "Staff"
- \override BarLine #'bar-size = #4
+ \override BarLine #'bar-extent = #'(-2 . 2)
\override VoltaBracket #'staff-padding = #3
\override StaffSymbol #'line-count = #1
%% make sure that barlines aren't collapsed, when
%% Bar_engraver is there.
- \override BarLine #'bar-size = #0.1
+ \override BarLine #'bar-extent = #'(-0.05 . 0.05)
}
return str
+@rule ((2, 13, 48),
+ _ ("Replace bar-size with bar-extent."))
+
+def conv(str):
+ def size_as_extent (matchobj):
+ half = "%g" % (float (matchobj.group (1)) / 2)
+ return "bar-extent = #'(-" + half + " . " + half + ")"
+
+ str = re.sub (r"bar-size\s*=\s*#([0-9\.]+)", size_as_extent, str)
+
+ return str
+
# Guidelines to write rules (please keep this at the end of this file)
#
# - keep at most one rule per version; if several conversions should be done,
;;
;; b
;;
- (bar-size ,ly:dimension? "The size of a bar line.")
(base-shortest-duration ,ly:moment? "Spacing is based on the
shortest notes in a piece. Normally, pieces are spaced as if notes at
least as short as this are present.")
. (
(allow-span-bar . #t)
(bar-extent . ,ly:bar-line::calc-bar-extent)
- (bar-size . ,ly:bar-line::calc-bar-size)
(break-align-anchor . ,ly:bar-line::calc-anchor)
(break-align-symbol . staff-bar)
(break-visibility . ,bar-line::calc-break-visibility)
. (
(allow-span-bar . #t)
(bar-extent . ,ly:axis-group-interface::height)
- (bar-size . ,ly:span-bar::calc-bar-size)
(before-line-breaking . ,ly:span-bar::before-line-breaking)
(break-align-symbol . staff-bar)
(cross-staff . #t)