aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--experimental/PdfViewer/SkPdfBasics.cpp3
-rw-r--r--experimental/PdfViewer/SkPdfRenderer.cpp2
-rw-r--r--experimental/PdfViewer/pdfparser/native/SkPdfObject.h72
3 files changed, 58 insertions, 19 deletions
diff --git a/experimental/PdfViewer/SkPdfBasics.cpp b/experimental/PdfViewer/SkPdfBasics.cpp
index 497966792e..b9b57f3c0f 100644
--- a/experimental/PdfViewer/SkPdfBasics.cpp
+++ b/experimental/PdfViewer/SkPdfBasics.cpp
@@ -37,4 +37,7 @@ void SkPdfGraphicsState::applyGraphicsState(SkPaint* paint, bool stroking) {
if (fBlendModesLength == 1 && fBlendModes[0] != SkXfermode::kSrc_Mode) {
paint->setXfermodeMode(fBlendModes[0]);
}
+
+ //paint->setStrokeMiter(SkDoubleToScalar(fMiterLimit));
+ // TODO(edisonn): impl cap and join
}
diff --git a/experimental/PdfViewer/SkPdfRenderer.cpp b/experimental/PdfViewer/SkPdfRenderer.cpp
index 5ed7554342..e15f165185 100644
--- a/experimental/PdfViewer/SkPdfRenderer.cpp
+++ b/experimental/PdfViewer/SkPdfRenderer.cpp
@@ -1936,7 +1936,7 @@ static PdfResult PdfOp_gs(PdfContext* pdfContext, SkCanvas* canvas, PdfTokenLoop
skpdfGraphicsStateApplyAIS(pdfContext, gs->AIS(pdfContext->fPdfDoc));
}
- return kNYI_PdfResult;
+ return kOK_PdfResult;
}
//charSpace Tc Set the character spacing, Tc
diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfObject.h b/experimental/PdfViewer/pdfparser/native/SkPdfObject.h
index 5d86d9b8ad..f3832b2854 100644
--- a/experimental/PdfViewer/pdfparser/native/SkPdfObject.h
+++ b/experimental/PdfViewer/pdfparser/native/SkPdfObject.h
@@ -428,6 +428,13 @@ public:
}
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 @@ public:
}
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 @@ public:
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 @@ public:
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 @@ public:
break;
default:
- str = "Internal Error Object Type";
+ str = "Error";
break;
}