remove some old code

Review URL: https://codereview.chromium.org/16845002

git-svn-id: http://skia.googlecode.com/svn/trunk@9547 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
edisonn@google.com 2013-06-12 19:53:42 +00:00
parent af3daa01f6
commit e4d11becb5

View File

@ -54,7 +54,7 @@ bool NameFromDictionary(const PdfMemDocument* pdfDoc,
* - load font for youtube.pdf
*/
#define PDF_TRACE
//#define PDF_TRACE
//#define PDF_TRACE_DIFF_IN_PNG
//#define PDF_DEBUG_NO_CLIPING
//#define PDF_DEBUG_NO_PAGE_CLIPING
@ -1019,92 +1019,6 @@ SkBitmap getImageFromObject(PdfContext* pdfContext, const SkPdfImage* image, boo
return bitmap;
}
SkBitmap getImageFromObjectOld(PdfContext* pdfContext, const PdfObject& obj, bool transparencyMask) {
if (!obj.HasStream() || obj.GetStream() == NULL || obj.GetStream()->GetLength() == 0 ||
!obj.IsDictionary()) {
// TODO(edisonn): report warning to be used in testing.
return SkBitmap();
}
const PdfObject* value = resolveReferenceObject(pdfContext->fPdfDoc,
obj.GetDictionary().GetKey(PdfName("Filter")));
if (value && value->IsArray() && value->GetArray().GetSize() == 1) {
value = resolveReferenceObject(pdfContext->fPdfDoc,
&value->GetArray()[0]);
}
// TODO (edisonn): Fast Jpeg(DCTDecode) draw, or fast PNG(FlateDecode) draw ...
// if (value && value->IsName() && value->GetName().GetName() == "DCTDecode") {
// SkStream stream = SkStream::
// SkImageDecoder::Factory()
// }
// Get color space
// translate
long bpc = 0;
LongFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "BitsPerComponent", "BPC", &bpc);
bool imageMask = false;
BoolFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "ImageMask", "", &imageMask);
if (imageMask) {
if (bpc != 0 && bpc != 1) {
// TODO(edisonn): report warning to be used in testing.
return SkBitmap();
}
bpc = 1;
}
long width;
if (!LongFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "Width", &width)) {
// TODO(edisonn): report warning to be used in testing.
return SkBitmap();
}
long height;
if (!LongFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "Height", &height)) {
// TODO(edisonn): report warning to be used in testing.
return SkBitmap();
}
std::string colorSpace; // TODO(edisonn): load others than names, for more complicated
if (!NameFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "ColorSpace", &colorSpace)) {
// TODO(edisonn): report warning to be used in testing.
return SkBitmap();
}
char* uncompressedStream = NULL;
pdf_long uncompressedStreamLength = 0;
PdfResult ret = kPartial_PdfResult;
// TODO(edisonn): get rid of try/catch exceptions! We should not throw on user data!
try {
obj.GetStream()->GetFilteredCopy(&uncompressedStream, &uncompressedStreamLength);
} catch (PdfError& e) {
// TODO(edisonn): report warning to be used in testing.
return SkBitmap();
}
int bytesPerLine = uncompressedStreamLength / height;
#ifdef PDF_TRACE
if (uncompressedStreamLength % height != 0) {
printf("Warning uncompressedStreamLength % height != 0 !!!\n");
}
#endif
SkBitmap bitmap = transferImageStreamToBitmap(
(unsigned char*)uncompressedStream, uncompressedStreamLength,
width, height, bytesPerLine,
bpc, colorSpace,
transparencyMask);
free(uncompressedStream);
return bitmap;
}
SkBitmap getSmaskFromObject(PdfContext* pdfContext, const SkPdfImage* obj) {
const PdfObject* sMask = resolveReferenceObject(pdfContext->fPdfDoc,
obj->podofo()->GetDictionary().GetKey(PdfName("SMask")));
@ -1126,27 +1040,6 @@ SkBitmap getSmaskFromObject(PdfContext* pdfContext, const SkPdfImage* obj) {
return pdfContext->fGraphicsState.fSMask;
}
SkBitmap getSmaskFromObjectOld(PdfContext* pdfContext, const PdfObject& obj) {
const PdfObject* sMask = resolveReferenceObject(pdfContext->fPdfDoc,
obj.GetDictionary().GetKey(PdfName("SMask")));
#ifdef PDF_TRACE
std::string str;
if (sMask) {
sMask->ToString(str);
printf("/SMask of /Subtype /Image: %s\n", str.c_str());
}
#endif
if (sMask) {
return getImageFromObjectOld(pdfContext, *sMask, true);
}
// TODO(edisonn): implement GS SMask. Default to empty right now.
return pdfContext->fGraphicsState.fSMask;
}
PdfResult doXObject_Image(PdfContext* pdfContext, SkCanvas* canvas, const SkPdfImage* skpdfimage) {
if (skpdfimage == NULL || !skpdfimage->valid()) {
return kIgnoreError_PdfResult;
@ -1175,148 +1068,6 @@ PdfResult doXObject_Image(PdfContext* pdfContext, SkCanvas* canvas, const SkPdfI
return kPartial_PdfResult;
}
PdfResult doXObject_ImageOld(PdfContext* pdfContext, SkCanvas* canvas, const PdfObject& obj) {
if (!obj.HasStream() || obj.GetStream() == NULL || obj.GetStream()->GetLength() == 0 ||
!obj.IsDictionary()) {
return kIgnoreError_PdfResult;
}
SkBitmap image = getImageFromObjectOld(pdfContext, obj, false);
SkBitmap sMask = getSmaskFromObjectOld(pdfContext, obj);
canvas->save();
canvas->setMatrix(pdfContext->fGraphicsState.fMatrix);
SkRect dst = SkRect::MakeXYWH(SkDoubleToScalar(0.0), SkDoubleToScalar(0.0), SkDoubleToScalar(1.0), SkDoubleToScalar(1.0));
if (sMask.empty()) {
canvas->drawBitmapRect(image, dst, NULL);
} else {
canvas->saveLayer(&dst, NULL);
canvas->drawBitmapRect(image, dst, NULL);
SkPaint xfer;
xfer.setXfermodeMode(SkXfermode::kSrcOut_Mode); // SkXfermode::kSdtOut_Mode
canvas->drawBitmapRect(sMask, dst, &xfer);
canvas->restore();
}
canvas->restore();
return kPartial_PdfResult;
}
PdfResult doXObject_ImageOld2(PdfContext* pdfContext, SkCanvas* canvas, const PdfObject& obj) {
if (!obj.HasStream() || obj.GetStream() == NULL || obj.GetStream()->GetLength() == 0 ||
!obj.IsDictionary()) {
return kIgnoreError_PdfResult;
}
const PdfObject* sMask = resolveReferenceObject(pdfContext->fPdfDoc,
obj.GetDictionary().GetKey(PdfName("SMask")));
// TODO(edisonn): else get smask from graphi state
// TODO(edisonn): add utility, SkBitmap loadBitmap(PdfObject& obj, bool no_smask);
// TODO(edisonn): add utility, SkBitmap loadSmask(state, PdfObject& obj);
#ifdef PDF_TRACE
std::string str;
if (sMask) {
sMask->ToString(str);
printf("/SMask of /Subtype /Image: %s\n", str.c_str());
}
#endif
/*
// TODO (edisonn): Fast Jpeg(DCTDecode) draw, or fast PNG(FlateDecode) draw ...
PdfObject* value = resolveReferenceObject(pdfContext->fPdfDoc,
obj.GetDictionary().GetKey(PdfName("Filter")));
if (value && value->IsArray() && value->GetArray().GetSize() == 1) {
value = resolveReferenceObject(pdfContext->fPdfDoc,
&value->GetArray()[0]);
}
if (value && value->IsName() && value->GetName().GetName() == "DCTDecode") {
SkStream stream = SkStream::
SkImageDecoder::Factory()
}
*/
// Get color space
// trasnlate
long bpc = 0;
LongFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "BitsPerComponent", "BPC", &bpc);
bool imageMask = false;
BoolFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "ImageMask", "", &imageMask);
if (imageMask) {
if (bpc != 0 && bpc != 1) {
return kIgnoreError_PdfResult;
}
bpc = 1;
}
long width;
if (!LongFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "Width", "W", &width)) {
return kIgnoreError_PdfResult;
}
long height;
if (!LongFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "Height", "H", &height)) {
return kIgnoreError_PdfResult;
}
std::string colorSpace; // TODO(edisonn): load others than names, for more complicated
if (!NameFromDictionary(pdfContext->fPdfDoc, obj.GetDictionary(), "ColorSpace", "", &colorSpace)) {
return kIgnoreError_PdfResult;
}
char* uncompressedStream = NULL;
pdf_long uncompressedStreamLength = 0;
PdfResult ret = kPartial_PdfResult;
// TODO(edisonn): get rid of try/catch exceptions! We should not throw on user data!
try {
obj.GetStream()->GetFilteredCopy(&uncompressedStream, &uncompressedStreamLength);
} catch (PdfError& e) {
return kIgnoreError_PdfResult;
}
SkColor* uncompressedStreamArgb = NULL;
pdf_long uncompressedStreamLengthInBytesArgb = 0;
int bytesPerLine = uncompressedStreamLength / height;
#ifdef PDF_TRACE
if (uncompressedStreamLength % height != 0) {
printf("Warning uncompressedStreamLength % height != 0 !!!\n");
}
#endif
if (!transferImageStreamToARGB((unsigned char*)uncompressedStream, uncompressedStreamLength,
width, bytesPerLine,
bpc, colorSpace,
&uncompressedStreamArgb,
&uncompressedStreamLengthInBytesArgb)) {
free(uncompressedStream); // TODO(edisonn): avoid freeing the stream in 2 places!
return kIgnoreError_PdfResult;
}
free(uncompressedStream);
SkBitmap::Config config = SkBitmap::kARGB_8888_Config;
SkBitmap bitmap;
bitmap.setConfig(config, width, height);
bitmap.setPixels(uncompressedStreamArgb);
canvas->save();
canvas->setMatrix(pdfContext->fGraphicsState.fMatrix);
SkRect dst = SkRect::MakeXYWH(SkDoubleToScalar(0.0), SkDoubleToScalar(0.0), SkDoubleToScalar(1.0), SkDoubleToScalar(1.0));
canvas->drawBitmapRect(bitmap, dst, NULL);
canvas->restore();
return kPartial_PdfResult;
}
bool SkMatrixFromDictionary(PdfContext* pdfContext,
const PdfDictionary& dict,
const char* key,
@ -1476,8 +1227,10 @@ PdfResult doXObject(PdfContext* pdfContext, SkCanvas* canvas, const PdfObject& o
{
case kObjectDictionaryXObjectImage_SkPdfObjectType:
ret = doXObject_Image(pdfContext, canvas, skobj->asImage());
//case kObjectDictionaryXObjectForm_SkPdfObjectType:
//return doXObject_Form(skxobj.asForm());
break;
case kObjectDictionaryXObjectForm_SkPdfObjectType:
ret = doXObject_Form(pdfContext, canvas, obj);
break;
//case kObjectDictionaryXObjectPS_SkPdfObjectType:
//return doXObject_PS(skxobj.asPS());
}
@ -1486,47 +1239,6 @@ PdfResult doXObject(PdfContext* pdfContext, SkCanvas* canvas, const PdfObject& o
return ret;
}
PdfResult doXObjectOld(PdfContext* pdfContext, SkCanvas* canvas, const PdfObject& obj) {
if (CheckRecursiveRendering::IsInRendering(obj)) {
// Oops, corrupt PDF!
return kIgnoreError_PdfResult;
}
CheckRecursiveRendering checkRecursion(obj);
if (!obj.IsDictionary()) {
return kIgnoreError_PdfResult;
}
const PdfObject* type = resolveReferenceObject(pdfContext->fPdfDoc,
obj.GetDictionary().GetKey(PdfName("Type")));
if (type == NULL || !type->IsName()) {
return kIgnoreError_PdfResult;
}
if (type->GetName().GetName() != "XObject") {
return kIgnoreError_PdfResult;
}
const PdfObject* subtype =
resolveReferenceObject(pdfContext->fPdfDoc,
obj.GetDictionary().GetKey(PdfName("Subtype")));
if (subtype == NULL || !subtype->IsName()) {
return kIgnoreError_PdfResult;
}
if (subtype->GetName().GetName() == "Image") {
return doXObject_ImageOld(pdfContext, canvas, obj);
} else if (subtype->GetName().GetName() == "Form") {
return doXObject_Form(pdfContext, canvas, obj);
} else if (subtype->GetName().GetName() == "PS") {
return doXObject_PS(pdfContext, canvas, obj);
}
return kIgnoreError_PdfResult;
}
PdfResult PdfOp_q(PdfContext* pdfContext, SkCanvas* canvas, PdfTokenLooper** looper) {
pdfContext->fStateStack.push(pdfContext->fGraphicsState);
canvas->save();