diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-11-03 14:55:32 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-11-03 14:55:32 +0100 |
commit | c64fd9ffacb8463affc3c02eeebaee11a4028373 (patch) | |
tree | 3864d467f7f2d024f2b2abbef02a81000d0eb31d /mupdf/build.c | |
parent | 150b4298415cbdbccaf5831d6c2a10a6b665cff7 (diff) | |
download | mupdf-c64fd9ffacb8463affc3c02eeebaee11a4028373.tar.xz |
image masks, inline images and xobject forms
Diffstat (limited to 'mupdf/build.c')
-rw-r--r-- | mupdf/build.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/mupdf/build.c b/mupdf/build.c index 448d2db4..7c52ccab 100644 --- a/mupdf/build.c +++ b/mupdf/build.c @@ -236,24 +236,38 @@ fz_error * pdf_showimage(pdf_csi *csi, pdf_image *img) { fz_error *error; - fz_node *node; + fz_node *mask; + fz_node *color; + fz_node *shape; - error = fz_newimagenode(&node, (fz_image*)img); + error = fz_newimagenode(&color, (fz_image*)img); if (error) return error; if (img->super.n == 0 && img->super.a == 1) { - error = pdf_addfillshape(csi->gstate + csi->gtop, node); + error = pdf_addfillshape(csi->gstate + csi->gtop, color); if (error) { - fz_dropnode(node); + fz_dropnode(color); return error; } } else { - /* TODO image mask sub-image */ - fz_insertnode(csi->gstate[csi->gtop].head, node); + if (img->mask) + { + error = fz_newimagenode(&shape, (fz_image*)img->mask); + if (error) return error; + error = fz_newmasknode(&mask); + if (error) return error; + fz_insertnode(mask, shape); + fz_insertnode(mask, color); + fz_insertnode(csi->gstate[csi->gtop].head, mask); + } + else + { + fz_insertnode(csi->gstate[csi->gtop].head, color); + } } return nil; |