diff options
author | Sebastian Rasmussen <sebras@hotmail.com> | 2009-12-08 00:48:32 +0100 |
---|---|---|
committer | Sebastian Rasmussen <sebras@hotmail.com> | 2009-12-08 00:48:32 +0100 |
commit | b86f6f361f48f349158e0448c0dd2b7143177bde (patch) | |
tree | aeb563100a37f1e490a6afbe581b6be0c70ad042 | |
parent | c55ea9577ba769ee08a9c3a62c05fb0dae17e1a1 (diff) | |
download | mupdf-b86f6f361f48f349158e0448c0dd2b7143177bde.tar.xz |
Add support for 16 bit per component images.
-rw-r--r-- | fitz/fitz_draw.h | 1 | ||||
-rw-r--r-- | fitzdraw/imageunpack.c | 4 | ||||
-rw-r--r-- | mupdf/pdf_image.c | 1 |
3 files changed, 6 insertions, 0 deletions
diff --git a/fitz/fitz_draw.h b/fitz/fitz_draw.h index 60eeafe2..7e3baa9e 100644 --- a/fitz/fitz_draw.h +++ b/fitz/fitz_draw.h @@ -99,6 +99,7 @@ extern void (*fz_loadtile1)(FZ_BYTE*, int sw, FZ_BYTE*, int dw, int w, int h, in extern void (*fz_loadtile2)(FZ_BYTE*, int sw, FZ_BYTE*, int dw, int w, int h, int pad); extern void (*fz_loadtile4)(FZ_BYTE*, int sw, FZ_BYTE*, int dw, int w, int h, int pad); extern void (*fz_loadtile8)(FZ_BYTE*, int sw, FZ_BYTE*, int dw, int w, int h, int pad); +extern void (*fz_loadtile16)(FZ_BYTE*, int sw, FZ_BYTE*, int dw, int w, int h, int pad); extern void (*fz_srown)(FZ_BYTE *src, FZ_BYTE *dst, int w, int denom, int n); extern void (*fz_srow1)(FZ_BYTE *src, FZ_BYTE *dst, int w, int denom); diff --git a/fitzdraw/imageunpack.c b/fitzdraw/imageunpack.c index 15d060f8..4df495ba 100644 --- a/fitzdraw/imageunpack.c +++ b/fitzdraw/imageunpack.c @@ -94,6 +94,7 @@ static void decodetile(fz_pixmap *pix, int skip, float *decode) #define ttwo(buf,x) ((buf[x >> 2] >> ( ( 3 - (x & 3) ) << 1 ) ) & 3 ) * 85 #define tnib(buf,x) ((buf[x >> 1] >> ( ( 1 - (x & 1) ) << 2 ) ) & 15 ) * 17 #define toct(buf,x) (buf[x]) +#define thex(buf,x) (buf[x << 1]) static byte t1pad0[256][8]; static byte t1pad1[256][16]; @@ -224,10 +225,13 @@ static void loadtile4(byte * restrict src, int sw, byte * restrict dst, int dw, TILE(tnib) static void loadtile8(byte * restrict src, int sw, byte * restrict dst, int dw, int w, int h, int pad) TILE(toct) +static void loadtile16(byte * restrict src, int sw, byte * restrict dst, int dw, int w, int h, int pad) +TILE(thex) void (*fz_decodetile)(fz_pixmap *pix, int skip, float *decode) = decodetile; void (*fz_loadtile1)(byte*, int sw, byte*, int dw, int w, int h, int pad) = loadtile1; void (*fz_loadtile2)(byte*, int sw, byte*, int dw, int w, int h, int pad) = loadtile2; void (*fz_loadtile4)(byte*, int sw, byte*, int dw, int w, int h, int pad) = loadtile4; void (*fz_loadtile8)(byte*, int sw, byte*, int dw, int w, int h, int pad) = loadtile8; +void (*fz_loadtile16)(byte*, int sw, byte*, int dw, int w, int h, int pad) = loadtile16; diff --git a/mupdf/pdf_image.c b/mupdf/pdf_image.c index 8674cca9..fe6aab7a 100644 --- a/mupdf/pdf_image.c +++ b/mupdf/pdf_image.c @@ -499,6 +499,7 @@ pdf_loadtile(fz_image *img, fz_pixmap *tile) case 2: tilefunc = fz_loadtile2; break; case 4: tilefunc = fz_loadtile4; break; case 8: tilefunc = fz_loadtile8; break; + case 16: tilefunc = fz_loadtile16; break; default: return fz_throw("rangecheck: unsupported bit depth: %d", src->bpc); } |