| OLD | NEW |
| 1 | 1 |
| 2 #include "SkPdfNativeTokenizer.h" | 2 #include "SkPdfNativeTokenizer.h" |
| 3 #include "SkPdfNativeObject.h" | 3 #include "SkPdfNativeObject.h" |
| 4 #include "SkPdfConfig.h" | 4 #include "SkPdfConfig.h" |
| 5 | 5 |
| 6 #include "SkPdfStreamCommonDictionary_autogen.h" | 6 // TODO(edisonn): mac builder does not find the header ... but from headers is o
k |
| 7 #include "SkPdfImageDictionary_autogen.h" | 7 //#include "SkPdfStreamCommonDictionary_autogen.h" |
| 8 //#include "SkPdfImageDictionary_autogen.h" |
| 9 #include "SkPdfHeaders_autogen.h" |
| 10 |
| 8 | 11 |
| 9 // TODO(edisonn): perf!!! | 12 // TODO(edisonn): perf!!! |
| 10 // there could be 0s between start and end! but not in the needle. | 13 // there could be 0s between start and end! but not in the needle. |
| 11 static char* strrstrk(char* hayStart, char* hayEnd, const char* needle) { | 14 static char* strrstrk(char* hayStart, char* hayEnd, const char* needle) { |
| 12 int needleLen = strlen(needle); | 15 int needleLen = strlen(needle); |
| 13 if ((isPdfWhiteSpaceOrPdfDelimiter(*(hayStart+needleLen)) || (hayStart+needl
eLen == hayEnd)) && | 16 if ((isPdfWhiteSpaceOrPdfDelimiter(*(hayStart+needleLen)) || (hayStart+needl
eLen == hayEnd)) && |
| 14 strncmp(hayStart, needle, needleLen) == 0) { | 17 strncmp(hayStart, needle, needleLen) == 0) { |
| 15 return hayStart; | 18 return hayStart; |
| 16 } | 19 } |
| 17 | 20 |
| (...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 fHistory.push(fCurrent); | 898 fHistory.push(fCurrent); |
| 896 fCurrent = allocBlock(); | 899 fCurrent = allocBlock(); |
| 897 fCurrentUsed = 0; | 900 fCurrentUsed = 0; |
| 898 fSizeInBytes += sizeof(SkPdfNativeObject*); | 901 fSizeInBytes += sizeof(SkPdfNativeObject*); |
| 899 } | 902 } |
| 900 fCurrentUsed++; | 903 fCurrentUsed++; |
| 901 return &fCurrent[fCurrentUsed - 1]; | 904 return &fCurrent[fCurrentUsed - 1]; |
| 902 } | 905 } |
| 903 | 906 |
| 904 // TODO(edisonn): perf: do no copy the buffers, but use them, and mark cache the
result, so there is no need of a second pass | 907 // TODO(edisonn): perf: do no copy the buffers, but use them, and mark cache the
result, so there is no need of a second pass |
| 905 SkPdfNativeTokenizer::SkPdfNativeTokenizer(SkPdfNativeObject* objWithStream, con
st SkPdfMapper* mapper, SkPdfAllocator* allocator, SkPdfNativeDoc* doc) : fDoc(d
oc), fMapper(mapper), fAllocator(allocator), fUncompressedStream(NULL), fUncompr
essedStreamEnd(NULL), fEmpty(false), fHasPutBack(false) { | 908 SkPdfNativeTokenizer::SkPdfNativeTokenizer(SkPdfNativeObject* objWithStream, SkP
dfAllocator* allocator, SkPdfNativeDoc* doc) : fDoc(doc), fAllocator(allocator),
fUncompressedStream(NULL), fUncompressedStreamEnd(NULL), fEmpty(false), fHasPut
Back(false) { |
| 906 const unsigned char* buffer = NULL; | 909 const unsigned char* buffer = NULL; |
| 907 size_t len = 0; | 910 size_t len = 0; |
| 908 objWithStream->GetFilteredStreamRef(&buffer, &len); | 911 objWithStream->GetFilteredStreamRef(&buffer, &len); |
| 909 // TODO(edisonn): hack, find end of object | 912 // TODO(edisonn): hack, find end of object |
| 910 char* endobj = strrstrk((char*)buffer, (char*)buffer + len, "endobj"); | 913 char* endobj = strrstrk((char*)buffer, (char*)buffer + len, "endobj"); |
| 911 if (endobj) { | 914 if (endobj) { |
| 912 len = endobj - (char*)buffer + strlen("endobj"); | 915 len = endobj - (char*)buffer + strlen("endobj"); |
| 913 } | 916 } |
| 914 fUncompressedStreamStart = fUncompressedStream = buffer; | 917 fUncompressedStreamStart = fUncompressedStream = buffer; |
| 915 fUncompressedStreamEnd = fUncompressedStream + len; | 918 fUncompressedStreamEnd = fUncompressedStream + len; |
| 916 } | 919 } |
| 917 | 920 |
| 918 SkPdfNativeTokenizer::SkPdfNativeTokenizer(const unsigned char* buffer, int len,
const SkPdfMapper* mapper, SkPdfAllocator* allocator, SkPdfNativeDoc* doc) : fD
oc(doc), fMapper(mapper), fAllocator(allocator), fEmpty(false), fHasPutBack(fals
e) { | 921 SkPdfNativeTokenizer::SkPdfNativeTokenizer(const unsigned char* buffer, int len,
SkPdfAllocator* allocator, SkPdfNativeDoc* doc) : fDoc(doc), fAllocator(allocat
or), fEmpty(false), fHasPutBack(false) { |
| 919 // TODO(edisonn): hack, find end of object | 922 // TODO(edisonn): hack, find end of object |
| 920 char* endobj = strrstrk((char*)buffer, (char*)buffer + len, "endobj"); | 923 char* endobj = strrstrk((char*)buffer, (char*)buffer + len, "endobj"); |
| 921 if (endobj) { | 924 if (endobj) { |
| 922 len = endobj - (char*)buffer + strlen("endobj"); | 925 len = endobj - (char*)buffer + strlen("endobj"); |
| 923 } | 926 } |
| 924 fUncompressedStreamStart = fUncompressedStream = buffer; | 927 fUncompressedStreamStart = fUncompressedStream = buffer; |
| 925 fUncompressedStreamEnd = fUncompressedStream + len; | 928 fUncompressedStreamEnd = fUncompressedStream + len; |
| 926 } | 929 } |
| 927 | 930 |
| 928 SkPdfNativeTokenizer::~SkPdfNativeTokenizer() { | 931 SkPdfNativeTokenizer::~SkPdfNativeTokenizer() { |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 SkPdfNativeObject* obj = fAllocator->allocObject(); | 1092 SkPdfNativeObject* obj = fAllocator->allocObject(); |
| 1090 fUncompressedStream = nextObject(0, fUncompressedStream, fUncompress
edStreamEnd, obj, fAllocator, fDoc); | 1093 fUncompressedStream = nextObject(0, fUncompressedStream, fUncompress
edStreamEnd, obj, fAllocator, fDoc); |
| 1091 // TODO(edisonn): perf maybe we should not expand abreviation like t
his | 1094 // TODO(edisonn): perf maybe we should not expand abreviation like t
his |
| 1092 inlineImage->set(inlineImageKeyAbbreviationExpand(key), | 1095 inlineImage->set(inlineImageKeyAbbreviationExpand(key), |
| 1093 inlineImageValueAbbreviationExpand(obj)); | 1096 inlineImageValueAbbreviationExpand(obj)); |
| 1094 } | 1097 } |
| 1095 } | 1098 } |
| 1096 // TODO(edisonn): report end of data with inline image without an EI | 1099 // TODO(edisonn): report end of data with inline image without an EI |
| 1097 return inlineImage; | 1100 return inlineImage; |
| 1098 } | 1101 } |
| OLD | NEW |