summaryrefslogtreecommitdiff
path: root/mupdf/build.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2004-11-29 04:13:44 +0100
committerTor Andersson <tor@ghostscript.com>2004-11-29 04:13:44 +0100
commit1eb972606ddbdf0d17e4bc08bf06cfd78b1a143f (patch)
tree25958711f3365b918225a13567309860403e6c27 /mupdf/build.c
parent85792218b05cb41d7dd4696443a4fdd6c16e1817 (diff)
downloadmupdf-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.c20
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 */