summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce Harrington <bryce@bryceharrington.org>2018-10-16 09:13:23 -0700
committerBryce Harrington <bryce@bryceharrington.org>2018-10-16 09:53:00 -0700
commitbf597b89288b6271f56031d5a20bfaf59f146d4c (patch)
tree3fadc2bab3aa23645951c4f7411d844dbd22f973
parent868998a0f4373cef190232f5bdf817e64548023f (diff)
Revert "Correctly decode Adobe CMYK JPEGs in PDF export"
From further testing and investigation it appears that many PDF viewers already have a workaround to invert Adobe CMYK JPEGs, so our generated PDFs display incorrectly with those viewers due to double-inversion. Further investigation will be needed to find a better solution that doesn't cause regression for some PDF viewers; perhaps PDF viewers that lack this inversion workaround should be changed to include it. For now we'll drop the patch to avoid shipping the regression in 1.16.0. This reverts commit b207a932a2d3740984319dffd58a0791580597cd. Reference: https://bugs.freedesktop.org/show_bug.cgi?id=97612 Fixes: https://gitlab.freedesktop.org/cairo/cairo/issues/156
-rw-r--r--src/cairo-image-info-private.h1
-rw-r--r--src/cairo-image-info.c21
-rw-r--r--src/cairo-pdf-surface.c2
3 files changed, 0 insertions, 24 deletions
diff --git a/src/cairo-image-info-private.h b/src/cairo-image-info-private.h
index 99cbbcc02..e64928e40 100644
--- a/src/cairo-image-info-private.h
+++ b/src/cairo-image-info-private.h
@@ -43,7 +43,6 @@ typedef struct _cairo_image_info {
int height;
int num_components;
int bits_per_component;
- int is_adobe_jpeg;
} cairo_image_info_t;
cairo_private cairo_int_status_t
diff --git a/src/cairo-image-info.c b/src/cairo-image-info.c
index 3b4cf6edb..d147e3723 100644
--- a/src/cairo-image-info.c
+++ b/src/cairo-image-info.c
@@ -67,9 +67,6 @@
#define SOF14 0xce
#define SOF15 0xcf
-/* Start of tag markers */
-#define APP14 0xee /* Adobe */
-
static const unsigned char *
_jpeg_skip_segment (const unsigned char *p)
{
@@ -97,8 +94,6 @@ _cairo_image_info_get_jpeg_info (cairo_image_info_t *info,
{
const unsigned char *p = data;
- info->is_adobe_jpeg = FALSE;
-
while (p + 1 < data + length) {
if (*p != 0xff)
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -136,18 +131,6 @@ _cairo_image_info_get_jpeg_info (cairo_image_info_t *info,
_jpeg_extract_info (info, p);
return CAIRO_STATUS_SUCCESS;
- case APP14:
- /* "Adobe" tags segment indicates inverted CMYK (in
- * CMYK images). */
- if (p + 12 > data + length)
- return CAIRO_INT_STATUS_UNSUPPORTED;
-
- info->is_adobe_jpeg =
- (0 == strncmp((const char *)(p + 3), "Adobe", 5));
-
- p = _jpeg_skip_segment(p);
- break;
-
default:
if (*p >= RST_begin && *p <= RST_end) {
p++;
@@ -223,7 +206,6 @@ _jpx_extract_info (const unsigned char *p, cairo_image_info_t *info)
info->width = get_unaligned_be32 (p + 4);
info->num_components = (p[8] << 8) + p[9];
info->bits_per_component = p[10];
- info->is_adobe_jpeg = FALSE;
}
cairo_int_status_t
@@ -301,8 +283,6 @@ _cairo_image_info_get_png_info (cairo_image_info_t *info,
p += 4;
info->height = get_unaligned_be32 (p);
- info->is_adobe_jpeg = FALSE;
-
return CAIRO_STATUS_SUCCESS;
}
@@ -415,7 +395,6 @@ _jbig2_extract_info (cairo_image_info_t *info, const unsigned char *p)
info->height = get_unaligned_be32 (p + 4);
info->num_components = 1;
info->bits_per_component = 1;
- info->is_adobe_jpeg = FALSE;
}
cairo_int_status_t
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index ab6781340..7eb61aa1e 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -3169,7 +3169,6 @@ _cairo_pdf_surface_emit_jpeg_image (cairo_pdf_surface_t *surface,
" /Height %d\n"
" /ColorSpace %s\n"
" /Interpolate %s\n"
- "%s"
" /BitsPerComponent %d\n"
"%s"
" /Filter /DCTDecode\n",
@@ -3177,7 +3176,6 @@ _cairo_pdf_surface_emit_jpeg_image (cairo_pdf_surface_t *surface,
info.height,
colorspace,
surface_entry->interpolate ? "true" : "false",
- info.is_adobe_jpeg && info.num_components == 4 ? " /Decode [ 1 0 1 0 1 0 1 0 ]\n" : "",
info.bits_per_component,
smask_buf);
}