From 710be0599f68a309f34e57799379827d8d91c3af Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 20 Dec 2010 00:52:43 +0000 Subject: Only use colorspace resource dictionary for inline images. --- apps/pdfextract.c | 2 +- mupdf/mupdf.h | 2 +- mupdf/pdf_image.c | 18 ++++++------------ mupdf/pdf_interpret.c | 2 +- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/apps/pdfextract.c b/apps/pdfextract.c index 724bccb9..fa515638 100644 --- a/apps/pdfextract.c +++ b/apps/pdfextract.c @@ -47,7 +47,7 @@ static void saveimage(int num) /* TODO: detect DCTD and save as jpeg */ - error = pdf_loadimage(&img, xref, nil, ref); + error = pdf_loadimage(&img, xref, ref); if (error) die(error); diff --git a/mupdf/mupdf.h b/mupdf/mupdf.h index 70b130c7..b13f78d7 100644 --- a/mupdf/mupdf.h +++ b/mupdf/mupdf.h @@ -262,7 +262,7 @@ void pdf_dropxobject(pdf_xobject *xobj); */ fz_error pdf_loadinlineimage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, fz_stream *file); -fz_error pdf_loadimage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *obj); +fz_error pdf_loadimage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *obj); int pdf_isjpximage(fz_obj *dict); /* diff --git a/mupdf/pdf_image.c b/mupdf/pdf_image.c index 9bc9f6ee..8e1428a8 100644 --- a/mupdf/pdf_image.c +++ b/mupdf/pdf_image.c @@ -70,6 +70,7 @@ pdf_loadimageimp(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict, fz obj = fz_dictgetsa(dict, "ColorSpace", "CS"); if (obj && !imagemask && !forcemask) { + /* colorspace resource lookup is only done for inline images */ if (fz_isname(obj)) { res = fz_dictget(fz_dictgets(rdb, "ColorSpace"), obj); @@ -267,7 +268,7 @@ pdf_isjpximage(fz_obj *dict) } static fz_error -pdf_loadjpximage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict) +pdf_loadjpximage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *dict) { fz_error error; fz_buffer *buf; @@ -292,7 +293,7 @@ pdf_loadjpximage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict) obj = fz_dictgetsa(dict, "SMask", "Mask"); if (fz_isdict(obj)) { - error = pdf_loadimageimp(&img->mask, xref, rdb, obj, nil, 1); + error = pdf_loadimageimp(&img->mask, xref, nil, obj, nil, 1); if (error) { fz_droppixmap(img); @@ -303,13 +304,6 @@ pdf_loadjpximage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict) obj = fz_dictgets(dict, "ColorSpace"); if (obj) { - if (fz_isname(obj)) - { - res = fz_dictget(fz_dictgets(rdb, "ColorSpace"), obj); - if (res) - obj = res; - } - fz_dropcolorspace(img->colorspace); img->colorspace = nil; @@ -331,7 +325,7 @@ pdf_loadjpximage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict) } fz_error -pdf_loadimage(fz_pixmap **pixp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict) +pdf_loadimage(fz_pixmap **pixp, pdf_xref *xref, fz_obj *dict) { fz_error error; @@ -346,13 +340,13 @@ pdf_loadimage(fz_pixmap **pixp, pdf_xref *xref, fz_obj *rdb, fz_obj *dict) /* special case for JPEG2000 images */ if (pdf_isjpximage(dict)) { - error = pdf_loadjpximage(pixp, xref, rdb, dict); + error = pdf_loadjpximage(pixp, xref, dict); if (error) return fz_rethrow(error, "cannot load jpx image (%d 0 R)", fz_tonum(dict)); } else { - error = pdf_loadimageimp(pixp, xref, rdb, dict, nil, 0); + error = pdf_loadimageimp(pixp, xref, nil, dict, nil, 0); if (error) return fz_rethrow(error, "cannot load image (%d 0 R)", fz_tonum(dict)); } diff --git a/mupdf/pdf_interpret.c b/mupdf/pdf_interpret.c index afcc7c50..ecad5b9b 100644 --- a/mupdf/pdf_interpret.c +++ b/mupdf/pdf_interpret.c @@ -561,7 +561,7 @@ Lsetcolorspace: if ((csi->dev->hints & FZ_IGNOREIMAGE) == 0) { fz_pixmap *img; - error = pdf_loadimage(&img, csi->xref, rdb, obj); + error = pdf_loadimage(&img, csi->xref, obj); if (error) return fz_rethrow(error, "cannot load image (%d %d R)", fz_tonum(obj), fz_togen(obj)); pdf_showimage(csi, img); -- cgit v1.2.3