[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Compute SVG skyline based on original data (issue 545970043 by address@h
From: |
hanwenn |
Subject: |
Compute SVG skyline based on original data (issue 545970043 by address@hidden) |
Date: |
Sat, 02 May 2020 03:33:55 -0700 |
Reviewers: ,
Message:
goes on top of https://codereview.appspot.com/555760043/
Description:
Compute SVG skyline based on original data
Since stencil data is used as input to formatting decisions, this
will make SVG output more similar to PS/PDF output.
Please review this at https://codereview.appspot.com/545970043/
Affected files (+11, -4 lines):
M lily/pango-font.cc
M lily/stencil-integral.cc
M scm/output-socket.scm
M scm/output-svg.scm
Index: lily/pango-font.cc
diff --git a/lily/pango-font.cc b/lily/pango-font.cc
index
0b80883b9ef89980408111f3b43cbffaf4e17f45..4acc3d4b5da874cf7181c3f632a7f00dbecf5f26
100644
--- a/lily/pango-font.cc
+++ b/lily/pango-font.cc
@@ -504,9 +504,10 @@ Pango_font::text_stencil (Output_def * /* state */,
if (has_utf8_string && ((to_paths && !music_string) || !to_paths))
{
// For Pango based backends, we take a shortcut.
- SCM exp = scm_list_3 (ly_symbol2scm ("utf-8-string"),
+ SCM exp = scm_list_4 (ly_symbol2scm ("utf-8-string"),
ly_string2scm (description_string ()),
- ly_string2scm (str));
+ ly_string2scm (str),
+ scm_list_2 (ly_symbol2scm ("quote"), dest.expr
()));
Box b (Interval (0, 0), Interval (0, 0));
b.unite (dest.extent_box ());
Index: lily/stencil-integral.cc
diff --git a/lily/stencil-integral.cc b/lily/stencil-integral.cc
index
b809699324e9cfdbb722e9c0bec8b736b2df0d25..bce34e940072ed922f778dd9d5973f55b222699d
100644
--- a/lily/stencil-integral.cc
+++ b/lily/stencil-integral.cc
@@ -721,6 +721,12 @@ interpret_stencil_for_skyline (Lazy_skyline_pair *skyline,
interpret_stencil_for_skyline (skyline, transform, scm_caddr (expr));
else if (scm_is_eq (head, ly_symbol2scm ("output-attributes")))
interpret_stencil_for_skyline (skyline, transform, scm_caddr (expr));
+ else if (scm_is_eq (head, ly_symbol2scm ("utf-8-string")))
+ {
+ // 4th element, strip the (quote ..)
+ SCM orig = scm_cadar (scm_cdddr (expr));
+ interpret_stencil_for_skyline (skyline, transform, orig);
+ }
else if (scm_is_eq (head, ly_symbol2scm ("with-outline")))
interpret_stencil_for_skyline (skyline, transform, scm_cadr (expr));
else if (scm_is_eq (head, ly_symbol2scm ("draw-line")))
Index: scm/output-socket.scm
diff --git a/scm/output-socket.scm b/scm/output-socket.scm
index
3532fc97325728e0e843ccbd5667d429083ee14a..fad8bb9907f31fac2f6e9a81b8037aa6163b13ca
100644
--- a/scm/output-socket.scm
+++ b/scm/output-socket.scm
@@ -89,7 +89,7 @@
(format #f "draw_round_box ~a ~a ~a ~a ~a"
breapth width depth height blot-diameter))
-(define (utf-8-string descr string)
+(define (utf-8-string descr string orig)
(format #f "utf-8 \"~a\" \"~a\""
(escape-string descr)
;; don't want unescaped spaces.
Index: scm/output-svg.scm
diff --git a/scm/output-svg.scm b/scm/output-svg.scm
index
4ceea8d4cc1a5e0cf6fee8f028c3ae75e39ebbd2..8f56f2626f0f9382c211719a9635fcf337c0d32f
100644
--- a/scm/output-svg.scm
+++ b/scm/output-svg.scm
@@ -650,7 +650,7 @@
'(stroke-width . "0.0"))
(ec 'a)))
-(define (utf-8-string pango-font-description string)
+(define (utf-8-string pango-font-description string orig)
(let ((escaped-string (string-regexp-substitute
"<" "<"
(string-regexp-substitute "&" "&" string))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Compute SVG skyline based on original data (issue 545970043 by address@hidden),
hanwenn <=