diff options
author | Tor Andersson <tor@ghostscript.com> | 2010-12-20 00:52:43 +0000 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2010-12-20 00:52:43 +0000 |
commit | 710be0599f68a309f34e57799379827d8d91c3af (patch) | |
tree | a548c83003795b37e0ea27d8dba0550cf6c50032 | |
parent | c11468d5c6bb1ccdc57122497d34af67bba279f5 (diff) | |
download | mupdf-710be0599f68a309f34e57799379827d8d91c3af.tar.xz |
Only use colorspace resource dictionary for inline images.
-rw-r--r-- | apps/pdfextract.c | 2 | ||||
-rw-r--r-- | mupdf/mupdf.h | 2 | ||||
-rw-r--r-- | mupdf/pdf_image.c | 18 | ||||
-rw-r--r-- | 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); |