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 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 token.reset(); | 189 token.reset(); |
190 current = nextObject(0, current, trailerEnd, &token, NULL, NULL); | 190 current = nextObject(0, current, trailerEnd, &token, NULL, NULL); |
191 if (!token.isInteger()) { | 191 if (!token.isInteger()) { |
192 // TODO(edisonn): report/warning | 192 // TODO(edisonn): report/warning |
193 return current; | 193 return current; |
194 } | 194 } |
195 int generation = (int)token.intValue(); | 195 int generation = (int)token.intValue(); |
196 | 196 |
197 token.reset(); | 197 token.reset(); |
198 current = nextObject(0, current, trailerEnd, &token, NULL, NULL); | 198 current = nextObject(0, current, trailerEnd, &token, NULL, NULL); |
199 if (!token.isKeyword() || token.len() != 1 || (*token.c_str() != 'f'
&& *token.c_str() != 'n')) { | 199 if (!token.isKeyword() || token.lenstr() != 1 || (*token.c_str() !=
'f' && *token.c_str() != 'n')) { |
200 // TODO(edisonn): report/warning | 200 // TODO(edisonn): report/warning |
201 return current; | 201 return current; |
202 } | 202 } |
203 | 203 |
204 addCrossSectionInfo(startId + i, generation, offset, *token.c_str()
== 'f'); | 204 addCrossSectionInfo(startId + i, generation, offset, *token.c_str()
== 'f'); |
205 } | 205 } |
206 } | 206 } |
207 // TODO(edisonn): it should never get here? there is no trailer? | 207 // TODO(edisonn): it should never get here? there is no trailer? |
208 return current; | 208 return current; |
209 } | 209 } |
210 | 210 |
211 long SkNativeParsedPDF::readTrailer(const unsigned char* trailerStart, const uns
igned char* trailerEnd, bool storeCatalog) { | 211 long SkNativeParsedPDF::readTrailer(const unsigned char* trailerStart, const uns
igned char* trailerEnd, bool storeCatalog) { |
212 SkPdfObject trailerKeyword; | 212 SkPdfObject trailerKeyword; |
213 // TODO(edisonn): use null allocator, and let it just fail if memory | 213 // TODO(edisonn): use null allocator, and let it just fail if memory |
214 // needs allocated (but no crash)! | 214 // needs allocated (but no crash)! |
215 const unsigned char* current = | 215 const unsigned char* current = |
216 nextObject(0, trailerStart, trailerEnd, &trailerKeyword, NULL, NULL)
; | 216 nextObject(0, trailerStart, trailerEnd, &trailerKeyword, NULL, NULL)
; |
217 | 217 |
218 if (!trailerKeyword.isKeyword() || strlen("trailer") != trailerKeyword.len()
|| | 218 if (!trailerKeyword.isKeyword() || strlen("trailer") != trailerKeyword.lenst
r() || |
219 strncmp(trailerKeyword.c_str(), "trailer", strlen("trailer")) != 0) { | 219 strncmp(trailerKeyword.c_str(), "trailer", strlen("trailer")) != 0) { |
220 // TODO(edisonn): report warning, rebuild trailer from objects. | 220 // TODO(edisonn): report warning, rebuild trailer from objects. |
221 return -1; | 221 return -1; |
222 } | 222 } |
223 | 223 |
224 SkPdfObject token; | 224 SkPdfObject token; |
225 current = nextObject(0, current, trailerEnd, &token, fAllocator, NULL); | 225 current = nextObject(0, current, trailerEnd, &token, fAllocator, NULL); |
226 if (!token.isDictionary()) { | 226 if (!token.isDictionary()) { |
227 return -1; | 227 return -1; |
228 } | 228 } |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 return (SkPdfObject*)ref; | 460 return (SkPdfObject*)ref; |
461 } | 461 } |
462 | 462 |
463 size_t SkNativeParsedPDF::bytesUsed() const { | 463 size_t SkNativeParsedPDF::bytesUsed() const { |
464 return fAllocator->bytesUsed() + | 464 return fAllocator->bytesUsed() + |
465 fContentLength + | 465 fContentLength + |
466 fObjects.count() * sizeof(PublicObjectEntry) + | 466 fObjects.count() * sizeof(PublicObjectEntry) + |
467 fPages.count() * sizeof(SkPdfPageObjectDictionary*) + | 467 fPages.count() * sizeof(SkPdfPageObjectDictionary*) + |
468 sizeof(*this); | 468 sizeof(*this); |
469 } | 469 } |
OLD | NEW |