summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2016-11-05 13:19:05 +0800
committerSebastian Rasmussen <sebras@gmail.com>2016-12-14 20:39:20 +0100
commitfc2e086c2c5795f0ab1e974b3cf3c7a53c8e6197 (patch)
treeb4cf4a0e5d43e12cf5d8359dab41748ec6a5648e /source
parentbcd2fbe6337eb4a3a32f5ebbe7cfabd87328f677 (diff)
downloadmupdf-fc2e086c2c5795f0ab1e974b3cf3c7a53c8e6197.tar.xz
jpx: Delay determining if colorspace is indexed.
Diffstat (limited to 'source')
-rw-r--r--source/fitz/image.c2
-rw-r--r--source/fitz/load-jpx.c18
-rw-r--r--source/pdf/pdf-image.c8
3 files changed, 12 insertions, 16 deletions
diff --git a/source/fitz/image.c b/source/fitz/image.c
index 8fe49c0d..f71b5d23 100644
--- a/source/fitz/image.c
+++ b/source/fitz/image.c
@@ -436,7 +436,7 @@ compressed_image_get_pixmap(fz_context *ctx, fz_image *image_, fz_irect *subarea
tile = fz_load_jxr(ctx, image->buffer->buffer->data, image->buffer->buffer->len);
break;
case FZ_IMAGE_JPX:
- tile = fz_load_jpx(ctx, image->buffer->buffer->data, image->buffer->buffer->len, NULL, 0);
+ tile = fz_load_jpx(ctx, image->buffer->buffer->data, image->buffer->buffer->len, NULL);
break;
case FZ_IMAGE_JPEG:
/* Scan JPEG stream and patch missing height values in header */
diff --git a/source/fitz/load-jpx.c b/source/fitz/load-jpx.c
index e947f5d5..c32f66a4 100644
--- a/source/fitz/load-jpx.c
+++ b/source/fitz/load-jpx.c
@@ -192,7 +192,7 @@ jpx_write(unsigned char * pucData, short sComponent, unsigned long ulRow,
}
static fz_pixmap *
-jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size, fz_colorspace *defcs, int indexed, int onlymeta)
+jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size, fz_colorspace *defcs, int onlymeta)
{
JP2_Decomp_Handle doc;
JP2_Channel_Def_Params *chans = NULL;
@@ -424,11 +424,11 @@ jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size
}
fz_pixmap *
-fz_load_jpx(fz_context *ctx, unsigned char *data, size_t size, fz_colorspace *defcs, int indexed)
+fz_load_jpx(fz_context *ctx, unsigned char *data, size_t size, fz_colorspace *defcs)
{
fz_jpxd state = { 0 };
- return jpx_read_image(ctx, &state, data, size, defcs, indexed, 0);
+ return jpx_read_image(ctx, &state, data, size, defcs, 0);
}
void
@@ -436,7 +436,7 @@ fz_load_jpx_info(fz_context *ctx, unsigned char *data, size_t size, int *wp, int
{
fz_jpxd state = { 0 };
- jpx_read_image(ctx, &state, data, size, NULL, 0, 1);
+ jpx_read_image(ctx, &state, data, size, NULL, 1);
*cspacep = state.cs;
*wp = state.width;
@@ -657,7 +657,7 @@ l2subfactor(fz_context *ctx, unsigned int max_w, unsigned int w)
}
static fz_pixmap *
-jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size, fz_colorspace *defcs, int indexed, int onlymeta)
+jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size, fz_colorspace *defcs, int onlymeta)
{
fz_pixmap *img;
opj_dparameters_t params;
@@ -684,7 +684,7 @@ jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size
format = OPJ_CODEC_JP2;
opj_set_default_decoder_parameters(&params);
- if (indexed)
+ if (fz_colorspace_is_indexed(ctx, defcs))
params.flags |= OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG;
codec = opj_create_decompress(format);
@@ -887,7 +887,7 @@ jpx_read_image(fz_context *ctx, fz_jpxd *state, unsigned char *data, size_t size
}
fz_pixmap *
-fz_load_jpx(fz_context *ctx, unsigned char *data, size_t size, fz_colorspace *defcs, int indexed)
+fz_load_jpx(fz_context *ctx, unsigned char *data, size_t size, fz_colorspace *defcs)
{
fz_jpxd state = { 0 };
fz_pixmap *pix;
@@ -895,7 +895,7 @@ fz_load_jpx(fz_context *ctx, unsigned char *data, size_t size, fz_colorspace *de
fz_try(ctx)
{
opj_lock(ctx);
- pix = jpx_read_image(ctx, &state, data, size, defcs, indexed, 0);
+ pix = jpx_read_image(ctx, &state, data, size, defcs, 0);
}
fz_always(ctx)
opj_unlock(ctx);
@@ -913,7 +913,7 @@ fz_load_jpx_info(fz_context *ctx, unsigned char *data, size_t size, int *wp, int
fz_try(ctx)
{
opj_lock(ctx);
- jpx_read_image(ctx, &state, data, size, NULL, 0, 1);
+ jpx_read_image(ctx, &state, data, size, NULL, 1);
}
fz_always(ctx)
opj_unlock(ctx);
diff --git a/source/pdf/pdf-image.c b/source/pdf/pdf-image.c
index 0617b496..daa93824 100644
--- a/source/pdf/pdf-image.c
+++ b/source/pdf/pdf-image.c
@@ -214,7 +214,6 @@ pdf_load_jpx(fz_context *ctx, pdf_document *doc, pdf_obj *dict, int forcemask)
fz_colorspace *colorspace = NULL;
fz_pixmap *pix = NULL;
pdf_obj *obj;
- int indexed = 0;
fz_image *mask = NULL;
fz_image *img = NULL;
@@ -233,13 +232,10 @@ pdf_load_jpx(fz_context *ctx, pdf_document *doc, pdf_obj *dict, int forcemask)
obj = pdf_dict_get(ctx, dict, PDF_NAME_ColorSpace);
if (obj)
- {
colorspace = pdf_load_colorspace(ctx, doc, obj);
- indexed = fz_colorspace_is_indexed(ctx, colorspace);
- }
len = fz_buffer_storage(ctx, buf, &data);
- pix = fz_load_jpx(ctx, data, len, colorspace, indexed);
+ pix = fz_load_jpx(ctx, data, len, colorspace);
obj = pdf_dict_geta(ctx, dict, PDF_NAME_SMask, PDF_NAME_Mask);
if (pdf_is_dict(ctx, obj))
@@ -251,7 +247,7 @@ pdf_load_jpx(fz_context *ctx, pdf_document *doc, pdf_obj *dict, int forcemask)
}
obj = pdf_dict_geta(ctx, dict, PDF_NAME_Decode, PDF_NAME_D);
- if (obj && !indexed)
+ if (obj && !fz_colorspace_is_indexed(ctx, colorspace))
{
float decode[FZ_MAX_COLORS * 2];
int i;