2005-10-21 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * scm/define-grobs.scm (all-grob-descriptions): remove
+ RemoveEmptyVerticalGroup
+
+ * lily/hara-kiri-engraver.cc (get_spanner): create VerticalAxisGroup.
+
* lily/include/lily-guile.hh (GUILE_ELLIPSIS): define to get clean
compile on MOSX
(if (and (memq 'note-head-interface ifs)
(memq sp '(-2 -3 -5)))
(begin
- (ly:grob-set-callback! gr 'stencil Text_interface::print)
+ (ly:grob-set-property! gr 'stencil Text_interface::print)
(ly:grob-set-property! gr 'font-family 'roman)
(ly:grob-set-property!
gr 'text
=
#(parenthesize-callback Note_head::print)
g bes
- \revert NoteHead % stencil
+ \revert NoteHead #'stencil
\override Beam #'stencil
=
stich = \relative c'' {
\override Staff.NoteCollision #'merge-differently-dotted = ##t
\set fontSize = #-3
- %% broken?
- \override Stem #'beamed-lengths = #(map (lambda (x) (* 0.2 x)) '(3.26))
+ \override Stem #'length-fraction = #(magstep -3)
\voiceTwo
\partial 4
For a beam that only has one stem, we try to do some disappearance magic:
we revert the flag, and move on to The Eternal Engraving Fields. */
+ Direction d = CENTER;
+
int count = visible_stem_count (me);
if (count < 2)
{
me->suicide ();
return SCM_UNSPECIFIED;
}
+ else
+ {
+ /*
+ ugh.
+
+ can happen in stem-tremolo case.
+ TODO: fixme.
+ */
+ d = Stem::get_default_dir (stems[0]);
+ }
}
- Direction d = CENTER;
if (count >= 1)
{
d = get_default_dir (me);
consider_auto_knees (me);
- set_stem_directions (me, d);
+ }
+ if (d)
+ {
+ set_stem_directions (me, d);
connect_beams (me);
-
set_stem_shorten (me);
}
-
+
return scm_from_int (d);
}
#include "translator.icc"
+/*
+ TODO: fold together with axis_group_engraver?
+ */
+
class Hara_kiri_engraver : public Axis_group_engraver
{
protected:
Spanner *
Hara_kiri_engraver::get_spanner ()
{
- Spanner *sp = make_spanner ("RemoveEmptyVerticalGroup", SCM_EOL);
-
+ Spanner *sp = make_spanner ("VerticalAxisGroup", SCM_EOL);
return sp;
}
ADD_TRANSLATOR (Hara_kiri_engraver,
/* doc */ "Like Axis_group_engraver, but make a hara-kiri spanner, and add "
"interesting items (ie. note heads, lyric syllables and normal rests) ",
- /* create */ "RemoveEmptyVerticalGroup",
+ /* create */ "VerticalAxisGroup",
/* accept */ "",
/* read */ "keepAliveInterfaces",
/* write */ "");
Hara_kiri_group_spanner::consider_suicide (Grob *me)
{
Spanner *sp = dynamic_cast<Spanner *> (me);
+ if (!to_boolean (me->get_property ("remove-empty")))
+ return ;
extract_grob_set (me, "items-worth-living", worth);
if (worth.size ())
before asking for offsets. */
MAKE_SCHEME_CALLBACK (Hara_kiri_group_spanner, force_hara_kiri_callback, 2);
SCM
-Hara_kiri_group_spanner::force_hara_kiri_callback (SCM element_smob, SCM axis)
+Hara_kiri_group_spanner::force_hara_kiri_callback (SCM smob, SCM axis)
{
- Grob *me = unsmob_grob (element_smob);
+ Grob *me = unsmob_grob (smob);
(void) axis;
assert (scm_to_int (axis) == Y_AXIS);
/* properties */
"items-worth-living "
- "remove-first");
+ "remove-empty "
+ "remove-first "
+ );
+
-\version "2.7.6"
+\version "2.7.14"
\context {
\name Global
\consists "String_number_engraver"
\consists "Axis_group_engraver"
- minimumVerticalExtent = #'(-4 . 4)
+ \override VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 4)
extraVerticalExtent = ##f
verticalExtent = ##f
localKeySignature = #'()
\context{
\type "Engraver_group"
- minimumVerticalExtent = ##f
+ \override VerticalAxisGroup #'minimum-Y-extent = ##f
extraVerticalExtent = ##f
verticalExtent = ##f
localKeySignature = #'()
\context{
\type "Engraver_group"
- minimumVerticalExtent = #'(-1.2 . 2.4)
+ \override VerticalAxisGroup #'minimum-Y-extent = #'(-1.2 . 2.4)
extraVerticalExtent = ##f
verticalExtent = ##f
\consists "Font_size_engraver"
\consists "Hara_kiri_engraver"
\override RemoveEmptyVerticalGroup #'remove-first = ##t
+ \override RemoveEmptyVerticalGroup #'remove-empty = ##t
\override SeparationItem #'padding = #0.2
}
\name NoteNames
\consists "Axis_group_engraver"
- minimumVerticalExtent = ##f
+ \override VerticalAxisGroup #'minimum-Y-extent = ##f
extraVerticalExtent = ##f
verticalExtent = ##f
\consists "Hara_kiri_engraver"
voltaOnThisStaff = ##f
- minimumVerticalExtent = #'(0 . 2.5)
+ \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2.5)
extraVerticalExtent = ##f
\override SeparatingGroupSpanner #'padding = #0.8
\override RemoveEmptyVerticalGroup #'remove-first = ##t
\consists "Separating_line_group_engraver"
\consists "Hara_kiri_engraver"
\override RemoveEmptyVerticalGroup #'remove-first = ##t
- minimumVerticalExtent = #'(-0.5 . 2.5)
+ \override VerticalAxisGroup #'minimum-Y-extent = #'(-0.5 . 2.5)
}
\context {
str = re.sub (r"\\revert ([A-Z.a-z]+) #'callbacks % ([a-zA-Z]+)",
r"\\revert \1 #'\2", str)
str = re.sub (r"([XY]-extent)-callback", r'\1', str)
+ str = re.sub (r"RemoveEmptyVerticalGroup", "VerticalAxisGroup", str)
+ str = re.sub (r"\\set ([a-zA-Z]+\.)?minimumVerticalExtent",
+ r"\\override \1VerticalAxisGroup #'minimum-Y-extent",
+ str)
+ str = re.sub (r"minimumVerticalExtent",
+ r"\\override VerticalAxisGroup #'minimum-Y-extent",
+ str)
+
return str
conversions.append (((2, 7, 14), conv,
staff-space unit of the current staff.")
(ratio ,number? "Parameter for slur shape. The higher this number, the
quicker the slur attains it @code{height-limit}.")
+
+ (remove-empty ,boolean? "If set, remove group if it contains no
+@code{interesting-items}")
(remove-first ,boolean? "Remove the first staff of a orchestral score?")
(right-padding ,ly:dimension? "Space to insert between note and
accidentals.")
mark-interface
self-alignment-interface))))))
- (RemoveEmptyVerticalGroup
- . (
- (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
-
- (Y-extent . ,Hara_kiri_group_spanner::y_extent)
-
- (axes . (1))
- (meta . ((class . Spanner)
- (interfaces . (axis-group-interface
- vertically-spaceable-interface
- hara-kiri-group-interface
- spanner-interface))))))
(RepeatSlash
. (
(VerticalAxisGroup
. (
(axes . (1))
- (Y-extent . ,Axis_group_interface::height)
+ (Y-offset-callbacks . (,Hara_kiri_group_spanner::force_hara_kiri_callback))
+
+ (Y-extent . ,Hara_kiri_group_spanner::y_extent)
(X-extent . ,Axis_group_interface::width)
(meta . ((class . Spanner)
(interfaces . (axis-group-interface