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 Lilypond-cvs@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-cvs