| Index: experimental/PdfViewer/pdfparser/native/SkPdfObject.h
|
| ===================================================================
|
| --- experimental/PdfViewer/pdfparser/native/SkPdfObject.h (revision 10467)
|
| +++ experimental/PdfViewer/pdfparser/native/SkPdfObject.h (working copy)
|
| @@ -428,6 +428,13 @@
|
| }
|
| SkPdfObject* ret = NULL;
|
| fMap->find((const char*)key, len, &ret);
|
| +
|
| +#ifdef PDF_TRACE
|
| + SkString _key;
|
| + _key.append((const char*)key, len);
|
| + printf("\nget(/%s) = %s\n", _key.c_str(), ret ? ret->toString(0, len + 9).c_str() : "_NOT_FOUND");
|
| +#endif
|
| +
|
| return ret;
|
| }
|
|
|
| @@ -458,6 +465,13 @@
|
| }
|
| SkPdfObject* ret = NULL;
|
| fMap->find((const char*)key, len, &ret);
|
| +
|
| +#ifdef PDF_TRACE
|
| + SkString _key;
|
| + _key.append((const char*)key, len);
|
| + printf("\nget(/%s) = %s\n", _key.c_str(), ret ? ret->toString(0, len + 9).c_str() : "_NOT_FOUND");
|
| +#endif
|
| +
|
| return ret;
|
| }
|
|
|
| @@ -816,58 +830,80 @@
|
| return true;
|
| }
|
|
|
| - SkString toString() {
|
| + void appendSpaces(SkString* str, int level) {
|
| + for (int i = 0 ; i < level; i++) {
|
| + str->append(" ");
|
| + }
|
| + }
|
| +
|
| + SkString toString(int firstRowLevel = 0, int level = 0) {
|
| SkString str;
|
| + appendSpaces(&str, firstRowLevel);
|
| switch (fObjectType) {
|
| case kInvalid_PdfObjectType:
|
| - str.append("Invalid");
|
| + str.append("__Invalid");
|
| break;
|
|
|
| case kBoolean_PdfObjectType:
|
| - str.appendf("Boolean: %s", fBooleanValue ? "true" : "false");
|
| + str.appendf("%s", fBooleanValue ? "true" : "false");
|
| break;
|
|
|
| case kInteger_PdfObjectType:
|
| - str.appendf("Integer: %i", (int)fIntegerValue);
|
| + str.appendf("%i", (int)fIntegerValue);
|
| break;
|
|
|
| case kReal_PdfObjectType:
|
| - str.appendf("Real: %f", fRealValue);
|
| + str.appendf("%f", fRealValue);
|
| break;
|
|
|
| case kString_PdfObjectType:
|
| - str.appendf("String, len() = %u: ", (unsigned int)fStr.fBytes);
|
| + str.append("\"");
|
| str.append((const char*)fStr.fBuffer, fStr.fBytes);
|
| + str.append("\"");
|
| break;
|
|
|
| case kHexString_PdfObjectType:
|
| - str.appendf("HexString, len() = %u: ", (unsigned int)fStr.fBytes);
|
| + str.append("<");
|
| str.append((const char*)fStr.fBuffer, fStr.fBytes);
|
| + str.append(">");
|
| break;
|
|
|
| case kName_PdfObjectType:
|
| - str.appendf("Name, len() = %u: ", (unsigned int)fStr.fBytes);
|
| + str.append("/");
|
| str.append((const char*)fStr.fBuffer, fStr.fBytes);
|
| break;
|
|
|
| case kKeyword_PdfObjectType:
|
| - str.appendf("Keyword, len() = %u: ", (unsigned int)fStr.fBytes);
|
| str.append((const char*)fStr.fBuffer, fStr.fBytes);
|
| break;
|
|
|
| case kArray_PdfObjectType:
|
| - str.append("Array, size() = %i [", size());
|
| + str.append("[\n");
|
| for (unsigned int i = 0; i < size(); i++) {
|
| - str.append(objAtAIndex(i)->toString());
|
| + str.append(objAtAIndex(i)->toString(level + 1, level + 1));
|
| + if (i < size() - 1) {
|
| + str.append(",");
|
| + }
|
| + str.append("\n");
|
| }
|
| + appendSpaces(&str, level);
|
| str.append("]");
|
| break;
|
|
|
| - case kDictionary_PdfObjectType:
|
| - // TODO(edisonn): NYI
|
| - str.append("Dictionary: NYI");
|
| - if (hasStream()) {
|
| - str.append(" HAS_STREAM");
|
| + case kDictionary_PdfObjectType: {
|
| + SkTDict<SkPdfObject*>::Iter iter(*fMap);
|
| + SkPdfObject* obj = NULL;
|
| + const char* key = NULL;
|
| + str.append("<<\n");
|
| + while ((key = iter.next(&obj)) != NULL) {
|
| + appendSpaces(&str, level + 2);
|
| + str.appendf("/%s %s\n", key, obj->toString(0, level + strlen(key) + 4).c_str());
|
| + }
|
| + appendSpaces(&str, level);
|
| + str.append(">>");
|
| + if (hasStream()) {
|
| + str.append("stream HAS_STREAM endstream");
|
| + }
|
| }
|
| break;
|
|
|
| @@ -876,7 +912,7 @@
|
| break;
|
|
|
| case kReference_PdfObjectType:
|
| - str.appendf("Reference: %i %i", fRef.fId, fRef.fGen);
|
| + str.appendf("%i %i R", fRef.fId, fRef.fGen);
|
| break;
|
|
|
| case kUndefined_PdfObjectType:
|
| @@ -884,7 +920,7 @@
|
| break;
|
|
|
| default:
|
| - str = "Internal Error Object Type";
|
| + str = "Error";
|
| break;
|
| }
|
|
|
|
|