summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2010-12-20 00:52:43 +0000
committerTor Andersson <tor@ghostscript.com>2010-12-20 00:52:43 +0000
commit710be0599f68a309f34e57799379827d8d91c3af (patch)
treea548c83003795b37e0ea27d8dba0550cf6c50032
parentc11468d5c6bb1ccdc57122497d34af67bba279f5 (diff)
downloadmupdf-710be0599f68a309f34e57799379827d8d91c3af.tar.xz
Only use colorspace resource dictionary for inline images.
-rw-r--r--apps/pdfextract.c2
-rw-r--r--mupdf/mupdf.h2
-rw-r--r--mupdf/pdf_image.c18
-rw-r--r--mupdf/pdf_interpret.c2
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);