diff options
author | Tor Andersson <tor@ghostscript.com> | 2010-07-14 03:15:54 +0200 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2010-07-14 03:15:54 +0200 |
commit | 2ceb40f4b800b836266c51b51064e767e9b46ffc (patch) | |
tree | 2dc4bb378fbc7a7946b98eceee117f60de372695 | |
parent | b8fa3eabea0fc29a1937d661565cda0caf79ce50 (diff) | |
download | mupdf-2ceb40f4b800b836266c51b51064e767e9b46ffc.tar.xz |
Add transparency functions to the trace device.
-rw-r--r-- | fitz/dev_trace.c | 37 |
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; } |