Remove PDF JPEG shortcut, since it fails on grayscale JPEGs.

BUG=436079

Review URL: https://codereview.chromium.org/767343002
This commit is contained in:
halcanary 2014-12-02 06:37:21 -08:00 committed by Commit bot
parent c6b8b02882
commit d476a176b7
5 changed files with 33 additions and 2 deletions

25
gm/grayscalejpg.cpp Normal file
View File

@ -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);
}
}

View File

@ -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',

BIN
resources/grayscale.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

View File

@ -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);
}

View File

@ -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.