diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-11-29 04:13:44 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-11-29 04:13:44 +0100 |
commit | 1eb972606ddbdf0d17e4bc08bf06cfd78b1a143f (patch) | |
tree | 25958711f3365b918225a13567309860403e6c27 /mupdf/build.c | |
parent | 85792218b05cb41d7dd4696443a4fdd6c16e1817 (diff) | |
download | mupdf-1eb972606ddbdf0d17e4bc08bf06cfd78b1a143f.tar.xz |
create meta node for patterns. factor out pdf_torect and pdf_tomatrix.
Diffstat (limited to 'mupdf/build.c')
-rw-r--r-- | mupdf/build.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/mupdf/build.c b/mupdf/build.c index fe5ab95b..18a1d053 100644 --- a/mupdf/build.c +++ b/mupdf/build.c @@ -258,11 +258,14 @@ addpatternshape(pdf_gstate *gs, fz_node *shape, fz_node *xform; fz_node *over; fz_node *mask; + fz_node *meta; fz_node *link; fz_matrix ctm; fz_matrix inv; fz_matrix ptm; fz_rect bbox; + fz_obj *name; + fz_obj *dict; int x, y, x0, y0, x1, y1; /* patterns are painted in user space */ @@ -276,11 +279,26 @@ addpatternshape(pdf_gstate *gs, fz_node *shape, error = fz_newtransformnode(&xform, ptm); if (error) return error; + error = fz_newname(&name, "Pattern"); + if (error) return error; + + error = fz_packobj(&dict, "<< /Tree %p /XStep %f /YStep %f " + " /Matrix[%f %f %f %f %f %f] >>", + pat->tree, pat->xstep, pat->ystep, + pat->matrix.a, pat->matrix.b, + pat->matrix.c, pat->matrix.d, + pat->matrix.e, pat->matrix.f); + if (error) return error; + + error = fz_newmetanode(&meta, name, dict); + if (error) return error; + error = fz_newovernode(&over); if (error) return error; fz_insertnodelast(mask, shape); - fz_insertnodelast(mask, xform); + fz_insertnodelast(mask, meta); + fz_insertnodelast(meta, xform); fz_insertnodelast(xform, over); /* get bbox of shape in pattern space for stamping */ |