[librsvg: 13/25] If the length of the dashes is 0.0, don't dash at all, per the spec
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 13/25] If the length of the dashes is 0.0, don't dash at all, per the spec
- Date: Fri, 2 Feb 2018 00:29:42 +0000 (UTC)
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]