summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@hotmail.com>2009-12-08 00:48:32 +0100
committerSebastian Rasmussen <sebras@hotmail.com>2009-12-08 00:48:32 +0100
commitb86f6f361f48f349158e0448c0dd2b7143177bde (patch)
treeaeb563100a37f1e490a6afbe581b6be0c70ad042
parentc55ea9577ba769ee08a9c3a62c05fb0dae17e1a1 (diff)
downloadmupdf-b86f6f361f48f349158e0448c0dd2b7143177bde.tar.xz
Add support for 16 bit per component images.
-rw-r--r--fitz/fitz_draw.h1
-rw-r--r--fitzdraw/imageunpack.c4
-rw-r--r--mupdf/pdf_image.c1
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);
}