OLD | NEW |
1 | 1 |
2 #include "SkPdfNativeTokenizer.h" | 2 #include "SkPdfNativeTokenizer.h" |
3 #include "SkPdfObject.h" | 3 #include "SkPdfObject.h" |
4 #include "SkPdfConfig.h" | 4 #include "SkPdfConfig.h" |
5 | 5 |
6 #include "SkPdfStreamCommonDictionary_autogen.h" | 6 #include "SkPdfStreamCommonDictionary_autogen.h" |
7 #include "SkPdfImageDictionary_autogen.h" | 7 #include "SkPdfImageDictionary_autogen.h" |
8 | 8 |
9 // TODO(edisonn): perf!!! | 9 // TODO(edisonn): perf!!! |
10 // there could be 0s between start and end! but not in the needle. | 10 // there could be 0s between start and end! but not in the needle. |
(...skipping 14 matching lines...) Expand all Loading... |
25 } | 25 } |
26 hayStart++; | 26 hayStart++; |
27 } | 27 } |
28 return NULL; | 28 return NULL; |
29 } | 29 } |
30 | 30 |
31 #ifdef PDF_TRACE_TOKENIZER | 31 #ifdef PDF_TRACE_TOKENIZER |
32 static void TRACE_INDENT(int level, const char* type) { | 32 static void TRACE_INDENT(int level, const char* type) { |
33 static int id = 0; | 33 static int id = 0; |
34 id++; | 34 id++; |
| 35 #if 0 |
35 if (478613 == id) { | 36 if (478613 == id) { |
36 printf("break;\n"); | 37 printf("break;\n"); |
37 } | 38 } |
| 39 #endif |
38 // all types should have 2 letters, so the text is alligned nicely | 40 // all types should have 2 letters, so the text is alligned nicely |
39 printf("\n%10i %15s: ", id, type); | 41 printf("\n%10i %15s: ", id, type); |
40 for (int i = 0 ; i < level; i++) { | 42 for (int i = 0 ; i < level; i++) { |
41 printf(" "); | 43 printf(" "); |
42 } | 44 } |
43 } | 45 } |
44 | 46 |
45 static void TRACE_COMMENT(char ch) { | 47 static void TRACE_COMMENT(char ch) { |
46 printf("%c", ch); | 48 printf("%c", ch); |
47 } | 49 } |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 // TODO(edisonn): perf/memory: put the variables on the stack, and flush
them on the array only when | 153 // TODO(edisonn): perf/memory: put the variables on the stack, and flush
them on the array only when |
152 // we are sure they are not references! | 154 // we are sure they are not references! |
153 if (newObj->isKeywordReference() && array->size() >= 2 && array->objAtAI
ndex(array->size() - 1)->isInteger() && array->objAtAIndex(array->size() - 2)->i
sInteger()) { | 155 if (newObj->isKeywordReference() && array->size() >= 2 && array->objAtAI
ndex(array->size() - 1)->isInteger() && array->objAtAIndex(array->size() - 2)->i
sInteger()) { |
154 SkPdfObject* gen = array->removeLastInArray(); | 156 SkPdfObject* gen = array->removeLastInArray(); |
155 SkPdfObject* id = array->removeLastInArray(); | 157 SkPdfObject* id = array->removeLastInArray(); |
156 newObj->reset(); | 158 newObj->reset(); |
157 SkPdfObject::makeReference((unsigned int)id->intValue(), (unsigned i
nt)gen->intValue(), newObj); | 159 SkPdfObject::makeReference((unsigned int)id->intValue(), (unsigned i
nt)gen->intValue(), newObj); |
158 } | 160 } |
159 array->appendInArray(newObj); | 161 array->appendInArray(newObj); |
160 } | 162 } |
161 printf("break;\n"); // DO NOT SUBMIT! | |
162 // TODO(edisonn): report not reached, we should never get here | 163 // TODO(edisonn): report not reached, we should never get here |
163 // TODO(edisonn): there might be a bug here, enable an assert and run it on
files | 164 // TODO(edisonn): there might be a bug here, enable an assert and run it on
files |
164 // or it might be that the files were actually corrupted | 165 // or it might be that the files were actually corrupted |
165 return start; | 166 return start; |
166 } | 167 } |
167 | 168 |
168 // When we read strings we will rewrite the string so we will reuse the memory | 169 // When we read strings we will rewrite the string so we will reuse the memory |
169 // when we start to read the string, we already consumed the opened bracket | 170 // when we start to read the string, we already consumed the opened bracket |
170 | 171 |
171 // TODO(edisonn): space: add paramater, taht would report if we need to allocate
new buffer, or we can reuse the one we have | 172 // TODO(edisonn): space: add paramater, taht would report if we need to allocate
new buffer, or we can reuse the one we have |
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 } else { | 948 } else { |
948 SkPdfObject* pobj = fAllocator->allocObject(); | 949 SkPdfObject* pobj = fAllocator->allocObject(); |
949 *pobj = obj; | 950 *pobj = obj; |
950 token->fObject = pobj; | 951 token->fObject = pobj; |
951 token->fType = kObject_TokenType; | 952 token->fType = kObject_TokenType; |
952 } | 953 } |
953 | 954 |
954 #ifdef PDF_TRACE_READ_TOKEN | 955 #ifdef PDF_TRACE_READ_TOKEN |
955 static int read_op = 0; | 956 static int read_op = 0; |
956 read_op++; | 957 read_op++; |
| 958 #if 0 |
957 if (548 == read_op) { | 959 if (548 == read_op) { |
958 printf("break;\n"); | 960 printf("break;\n"); |
959 } | 961 } |
| 962 #endif |
960 printf("%i READ %s %s\n", read_op, token->fType == kKeyword_TokenType ? "Key
word" : "Object", token->fKeyword ? std::string(token->fKeyword, token->fKeyword
Length).c_str() : token->fObject->toString().c_str()); | 963 printf("%i READ %s %s\n", read_op, token->fType == kKeyword_TokenType ? "Key
word" : "Object", token->fKeyword ? std::string(token->fKeyword, token->fKeyword
Length).c_str() : token->fObject->toString().c_str()); |
961 #endif | 964 #endif |
962 | 965 |
963 return true; | 966 return true; |
964 } | 967 } |
965 | 968 |
966 void SkPdfNativeTokenizer::PutBack(PdfToken token) { | 969 void SkPdfNativeTokenizer::PutBack(PdfToken token) { |
967 SkASSERT(!fHasPutBack); | 970 SkASSERT(!fHasPutBack); |
968 fHasPutBack = true; | 971 fHasPutBack = true; |
969 fPutBack = token; | 972 fPutBack = token; |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1084 SkPdfObject* obj = fAllocator->allocObject(); | 1087 SkPdfObject* obj = fAllocator->allocObject(); |
1085 fUncompressedStream = nextObject(0, fUncompressedStream, fUncompress
edStreamEnd, obj, fAllocator, fDoc); | 1088 fUncompressedStream = nextObject(0, fUncompressedStream, fUncompress
edStreamEnd, obj, fAllocator, fDoc); |
1086 // TODO(edisonn): perf maybe we should not expand abreviation like t
his | 1089 // TODO(edisonn): perf maybe we should not expand abreviation like t
his |
1087 inlineImage->set(inlineImageKeyAbbreviationExpand(key), | 1090 inlineImage->set(inlineImageKeyAbbreviationExpand(key), |
1088 inlineImageValueAbbreviationExpand(obj)); | 1091 inlineImageValueAbbreviationExpand(obj)); |
1089 } | 1092 } |
1090 } | 1093 } |
1091 // TODO(edisonn): report end of data with inline image without an EI | 1094 // TODO(edisonn): report end of data with inline image without an EI |
1092 return inlineImage; | 1095 return inlineImage; |
1093 } | 1096 } |
OLD | NEW |