[librsvg: 13/25] If the length of the dashes is 0.0, don't dash at all, per the spec



commit 8d36d7015b96a531fbdbec5618a3b32c14c06e1e
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Jan 29 18:44:50 2018 -0600

    If the length of the dashes is 0.0, don't dash at all, per the spec

 rsvg-cairo-draw.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
index c0f9949..24a6ae9 100644
--- a/rsvg-cairo-draw.c
+++ b/rsvg-cairo-draw.c
@@ -234,6 +234,7 @@ static void
 set_stroke_dasharray(cairo_t *cr, RsvgDrawingCtx *ctx, RsvgStrokeDasharray *dash, RsvgLength *dash_offset)
 {
     double *dashes;
+    double total_length;
     int i;
 
     switch (dash->kind) {
@@ -248,15 +249,22 @@ set_stroke_dasharray(cairo_t *cr, RsvgDrawingCtx *ctx, RsvgStrokeDasharray *dash
 
     case RSVG_STROKE_DASHARRAY_DASHES:
         dashes = g_new(double, dash->num_dashes);
+        total_length = 0.0;
 
         for (i = 0; i < dash->num_dashes; i++) {
             dashes[i] = rsvg_length_normalize(&dash->dashes[i], ctx);
+            total_length += dashes[i];
+        }
+
+        if (total_length > 0.0) {
+            cairo_set_dash (cr,
+                            dashes,
+                            dash->num_dashes,
+                            rsvg_length_normalize (dash_offset, ctx));
+        } else {
+            cairo_set_dash (cr, NULL, 0, 0.0);
         }
 
-        cairo_set_dash (cr,
-                        dashes,
-                        dash->num_dashes,
-                        rsvg_length_normalize (dash_offset, ctx));
         g_free(dashes);
         break;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]