Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(672)

Unified Diff: experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp

Issue 18536014: pdfviewer: more load references dinamically plumming (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
===================================================================
--- experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp (revision 9987)
+++ experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp (working copy)
@@ -128,14 +128,14 @@
while (current < trailerEnd) {
token.reset();
unsigned char* previous = current;
- current = nextObject(current, trailerEnd, &token, NULL);
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
if (!token.isInteger()) {
return previous;
}
int startId = (int)token.intValue();
token.reset();
- current = nextObject(current, trailerEnd, &token, NULL);
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
if (!token.isInteger()) {
// TODO(edisonn): report/warning
@@ -146,7 +146,7 @@
for (int i = 0; i < entries; i++) {
token.reset();
- current = nextObject(current, trailerEnd, &token, NULL);
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
if (!token.isInteger()) {
// TODO(edisonn): report/warning
return current;
@@ -154,7 +154,7 @@
int offset = (int)token.intValue();
token.reset();
- current = nextObject(current, trailerEnd, &token, NULL);
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
if (!token.isInteger()) {
// TODO(edisonn): report/warning
return current;
@@ -162,7 +162,7 @@
int generation = (int)token.intValue();
token.reset();
- current = nextObject(current, trailerEnd, &token, NULL);
+ current = nextObject(current, trailerEnd, &token, NULL, NULL);
if (!token.isKeyword() || token.len() != 1 || (*token.c_str() != 'f' && *token.c_str() != 'n')) {
// TODO(edisonn): report/warning
return current;
@@ -179,7 +179,7 @@
unsigned char* current = ignoreLine(trailerStart, trailerEnd); // TODO(edisonn): verify next keyord is "trailer" use nextObject here
SkPdfObject token;
- current = nextObject(current, trailerEnd, &token, fAllocator);
+ current = nextObject(current, trailerEnd, &token, fAllocator, NULL);
if (!token.isDictionary()) {
return -1;
}
@@ -214,7 +214,7 @@
fObjects[id].fObj = NULL;
}
-SkPdfObject* SkNativeParsedPDF::readObject(int id/*, int expectedGeneration*/) const {
+SkPdfObject* SkNativeParsedPDF::readObject(int id/*, int expectedGeneration*/) {
long startOffset = fObjects[id].fOffset;
//long endOffset = fObjects[id].fOffsetEnd;
// TODO(edisonn): use hinted endOffset
@@ -225,26 +225,26 @@
unsigned char* current = fFileContent + startOffset;
unsigned char* end = fFileContent + fContentLength;
- SkPdfNativeTokenizer tokenizer(current, end - current, fMapper, fAllocator);
+ SkPdfNativeTokenizer tokenizer(current, end - current, fMapper, fAllocator, this);
SkPdfObject idObj;
SkPdfObject generationObj;
SkPdfObject objKeyword;
SkPdfObject* dict = fAllocator->allocObject();
- current = nextObject(current, end, &idObj, NULL);
+ current = nextObject(current, end, &idObj, NULL, NULL);
if (current >= end) {
// TODO(edisonn): report warning/error
return NULL;
}
- current = nextObject(current, end, &generationObj, NULL);
+ current = nextObject(current, end, &generationObj, NULL, NULL);
if (current >= end) {
// TODO(edisonn): report warning/error
return NULL;
}
- current = nextObject(current, end, &objKeyword, NULL);
+ current = nextObject(current, end, &objKeyword, NULL, NULL);
if (current >= end) {
// TODO(edisonn): report warning/error
return NULL;
@@ -258,7 +258,7 @@
// TODO(edisonn): report warning/error
}
- current = nextObject(current, end, dict, fAllocator);
+ current = nextObject(current, end, dict, fAllocator, this);
// TODO(edisonn): report warning/error - verify last token is endobj
@@ -293,7 +293,7 @@
}
// TODO(edisonn): Partial implemented. Move the logics directly in the code generator for inheritable and default value?
-SkRect SkNativeParsedPDF::MediaBox(int page) const {
+SkRect SkNativeParsedPDF::MediaBox(int page) {
SkPdfPageObjectDictionary* current = fPages[page];
while (!current->has_MediaBox() && current->has_Parent()) {
current = (SkPdfPageObjectDictionary*)current->Parent(this);
@@ -305,7 +305,7 @@
}
// TODO(edisonn): stream or array ... ? for now only array
-SkPdfNativeTokenizer* SkNativeParsedPDF::tokenizerOfPage(int page) const {
+SkPdfNativeTokenizer* SkNativeParsedPDF::tokenizerOfPage(int page) {
if (fPages[page]->isContentsAStream(this)) {
return tokenizerOfStream(fPages[page]->getContentsAsStream(this));
} else {
@@ -315,19 +315,19 @@
}
}
-SkPdfNativeTokenizer* SkNativeParsedPDF::tokenizerOfStream(SkPdfObject* stream) const {
+SkPdfNativeTokenizer* SkNativeParsedPDF::tokenizerOfStream(SkPdfObject* stream) {
if (stream == NULL) {
return NULL;
}
- return new SkPdfNativeTokenizer(stream, fMapper, fAllocator);
+ return new SkPdfNativeTokenizer(stream, fMapper, fAllocator, this);
}
// TODO(edisonn): NYI
-SkPdfNativeTokenizer* SkNativeParsedPDF::tokenizerOfBuffer(unsigned char* buffer, size_t len) const {
+SkPdfNativeTokenizer* SkNativeParsedPDF::tokenizerOfBuffer(unsigned char* buffer, size_t len) {
// warning does not track two calls in the same buffer! the buffer is updated!
// make a clean copy if needed!
- return new SkPdfNativeTokenizer(buffer, len, fMapper, fAllocator);
+ return new SkPdfNativeTokenizer(buffer, len, fMapper, fAllocator, this);
}
size_t SkNativeParsedPDF::objects() const {
@@ -376,13 +376,9 @@
return fAllocator;
}
-SkPdfObject* SkNativeParsedPDF::resolveReference(SkPdfObject* ref) const {
- return (SkPdfObject*)resolveReference((const SkPdfObject*)ref);
-}
-
// TODO(edisonn): fix infinite loop if ref to itself!
// TODO(edisonn): perf, fix refs at load, and resolve will simply return fResolvedReference?
-SkPdfObject* SkNativeParsedPDF::resolveReference(const SkPdfObject* ref) const {
+SkPdfObject* SkNativeParsedPDF::resolveReference(const SkPdfObject* ref) {
if (ref && ref->isReference()) {
int id = ref->referenceId();
// TODO(edisonn): generation/updates not supported now

Powered by Google App Engine
This is Rietveld 408576698