diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-11-15 07:50:43 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-11-15 07:50:43 +0100 |
commit | 01a774064e13cebc9a75e44432226d845fa46f9a (patch) | |
tree | e817e8ad3d4fa2d4bb52f1ac543c9b932b40d657 /tree/colorspace.c | |
parent | 67781c58fef0f94ea234341cea8e7e13646bc4a2 (diff) | |
download | mupdf-01a774064e13cebc9a75e44432226d845fa46f9a.tar.xz |
render optimizations
Diffstat (limited to 'tree/colorspace.c')
-rw-r--r-- | tree/colorspace.c | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/tree/colorspace.c b/tree/colorspace.c index ae922bcd..af0239f5 100644 --- a/tree/colorspace.c +++ b/tree/colorspace.c @@ -1,5 +1,17 @@ #include <fitz.h> +void +fz_convertpixmap(fz_colorspace *srcs, fz_pixmap *src, fz_colorspace *dsts, fz_pixmap *dst) +{ + srcs->convpixmap(srcs, src, dsts, dst); +} + +void +fz_convertcolor(fz_colorspace *srcs, float *srcv, fz_colorspace *dsts, float *dstv) +{ + srcs->convcolor(srcs, srcv, dsts, dstv); +} + fz_colorspace * fz_keepcolorspace(fz_colorspace *cs) { @@ -21,7 +33,7 @@ fz_dropcolorspace(fz_colorspace *cs) } void -fz_convertcolor(fz_colorspace *srcs, float *srcv, fz_colorspace *dsts, float *dstv) +fz_stdconvcolor(fz_colorspace *srcs, float *srcv, fz_colorspace *dsts, float *dstv) { float xyz[3]; int i; @@ -43,3 +55,36 @@ fz_convertcolor(fz_colorspace *srcs, float *srcv, fz_colorspace *dsts, float *ds } } +void +fz_stdconvpixmap(fz_colorspace *srcs, fz_pixmap *src, fz_colorspace *dsts, fz_pixmap *dst) +{ + float srcv[32]; + float dstv[32]; + int y, x, k; + + unsigned char *s = src->samples; + unsigned char *d = dst->samples; + + assert(src->w == dst->w && src->h == dst->h); + assert(src->n == srcs->n + 1); + assert(dst->n == dsts->n + 1); + + printf("convert pixmap from %s to %s\n", srcs->name, dsts->name); + + for (y = 0; y < src->h; y++) + { + for (x = 0; x < src->w; x++) + { + *d++ = *s++; + + for (k = 0; k < src->n - 1; k++) + srcv[k] = *s++ / 255.0; + + fz_convertcolor(srcs, srcv, dsts, dstv); + + for (k = 0; k < dst->n - 1; k++) + *d++ = dstv[k] * 255; + } + } +} + |