summaryrefslogtreecommitdiff
path: root/fitz
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2010-07-14 03:15:54 +0200
committerTor Andersson <tor@ghostscript.com>2010-07-14 03:15:54 +0200
commit2ceb40f4b800b836266c51b51064e767e9b46ffc (patch)
tree2dc4bb378fbc7a7946b98eceee117f60de372695 /fitz
parentb8fa3eabea0fc29a1937d661565cda0caf79ce50 (diff)
downloadmupdf-2ceb40f4b800b836266c51b51064e767e9b46ffc.tar.xz
Add transparency functions to the trace device.
Diffstat (limited to 'fitz')
-rw-r--r--fitz/dev_trace.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/fitz/dev_trace.c b/fitz/dev_trace.c
index ebf28535..b51015f8 100644
--- a/fitz/dev_trace.c
+++ b/fitz/dev_trace.c
@@ -15,7 +15,7 @@ fz_tracecolor(fz_colorspace *colorspace, float *color, float alpha)
for (i = 0; i < colorspace->n; i++)
printf("%s%g", i == 0 ? "" : " ", color[i]);
printf("\" ");
- if (alpha < 1.0f)
+ if (alpha < 1)
printf("alpha=\"%g\" ", alpha);
}
@@ -227,7 +227,35 @@ fz_tracepopclip(void *user)
printf("</gsave>\n");
}
-/* TODO: transparency group functions */
+static void
+fz_tracebeginmask(void *user, fz_rect bbox, int luminosity, fz_colorspace *colorspace, float *color)
+{
+ printf("<mask bbox=\"%g %g %g %g\" s=\"%s\" ",
+ bbox.x0, bbox.y0, bbox.x1, bbox.y1,
+ luminosity ? "luminosity" : "alpha");
+ fz_tracecolor(colorspace, color, 1);
+ printf(">\n");
+}
+
+static void
+fz_traceendmask(void *user)
+{
+ printf("</mask>\n");
+}
+
+static void
+fz_tracebegingroup(void *user, fz_rect bbox, fz_colorspace *colorspace, int isolated, int knockout, fz_blendmode blendmode)
+{
+ printf("<group bbox=\"%g %g %g %g\" isolated=\"%d\" knockout=\"%d\" blendmode=\"%d\">\n",
+ bbox.x0, bbox.y0, bbox.x1, bbox.y1,
+ isolated, knockout, blendmode);
+}
+
+static void
+fz_traceendgroup(void *user)
+{
+ printf("</group>\n");
+}
fz_device *fz_newtracedevice(void)
{
@@ -251,6 +279,11 @@ fz_device *fz_newtracedevice(void)
dev->popclip = fz_tracepopclip;
+ dev->beginmask = fz_tracebeginmask;
+ dev->endmask = fz_traceendmask;
+ dev->begingroup = fz_tracebegingroup;
+ dev->endgroup = fz_traceendgroup;
+
return dev;
}