diff options
author | Sebastian Rasmussen <sebras@hotmail.com> | 2008-07-06 18:07:55 +0200 |
---|---|---|
committer | Sebastian Rasmussen <sebras@hotmail.com> | 2008-07-06 18:07:55 +0200 |
commit | e5b07f6c1b0307ffe41ce36e0fa65cb8e57449b4 (patch) | |
tree | b96ddd1f0b6572a4f77638995362a82c5d87ec51 /raster | |
parent | 8c018dd9c020e33aaf0cd520b3f89c3018dbb423 (diff) | |
download | mupdf-e5b07f6c1b0307ffe41ce36e0fa65cb8e57449b4.tar.xz |
Added support for debugging CMYK pixmaps with alpha.
Diffstat (limited to 'raster')
-rw-r--r-- | raster/pixmap.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/raster/pixmap.c b/raster/pixmap.c index cec36014..30401355 100644 --- a/raster/pixmap.c +++ b/raster/pixmap.c @@ -75,7 +75,35 @@ fz_gammapixmap(fz_pixmap *pix, float gamma) void fz_debugpixmap(fz_pixmap *pix) { - if (pix->n == 4) + if (pix->n == 5) + { + int x, y; + FILE *ppm = fopen("out.ppm", "wb"); + FILE *pgm = fopen("out.pgm", "wb"); + fprintf(ppm, "P6\n%d %d\n255\n", pix->w, pix->h); + fprintf(pgm, "P5\n%d %d\n255\n", pix->w, pix->h); + + for (y = 0; y < pix->h; y++) + for (x = 0; x < pix->w; x++) + { + int a = pix->samples[x * pix->n + y * pix->w * pix->n + 0]; + int cc = pix->samples[x * pix->n + y * pix->w * pix->n + 1]; + int mm = pix->samples[x * pix->n + y * pix->w * pix->n + 2]; + int yy = pix->samples[x * pix->n + y * pix->w * pix->n + 3]; + int kk = pix->samples[x * pix->n + y * pix->w * pix->n + 4]; + int r = 255 - MIN(cc + kk, 255); + int g = 255 - MIN(mm + kk, 255); + int b = 255 - MIN(yy + kk, 255); + putc(a, pgm); + putc(r, ppm); + putc(g, ppm); + putc(b, ppm); + } + fclose(ppm); + fclose(pgm); + } + + else if (pix->n == 4) { int x, y; FILE *ppm = fopen("out.ppm", "wb"); |