summaryrefslogtreecommitdiff
path: root/xps/xpspath.c
diff options
context:
space:
mode:
Diffstat (limited to 'xps/xpspath.c')
-rw-r--r--xps/xpspath.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/xps/xpspath.c b/xps/xpspath.c
index dd0d2ef3..14de9147 100644
--- a/xps/xpspath.c
+++ b/xps/xpspath.c
@@ -815,6 +815,7 @@ xps_parse_path(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource *di
fz_matrix transform;
float samples[32];
fz_colorspace *colorspace;
+ fz_rect area;
ctx->fill_rule = 0;
@@ -966,10 +967,10 @@ xps_parse_path(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource *di
if (data_tag)
xps_parse_path_geometry(ctx, dict, data_tag, 0);
- xps_clip(ctx, ctm);
-
- xps_parse_brush(ctx, ctm, fill_uri, dict, fill_tag);
+ area = fz_boundpath(ctx->path, NULL, ctm);
+ xps_clip(ctx, ctm);
+ xps_parse_brush(ctx, ctm, area, fill_uri, dict, fill_tag);
ctx->dev->popclip(ctx->dev->user);
}
@@ -997,11 +998,10 @@ xps_parse_path(xps_context *ctx, fz_matrix ctm, char *base_uri, xps_resource *di
if (data_tag)
xps_parse_path_geometry(ctx, dict, data_tag, 1);
- ctx->fill_rule = 1; /* over-ride fill rule when converting outline to stroked */
- xps_clipstroke(ctx, ctm, &stroke);
-
- xps_parse_brush(ctx, ctm, stroke_uri, dict, stroke_tag);
+ area = fz_boundpath(ctx->path, &stroke, ctm);
+ xps_clipstroke(ctx, ctm, &stroke);
+ xps_parse_brush(ctx, ctm, area, stroke_uri, dict, stroke_tag);
ctx->dev->popclip(ctx->dev->user);
}