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

Unified Diff: experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h

Issue 26613006: code cleanup (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 2 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
« no previous file with comments | « experimental/PdfViewer/SkPdfUtils.h ('k') | experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h
===================================================================
--- experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h (revision 11625)
+++ experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.h (working copy)
@@ -28,24 +28,25 @@
class SkStream;
+// TODO(edisonn): Implement a smart stream that can seek, and that can also fall back to reading
+// the bytes in order. For example, we can try to read the stream optimistically, but if there
+// are issues in the pdf, we must read the pdf from the beginning, and fix whatever errors we can.
+// This would be useful to show quickly page 100 in a pdf (www.example.com/foo.pdf#page100)
+// But if the pdf is missing the xref, then we will have to read most of pdf to be able to render
+// page 100.
+
class SkPdfNativeDoc {
private:
struct PublicObjectEntry {
long fOffset;
- // long endOffset; // TODO(edisonn): determine the end of the object, to be used when the doc is corrupted
+ // long endOffset; // TODO(edisonn): determine the end of the object,
+ // to be used when the doc is corrupted, for fast failure.
SkPdfNativeObject* fObj;
- // TODO(edisonn): perf ... probably it does not make sense to cache the ref. test it!
SkPdfNativeObject* fResolvedReference;
bool fIsReferenceResolved;
};
public:
- // TODO(edisonn): read methods: file, stream, http(s)://url, url with seek?
- // TODO(edisonn): read first page asap, linearized
- // TODO(edisonn): read page N asap, read all file
- // TODO(edisonn): allow corruptions of file (e.g. missing endobj, missing stream length, ...)
- // TODO(edisonn): encryption
-
SkPdfNativeDoc(const char* path);
SkPdfNativeDoc(SkStream* stream);
@@ -83,10 +84,13 @@
void init(const void* bytes, size_t length);
void loadWithoutXRef();
- const unsigned char* readCrossReferenceSection(const unsigned char* xrefStart, const unsigned char* trailerEnd);
- const unsigned char* readTrailer(const unsigned char* trailerStart, const unsigned char* trailerEnd, bool storeCatalog, long* prev, bool skipKeyword);
+ const unsigned char* readCrossReferenceSection(const unsigned char* xrefStart,
+ const unsigned char* trailerEnd);
+ const unsigned char* readTrailer(const unsigned char* trailerStart,
+ const unsigned char* trailerEnd,
+ bool storeCatalog, long* prev, bool skipKeyword);
- // TODO(edisonn): updates not supported right now, generation ignored
+ // TODO(edisonn): pdfs with updates not supported right now, generation ignored.
void addCrossSectionInfo(int id, int generation, int offset, bool isFreed);
static void reset(PublicObjectEntry* obj) {
obj->fObj = NULL;
@@ -99,7 +103,6 @@
void fillPages(SkPdfPageTreeNodeDictionary* tree);
- // private fields
SkPdfAllocator* fAllocator;
SkPdfMapper* fMapper;
const unsigned char* fFileContent;
« no previous file with comments | « experimental/PdfViewer/SkPdfUtils.h ('k') | experimental/PdfViewer/pdfparser/native/SkPdfNativeDoc.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698