CVSROOT: /cvsroot/lilypond
Module name: lilypond
Branch:
Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/10/09 15:28:35
Modified files:
. : ChangeLog VERSION
lily : figured-bass-continuation.cc
new-figured-bass-engraver.cc
ly : engraver-init.ly
scm : define-context-properties.scm
define-grob-interfaces.scm
define-grob-properties.scm
define-markup-commands.scm lily.scm
translation-functions.scm
Added files:
input/regression: figured-bass-implicit.ly
scm : layout-beam.scm layout-page-layout.scm
layout-slur.scm parser-clef.scm
parser-ly-from-scheme.scm
Removed files:
scm : bass-figure.scm beam.scm clef.scm
ly-from-scheme.scm page-layout.scm slur.scm
Log message:
* scm/parser-ly-from-scheme.scm: rename from ly-from-scheme.scm
* scm/parser-clef.scm (supported-clefs): rename from clef.scm
* scm/layout-slur.scm: rename from slur.scm
* scm/layout-page-layout.scm: rename from page-layout.scm
* scm/layout-beam.scm: rename from beam.scm
* scm/define-grob-interfaces.scm (bass-figure-interface): add
bass-figure-interface
* lily/new-figured-bass-engraver.cc (process_music): add
implicitBassFigures property.
* scm/define-markup-commands.scm (pad-x): new markup.
* ly/engraver-init.ly (AncientRemoveEmptyStaffContext): set
minimumVerticalExtent on FiguredBass context.
* lily/figured-bass-continuation.cc (center_on_figures): kludge in
case the continuation crosses a line break.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4164&tr2=1.4165&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/VERSION.diff?tr1=1.660&tr2=1.661&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/input/regression/figured-bass-implicit.ly?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/figured-bass-continuation.cc.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/new-figured-bass-engraver.cc.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ly/engraver-init.ly.diff?tr1=1.254&tr2=1.255&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/layout-beam.scm?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/layout-page-layout.scm?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/layout-slur.scm?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/parser-clef.scm?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/parser-ly-from-scheme.scm?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-context-properties.scm.diff?tr1=1.54&tr2=1.55&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grob-interfaces.scm.diff?tr1=1.24&tr2=1.25&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grob-properties.scm.diff?tr1=1.123&tr2=1.124&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-markup-commands.scm.diff?tr1=1.117&tr2=1.118&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/lily.scm.diff?tr1=1.375&tr2=1.376&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/translation-functions.scm.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4164 lilypond/ChangeLog:1.4165
--- lilypond/ChangeLog:1.4164 Sun Oct 9 08:05:05 2005
+++ lilypond/ChangeLog Sun Oct 9 15:28:34 2005
@@ -1,3 +1,29 @@
+2005-10-09 Han-Wen Nienhuys <[EMAIL PROTECTED]>
+
+ * scm/parser-ly-from-scheme.scm: rename from ly-from-scheme.scm
+
+ * scm/parser-clef.scm (supported-clefs): rename from clef.scm
+
+ * scm/layout-slur.scm: rename from slur.scm
+
+ * scm/layout-page-layout.scm: rename from page-layout.scm
+
+ * scm/layout-beam.scm: rename from beam.scm
+
+ * scm/define-grob-interfaces.scm (bass-figure-interface): add
+ bass-figure-interface
+
+ * lily/new-figured-bass-engraver.cc (process_music): add
+ implicitBassFigures property.
+
+ * scm/define-markup-commands.scm (pad-x): new markup.
+
+ * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): set
+ minimumVerticalExtent on FiguredBass context.
+
+ * lily/figured-bass-continuation.cc (center_on_figures): kludge in
+ case the continuation crosses a line break.
+
2005-10-09 Jan Nieuwenhuizen <[EMAIL PROTECTED]>
* flower/file-name.cc (dos_to_posix)[__CYGWIN__]: Return
@@ -5,6 +31,8 @@
absolute file name bug. Backportme.
2005-10-07 Han-Wen Nienhuys <[EMAIL PROTECTED]>
+
+ * VERSION (PACKAGE_NAME): release 2.7.12
* input/regression/figured-bass-continuation-center.ly: new file.
Index: lilypond/VERSION
diff -u lilypond/VERSION:1.660 lilypond/VERSION:1.661
--- lilypond/VERSION:1.660 Mon Oct 3 11:30:40 2005
+++ lilypond/VERSION Sun Oct 9 15:28:34 2005
@@ -1,6 +1,6 @@
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=7
-PATCH_LEVEL=12
+PATCH_LEVEL=13
MY_PATCH_LEVEL=
Index: lilypond/lily/figured-bass-continuation.cc
diff -u lilypond/lily/figured-bass-continuation.cc:1.3
lilypond/lily/figured-bass-continuation.cc:1.4
--- lilypond/lily/figured-bass-continuation.cc:1.3 Fri Oct 7 09:50:22 2005
+++ lilypond/lily/figured-bass-continuation.cc Sun Oct 9 15:28:35 2005
@@ -36,10 +36,13 @@
(void) axis;
extract_grob_set (me, "figures", figures);
+ if (figures.is_empty ())
+ return scm_from_double (0.0);
Grob *common = common_refpoint_of_array (figures, me, Y_AXIS);
Interval ext = Axis_group_interface::relative_group_extent (figures, common,
Y_AXIS);
-
+ if (ext.is_empty ())
+ return scm_from_double (0.0);
return scm_from_double (ext.center () - me->relative_coordinate (common,
Y_AXIS));
}
@@ -59,8 +62,13 @@
X_AXIS);
do
{
+ Item *bound = me->get_bound (d);
+ Direction extdir =
+ (d == LEFT && to_boolean (bound->get_property ("implicit")))
+ ? LEFT : RIGHT;
+
spanned[d]
- = robust_relative_extent (me->get_bound (d), common, X_AXIS)[RIGHT]
+ = robust_relative_extent (bound, common, X_AXIS)[extdir]
- me->relative_coordinate (common, X_AXIS);
}
while (flip (&d) != LEFT);
Index: lilypond/lily/new-figured-bass-engraver.cc
diff -u lilypond/lily/new-figured-bass-engraver.cc:1.5
lilypond/lily/new-figured-bass-engraver.cc:1.6
--- lilypond/lily/new-figured-bass-engraver.cc:1.5 Fri Oct 7 11:57:34 2005
+++ lilypond/lily/new-figured-bass-engraver.cc Sun Oct 9 15:28:35 2005
@@ -266,6 +266,7 @@
if (!new_music_found_)
return ;
+
new_music_found_ = false;
/*
@@ -287,7 +288,6 @@
{
clear_spanners ();
}
-
int k = 0;
for (int i = 0; i < new_musics_.size (); i++)
@@ -321,26 +321,28 @@
Array<int> junk_continuations;
for (int i = 0; i < groups_.size(); i++)
{
- if (groups_[i].is_continuation ())
+ Figure_group &group = groups_[i];
+
+ if (group.is_continuation ())
{
- if (!groups_[i].continuation_line_)
+ if (!group.continuation_line_)
{
Spanner * line = make_spanner ("BassFigureContinuation",
SCM_EOL);
- Item * item = groups_[i].figure_item_;
- groups_[i].continuation_line_ = line;
+ Item * item = group.figure_item_;
+ group.continuation_line_ = line;
line->set_bound (LEFT, item);
/*
Don't add as child. This will cache the wrong
(pre-break) stencil when callbacks are triggered.
*/
- line->set_parent (groups_[i].group_, Y_AXIS);
+ line->set_parent (group.group_, Y_AXIS);
Pointer_group_interface::add_grob (line, ly_symbol2scm
("figures"), item);
-
- groups_[i].figure_item_ = 0;
+
+ group.figure_item_ = 0;
}
}
- else if (groups_[i].continuation_line_)
+ else if (group.continuation_line_)
junk_continuations.push (i);
}
@@ -391,6 +393,7 @@
= make_item ("NewBassFigure",
group.current_music_->self_scm ());
+
SCM fig = group.current_music_->get_property ("figure");
if (!group.group_)
{
@@ -401,6 +404,11 @@
Align_interface::alignment_callback_proc);
}
+ if (scm_memq (fig, get_property ("implicitBassFigures")) !=
SCM_BOOL_F)
+ {
+ item->set_property ("transparent", SCM_BOOL_T);
+ item->set_property ("implicit", SCM_BOOL_T);
+ }
group.number_ = fig;
group.alteration_ = group.current_music_->get_property ("alteration");
@@ -450,6 +458,9 @@
"bass-figure-event rest-event",
/* read */
+ "implicitBassFigures "
+ "newFiguredBassFormatter "
+ "figuredBassAlterationDirection "
"useBassFigureExtenders",
/* write */
Index: lilypond/ly/engraver-init.ly
diff -u lilypond/ly/engraver-init.ly:1.254 lilypond/ly/engraver-init.ly:1.255
--- lilypond/ly/engraver-init.ly:1.254 Thu Oct 6 13:12:57 2005
+++ lilypond/ly/engraver-init.ly Sun Oct 9 15:28:35 2005
@@ -551,7 +551,6 @@
tablatureFormat = #fret-number-tablature-format
%%
- bassFigureFormatFunction = #format-bass-figure
newFiguredBassFormatter = #format-new-bass-figure
metronomeMarkFormatter = #format-metronome-markup
graceSettings = #`(
@@ -594,7 +593,7 @@
\context {
\type "Engraver_group"
- \name FiguredBass
+ \name "FiguredBass"
%% \consists "Figured_bass_engraver"
\consists "New_figured_bass_engraver"
@@ -603,6 +602,7 @@
\consists "Separating_line_group_engraver"
\consists "Hara_kiri_engraver"
\override RemoveEmptyVerticalGroup #'remove-first = ##t
+ minimumVerticalExtent = #'(-0.5 . 2.5)
}
\context {
Index: lilypond/scm/define-context-properties.scm
diff -u lilypond/scm/define-context-properties.scm:1.54
lilypond/scm/define-context-properties.scm:1.55
--- lilypond/scm/define-context-properties.scm:1.54 Fri Oct 7 09:50:22 2005
+++ lilypond/scm/define-context-properties.scm Sun Oct 9 15:28:35 2005
@@ -239,6 +239,10 @@
(ignoreBarChecks ,boolean? "Ignore bar checks")
(ignoreMelismata ,boolean? "Ignore melismata for this
@internalsref{Lyrics} line.")
+
+ (implicitBassFigures ,list? "List of bass figures that are not
+printed as numbers, but only as extender lines.")
+
(instr ,markup? "See @code{instrument}")
(instrument ,markup? "The name to print left of a staff. The
Index: lilypond/scm/define-grob-interfaces.scm
diff -u lilypond/scm/define-grob-interfaces.scm:1.24
lilypond/scm/define-grob-interfaces.scm:1.25
--- lilypond/scm/define-grob-interfaces.scm:1.24 Wed Aug 24 12:49:53 2005
+++ lilypond/scm/define-grob-interfaces.scm Sun Oct 9 15:28:35 2005
@@ -106,6 +106,11 @@
"A stanza number, to be put in from of a lyrics line"
'())
+(ly:add-interface
+ 'bass-figure-interface
+ "A bass figure text"
+ '(implicit))
+
;;; todo: this is not typesetting info. Move to interpretation.
(ly:add-interface
'tablature-interface
Index: lilypond/scm/define-grob-properties.scm
diff -u lilypond/scm/define-grob-properties.scm:1.123
lilypond/scm/define-grob-properties.scm:1.124
--- lilypond/scm/define-grob-properties.scm:1.123 Thu Oct 6 10:27:27 2005
+++ lilypond/scm/define-grob-properties.scm Sun Oct 9 15:28:35 2005
@@ -281,7 +281,7 @@
and slur ignore eachother.")
(inspect-quants ,number-pair? "If debugging is set,
set beam quant to this position, and print the respective scores.")
-
+ (implicit ,boolean? "Is this an implicit bass figure?")
(keep-inside-line ,boolean? "If set, this column cannot have
things sticking into the margin.")
(kern ,ly:dimension? "Amount of extra white space to add. For
Index: lilypond/scm/define-markup-commands.scm
diff -u lilypond/scm/define-markup-commands.scm:1.117
lilypond/scm/define-markup-commands.scm:1.118
--- lilypond/scm/define-markup-commands.scm:1.117 Wed Oct 5 13:05:45 2005
+++ lilypond/scm/define-markup-commands.scm Sun Oct 9 15:28:35 2005
@@ -643,6 +643,23 @@
(interval-widen x amount)
(interval-widen y amount))
))
+
+
+(def-markup-command (pad-x layout props amount arg) (number? markup?)
+
+ "Add padding @var{amount} around @var{arg} in the X-direction. "
+ (let*
+ ((m (interpret-markup layout props arg))
+ (x (ly:stencil-extent m X))
+ (y (ly:stencil-extent m Y)))
+
+
+ (ly:make-stencil (ly:stencil-expr m)
+ (interval-widen x amount)
+ y)
+ ))
+
+
(def-markup-command (put-adjacent layout props arg1 axis dir arg2) (markup?
integer? ly:dir? markup?)
"Put @var{arg2} next to @var{arg1}, without moving @var{arg1}. "
@@ -652,6 +669,19 @@
(ly:stencil-combine-at-edge m1 axis dir m2 0.0 0.0)
))
+
+(def-markup-command (transparent layout props arg) (markup?)
+ "Make the argument transparent"
+ (let*
+ ((m (interpret-markup layout props arg))
+ (x (ly:stencil-extent m X))
+ (y (ly:stencil-extent m Y)))
+
+
+
+ (ly:make-stencil ""
+ x y)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; property
Index: lilypond/scm/lily.scm
diff -u lilypond/scm/lily.scm:1.375 lilypond/scm/lily.scm:1.376
--- lilypond/scm/lily.scm:1.375 Mon Aug 15 18:28:41 2005
+++ lilypond/scm/lily.scm Sun Oct 9 15:28:35 2005
@@ -224,7 +224,6 @@
"chord-generic-names.scm"
"stencil.scm"
"markup.scm"
- "bass-figure.scm"
"music-functions.scm"
"part-combiner.scm"
"autochange.scm"
@@ -232,15 +231,15 @@
"auto-beam.scm"
"chord-name.scm"
- "ly-from-scheme.scm"
+ "parser-ly-from-scheme.scm"
"define-context-properties.scm"
"translation-functions.scm"
"script.scm"
"midi.scm"
- "beam.scm"
- "clef.scm"
- "slur.scm"
+ "layout-beam.scm"
+ "parser-clef.scm"
+ "layout-slur.scm"
"font.scm"
"encoding.scm"
@@ -250,7 +249,7 @@
"define-grobs.scm"
"define-grob-interfaces.scm"
"define-stencil-commands.scm"
- "page-layout.scm"
+ "layout-page-layout.scm"
"titling.scm"
"paper.scm"
Index: lilypond/scm/translation-functions.scm
diff -u lilypond/scm/translation-functions.scm:1.13
lilypond/scm/translation-functions.scm:1.14
--- lilypond/scm/translation-functions.scm:1.13 Fri Jul 8 19:16:12 2005
+++ lilypond/scm/translation-functions.scm Sun Oct 9 15:28:35 2005
@@ -52,3 +52,54 @@
(define-public (format-mark-box-barnumbers mark context)
(make-bold-markup (make-box-markup
(number->string (ly:context-property context 'currentBarNumber)))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Bass figures.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-public (format-new-bass-figure figure event context)
+ (let* ((fig (ly:music-property event 'figure))
+ (fig-markup (if (number? figure)
+ (markup #:number (number->string figure 10))
+ #f
+ ))
+ (alt (ly:music-property event 'alteration))
+ (alt-markup
+ (if (number? alt)
+ (markup
+ #:general-align Y DOWN #:smaller #:smaller
+ (alteration->text-accidental-markup alt))
+
+ #f))
+ (alt-dir (ly:context-property context 'figuredBassAlterationDirection))
+ )
+
+ (if (and (not fig-markup) alt-markup)
+ (begin
+ (set! fig-markup (markup #:left-align #:pad-around 0.3 alt-markup))
+ (set! alt-markup #f)))
+
+
+ ;; hmm, how to get figures centered between note, and
+ ;; lone accidentals too?
+
+ ;; (if (markup? fig-markup)
+ ;; (set!
+ ;; fig-markup (markup #:translate (cons 1.0 0)
+ ;; #:hcenter fig-markup)))
+
+ (if alt-markup
+ (set! fig-markup
+ (markup #:put-adjacent
+ fig-markup X
+ (if (number? alt-dir)
+ alt-dir
+ LEFT)
+ #:pad-x 0.2 alt-markup
+ )))
+
+ (if (markup? fig-markup)
+ fig-markup
+ empty-markup)))
+
_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs