aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2014-12-02 06:37:21 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-12-02 06:37:21 -0800
commitd476a176b774c387b242fa8fb2a9296d722c34aa (patch)
treef67204499d9f2d340cd1a1d098a292f759a5a3d8
parentc6b8b02882a092f2ab58894956d3ac457d5c8607 (diff)
Remove PDF JPEG shortcut, since it fails on grayscale JPEGs.
-rw-r--r--gm/grayscalejpg.cpp25
-rw-r--r--gyp/gmslides.gypi1
-rw-r--r--resources/grayscale.jpgbin0 -> 770 bytes
-rw-r--r--src/pdf/SkPDFImage.cpp6
-rw-r--r--tests/PDFJpegEmbedTest.cpp3
5 files changed, 33 insertions, 2 deletions
diff --git a/gm/grayscalejpg.cpp b/gm/grayscalejpg.cpp
new file mode 100644
index 0000000000..0c617bf2eb
--- /dev/null
+++ b/gm/grayscalejpg.cpp
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Resources.h"
+#include "SkCanvas.h"
+#include "gm.h"
+
+/*
+ * Test decoding grayscale JPEG
+ * http://crbug.com/436079
+ */
+DEF_SIMPLE_GM(grayscalejpg, canvas, 128, 128) {
+ const char kResource[] = "grayscale.jpg";
+ SkBitmap bitmap;
+ if (GetResourceAsBitmap(kResource, &bitmap)) {
+ canvas->drawBitmap(bitmap, 0.0f, 0.0f);
+ } else {
+ SkDebugf("\nCould not decode file '%s'. Did you forget"
+ " to set the resourcePath?\n", kResource);
+ }
+}
diff --git a/gyp/gmslides.gypi b/gyp/gmslides.gypi
index f1ab2b74a5..5e1ae47fd0 100644
--- a/gyp/gmslides.gypi
+++ b/gyp/gmslides.gypi
@@ -99,6 +99,7 @@
'../gm/gradientDirtyLaundry.cpp',
'../gm/gradient_matrix.cpp',
'../gm/gradtext.cpp',
+ '../gm/grayscalejpg.cpp',
'../gm/hairlines.cpp',
'../gm/hairmodes.cpp',
'../gm/hittestpath.cpp',
diff --git a/resources/grayscale.jpg b/resources/grayscale.jpg
new file mode 100644
index 0000000000..6c6ae32c91
--- /dev/null
+++ b/resources/grayscale.jpg
Binary files differ
diff --git a/src/pdf/SkPDFImage.cpp b/src/pdf/SkPDFImage.cpp
index 0c9b7417a1..122d2f2148 100644
--- a/src/pdf/SkPDFImage.cpp
+++ b/src/pdf/SkPDFImage.cpp
@@ -629,6 +629,7 @@ bool SkPDFImage::populate(SkPDFCatalog* catalog) {
return true;
}
+#if 0 // reenable when we can figure out the JPEG colorspace
namespace {
/**
* This PDFObject assumes that its constructor was handed
@@ -657,7 +658,7 @@ public:
"/Subtype /Image\n"
"/Width %d\n"
"/Height %d\n"
- "/ColorSpace /DeviceRGB\n"
+ "/ColorSpace /DeviceRGB\n" // or DeviceGray
"/BitsPerComponent 8\n"
"/Filter /DCTDecode\n"
"/ColorTransform 0\n"
@@ -702,11 +703,13 @@ static bool is_jfif_jpeg(SkData* data) {
sizeof(bytesSixToTen))));
}
} // namespace
+#endif
SkPDFObject* SkPDFCreateImageObject(
const SkBitmap& bitmap,
const SkIRect& subset,
SkPicture::EncodeBitmap encoder) {
+#if 0 // reenable when we can figure out the JPEG colorspace
if (SkIRect::MakeWH(bitmap.width(), bitmap.height()) == subset) {
SkAutoTUnref<SkData> encodedData(ref_encoded_data(bitmap));
if (is_jfif_jpeg(encodedData)) {
@@ -714,5 +717,6 @@ SkPDFObject* SkPDFCreateImageObject(
(encodedData, bitmap.width(), bitmap.height()));
}
}
+#endif
return SkPDFImage::CreateImage(bitmap, subset, encoder);
}
diff --git a/tests/PDFJpegEmbedTest.cpp b/tests/PDFJpegEmbedTest.cpp
index c1d0ea8452..422b59a18f 100644
--- a/tests/PDFJpegEmbedTest.cpp
+++ b/tests/PDFJpegEmbedTest.cpp
@@ -84,7 +84,8 @@ DEF_TEST(PDFJpegEmbedTest, r) {
SkASSERT(pdfData);
pdf.reset();
- REPORTER_ASSERT(r, is_subset_of(mandrillData, pdfData));
+ // Test disabled, waiting on resolution to http://skbug.com/3180
+ // REPORTER_ASSERT(r, is_subset_of(mandrillData, pdfData));
// This JPEG uses a nonstandard colorspace - it can not be
// embedded into the PDF directly.