+2005-08-25 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+ * scm/define-markup-commands.scm (wordwrap-string): use
+ text-direction
+ (wordwrap-stencils): idem.
+ (line): idem..
+ (fill-line): idem.
+
+ * scm/define-grob-properties.scm (all-user-grob-properties): add
+ text-direction.
+
2005-08-25 Nicolas Sceaux <nicolas.sceaux@free.fr>
* lily/lily-parser.cc (Lily_parser): also copy output_basename_
* lily/vertical-align-engraver.cc (process_music): call
Align_interface::set_axis(). This forces #'elements to be ordered,
- preventing random vertical reordering of staves.
+ preventing random vertical reordering of staves.
* scm/define-grob-interfaces.scm (dynamic-line-spanner-interface):
add avoid-slur property.
(interval-length (ly:stencil-extent stc X))))
stencils))
(text-width (apply + text-widths))
+ (text-dir (chain-assoc-get 'text-direction props RIGHT))
(word-count (length stencils))
(word-space (chain-assoc-get 'word-space props))
(line-width (chain-assoc-get 'linewidth props))
(- line-width text-width)))
(else
(get-fill-space word-count line-width text-widths))))
- (fill-space-normal
- (map (lambda (x)
- (if (< x word-space)
- word-space
- x))
- fill-space))
+ (fill-space-normal
+ (map (lambda (x)
+ (if (< x word-space)
+ word-space
+ x))
+ fill-space))
(line-stencils (if (= word-count 1)
(list
point-stencil)
stencils)))
+ (if (= text-dir LEFT)
+ (set! line-stencils (reverse line-stencils)))
+
(if (null? (remove ly:stencil-empty? orig-stencils))
empty-stencil
- (stack-stencils-padding-list X RIGHT fill-space-normal line-stencils))))
+ (stack-stencils-padding-list X
+ RIGHT fill-space-normal line-stencils))))
(def-markup-command (line layout props args) (markup-list?)
"Put @var{args} in a horizontal line. The property @code{word-space}
determines the space between each markup in @var{args}."
(let*
((stencils (map (lambda (m) (interpret-markup layout props m)) args))
- (space (chain-assoc-get 'word-space props)))
+ (space (chain-assoc-get 'word-space props))
+ (text-dir (chain-assoc-get 'text-direction props RIGHT))
+ )
+
+
+ (if (= text-dir LEFT)
+ (set! stencils (reverse stencils)))
+
- (stack-stencil-line
- space
- (remove ly:stencil-empty? stencils))))
+ (stack-stencil-line
+ space
+ (remove ly:stencil-empty? stencils))))
(define (wordwrap-stencils stencils
- justify base-space line-width)
+ justify base-space line-width text-dir)
"Perform simple wordwrap, return stencil of each line."
(line (stack-stencil-line
line-word-space
- (reverse line-stencils))))
+ (if (= text-dir RIGHT)
+ (reverse line-stencils)
+ line-stencils))))
(if (pair? (cdr line-break))
(loop (cons line lines)
((baseline-skip (chain-assoc-get 'baseline-skip props))
(line-width (chain-assoc-get 'linewidth props))
(word-space (chain-assoc-get 'word-space props))
+ (text-dir (chain-assoc-get 'text-direction props RIGHT))
(lines (wordwrap-stencils
(remove ly:stencil-empty?
(map (lambda (m) (interpret-markup layout props m)) args))
- justify word-space line-width)
+ justify word-space line-width
+ text-dir)
))
(stack-lines DOWN 0.0 baseline-skip lines)))
(word-space (chain-assoc-get 'word-space props))
(para-strings (regexp-split arg "\n[ \t\n]*\n[ \t\n]*"))
+ (text-dir (chain-assoc-get 'text-direction props RIGHT))
(list-para-words (map (lambda (str)
(regexp-split str "[ \t\n]+"))
para-strings))
(interpret-markup layout props x))
words)))
(lines (wordwrap-stencils stencils
- justify word-space line-width)))
+ justify word-space
+ line-width text-dir
+ )))
lines))