lilypond-devel
[Top][All Lists]
Advanced

[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
                          "<" "&lt;"
                          (string-regexp-substitute "&" "&amp;" string))))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]