summaryrefslogtreecommitdiff
path: root/mupdf/build.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2004-11-03 14:55:32 +0100
committerTor Andersson <tor@ghostscript.com>2004-11-03 14:55:32 +0100
commitc64fd9ffacb8463affc3c02eeebaee11a4028373 (patch)
tree3864d467f7f2d024f2b2abbef02a81000d0eb31d /mupdf/build.c
parent150b4298415cbdbccaf5831d6c2a10a6b665cff7 (diff)
downloadmupdf-c64fd9ffacb8463affc3c02eeebaee11a4028373.tar.xz
image masks, inline images and xobject forms
Diffstat (limited to 'mupdf/build.c')
-rw-r--r--mupdf/build.c26
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;