diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2011-04-01 02:24:08 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2011-04-01 02:24:08 +0200 |
commit | 7c6ae0b110d0a29558305878482023ad7e8a66dc (patch) | |
tree | d405a91f844a96051d11db5d80c21cec27361aae /fitz | |
parent | 9c9674b3081bfd433460be934e2a792390474367 (diff) | |
download | mupdf-7c6ae0b110d0a29558305878482023ad7e8a66dc.tar.xz |
xps: Respect PathGeometry.Transform attribute.
Diffstat (limited to 'fitz')
-rw-r--r-- | fitz/fitz.h | 2 | ||||
-rw-r--r-- | fitz/res_path.c | 36 |
2 files changed, 38 insertions, 0 deletions
diff --git a/fitz/fitz.h b/fitz/fitz.h index 5d3ba1c1..5cff40b8 100644 --- a/fitz/fitz.h +++ b/fitz/fitz.h @@ -830,6 +830,8 @@ void fz_curvetoy(fz_path*, float, float, float, float); void fz_closepath(fz_path*); void fz_freepath(fz_path *path); +void fz_transformpath(fz_path *path, fz_matrix transform); + fz_path *fz_clonepath(fz_path *old); fz_rect fz_boundpath(fz_path *path, fz_strokestate *stroke, fz_matrix ctm); diff --git a/fitz/res_path.c b/fitz/res_path.c index ebfb3cdc..b4ac415a 100644 --- a/fitz/res_path.c +++ b/fitz/res_path.c @@ -171,6 +171,42 @@ fz_boundpath(fz_path *path, fz_strokestate *stroke, fz_matrix ctm) } void +fz_transformpath(fz_path *path, fz_matrix ctm) +{ + fz_point p; + int k, i = 0; + + while (i < path->len) + { + switch (path->els[i++].k) + { + case FZ_CURVETO: + for (k = 0; k < 3; k++) + { + p.x = path->els[i].v; + p.y = path->els[i+1].v; + p = fz_transformpoint(ctm, p); + path->els[i].v = p.x; + path->els[i+1].v = p.y; + i += 2; + } + break; + case FZ_MOVETO: + case FZ_LINETO: + p.x = path->els[i].v; + p.y = path->els[i+1].v; + p = fz_transformpoint(ctm, p); + path->els[i].v = p.x; + path->els[i+1].v = p.y; + i += 2; + break; + case FZ_CLOSEPATH: + break; + } + } +} + +void fz_debugpath(fz_path *path, int indent) { float x, y; |