OLD | NEW |
1 #include "SkNativeParsedPDF.h" | 1 #include "SkNativeParsedPDF.h" |
2 #include "SkPdfNativeTokenizer.h" | 2 #include "SkPdfNativeTokenizer.h" |
3 #include "SkPdfBasics.h" | 3 #include "SkPdfBasics.h" |
4 #include "SkPdfObject.h" | 4 #include "SkPdfObject.h" |
5 | 5 |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include <string.h> | 7 #include <string.h> |
8 #include <sys/types.h> | 8 #include <sys/types.h> |
9 #include <sys/stat.h> | 9 #include <sys/stat.h> |
10 | 10 |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 xrefByteOffset = readTrailer(trailerStart, xrefstartKeywordLine, storeCa
talog); | 96 xrefByteOffset = readTrailer(trailerStart, xrefstartKeywordLine, storeCa
talog); |
97 storeCatalog = false; | 97 storeCatalog = false; |
98 } | 98 } |
99 | 99 |
100 // TODO(edisonn): warn/error expect fObjects[fRefCatalogId].fGeneration == f
RefCatalogGeneration | 100 // TODO(edisonn): warn/error expect fObjects[fRefCatalogId].fGeneration == f
RefCatalogGeneration |
101 // TODO(edisonn): security, verify that SkPdfCatalogDictionary is indeed usi
ng mapper | 101 // TODO(edisonn): security, verify that SkPdfCatalogDictionary is indeed usi
ng mapper |
102 // load catalog | 102 // load catalog |
103 | 103 |
104 if (fRootCatalogRef) { | 104 if (fRootCatalogRef) { |
105 fRootCatalog = (SkPdfCatalogDictionary*)resolveReference(fRootCatalogRef
); | 105 fRootCatalog = (SkPdfCatalogDictionary*)resolveReference(fRootCatalogRef
); |
106 SkPdfPageTreeNodeDictionary* tree = fRootCatalog->Pages(this); | 106 if (fRootCatalog->isDictionary() && fRootCatalog->valid()) { |
| 107 SkPdfPageTreeNodeDictionary* tree = fRootCatalog->Pages(this); |
| 108 if (tree && tree->isDictionary() && tree->valid()) { |
| 109 fillPages(tree); |
| 110 } |
| 111 } |
| 112 } |
107 | 113 |
108 fillPages(tree); | 114 // TODO(edisonn): corrupted pdf, read it from beginning and rebuild (xref, t
railer, or just reall all objects) |
109 } else { | 115 // 0 pages |
110 // TODO(edisonn): corrupted pdf, read it from beginning and rebuild (xre
f, trailer, or just reall all objects) | |
111 // 0 pages | |
112 } | |
113 | 116 |
114 // now actually read all objects if we want, or do it lazyly | 117 // now actually read all objects if we want, or do it lazyly |
115 // and resolve references?... or not ... | 118 // and resolve references?... or not ... |
116 } | 119 } |
117 | 120 |
118 // TODO(edisonn): NYI | 121 // TODO(edisonn): NYI |
119 SkNativeParsedPDF::~SkNativeParsedPDF() { | 122 SkNativeParsedPDF::~SkNativeParsedPDF() { |
120 delete[] fFileContent; | 123 delete[] fFileContent; |
121 delete fAllocator; | 124 delete fAllocator; |
122 } | 125 } |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 } else { | 409 } else { |
407 fObjects[id].fResolvedReference = resolveReference(fObjects[id].
fObj); | 410 fObjects[id].fResolvedReference = resolveReference(fObjects[id].
fObj); |
408 } | 411 } |
409 } | 412 } |
410 | 413 |
411 return fObjects[id].fResolvedReference; | 414 return fObjects[id].fResolvedReference; |
412 } | 415 } |
413 // TODO(edisonn): fix the mess with const, probably we need to remove it pre
tty much everywhere | 416 // TODO(edisonn): fix the mess with const, probably we need to remove it pre
tty much everywhere |
414 return (SkPdfObject*)ref; | 417 return (SkPdfObject*)ref; |
415 } | 418 } |
OLD | NEW |