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

Side by Side Diff: experimental/PdfViewer/spec2def.py

Issue 21125002: pdfviewer: more plumming for soft masks (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « experimental/PdfViewer/pdfparser/native/SkPdfObject.h ('k') | gyp/pdfviewer.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/local/bin/python 1 #!/usr/local/bin/python
2 # coding: utf-8 2 # coding: utf-8
3 3
4 import sys 4 import sys
5 import re 5 import re
6 6
7 # TODO(edisonn): put processed part of file in a new file 7 # TODO(edisonn): put processed part of file in a new file
8 # put unprocessed part, in a new file, so we see what we miss 8 # put unprocessed part, in a new file, so we see what we miss
9 # keep blank lines, and generate a version without the blank lines 9 # keep blank lines, and generate a version without the blank lines
10 10
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 'TABLE 5.16': ['CMapDictionary', 'Additional entries in a CMap dictionary'], 109 'TABLE 5.16': ['CMapDictionary', 'Additional entries in a CMap dictionary'],
110 'TABLE 5.17': ['Type0FontDictionary', 'Entries in a Type 0 font dictionary', 'Fo ntDictionary', {'Subtype': '[datatypes.PdfName(\'Type0\')]'}], 110 'TABLE 5.17': ['Type0FontDictionary', 'Entries in a Type 0 font dictionary', 'Fo ntDictionary', {'Subtype': '[datatypes.PdfName(\'Type0\')]'}],
111 'TABLE 5.18': ['FontDescriptorDictionary', 'Entries common to all font descripto rs', '', {'Type': '[datatypes.PdfName(\'FontDescriptor\')]'}], 111 'TABLE 5.18': ['FontDescriptorDictionary', 'Entries common to all font descripto rs', '', {'Type': '[datatypes.PdfName(\'FontDescriptor\')]'}],
112 'TABLE 5.20': ['CIDFontDescriptorDictionary', 'Additional font descriptor entrie s for CIDFonts'], 112 'TABLE 5.20': ['CIDFontDescriptorDictionary', 'Additional font descriptor entrie s for CIDFonts'],
113 'TABLE 5.23': ['EmbeddedFontStreamDictionary', 'Additional entries in an embedde d font stream dictionary'], 113 'TABLE 5.23': ['EmbeddedFontStreamDictionary', 'Additional entries in an embedde d font stream dictionary'],
114 'TABLE 6.3': ['Type1HalftoneDictionary', 'Entries in a type 1 halftone dictionar y'], 114 'TABLE 6.3': ['Type1HalftoneDictionary', 'Entries in a type 1 halftone dictionar y'],
115 'TABLE 6.4': ['Type6HalftoneDictionary', 'Additional entries specific to a type 6 halftone dictionary'], 115 'TABLE 6.4': ['Type6HalftoneDictionary', 'Additional entries specific to a type 6 halftone dictionary'],
116 'TABLE 6.5': ['Type10HalftoneDictionary', 'Additional entries specific to a type 10 halftone dictionary'], 116 'TABLE 6.5': ['Type10HalftoneDictionary', 'Additional entries specific to a type 10 halftone dictionary'],
117 'TABLE 6.6': ['Type16HalftoneDictionary', 'Additional entries specific to a type 16 halftone dictionary'], 117 'TABLE 6.6': ['Type16HalftoneDictionary', 'Additional entries specific to a type 16 halftone dictionary'],
118 'TABLE 6.7': ['Type5HalftoneDictionary', 'Entries in a type 5 halftone dictionar y'], 118 'TABLE 6.7': ['Type5HalftoneDictionary', 'Entries in a type 5 halftone dictionar y'],
119 'TABLE 7.10': ['SoftMaskDictionary', 'Entries in a soft-mask dictionary'], 119 'TABLE 7.10': ['SoftMaskDictionary', 'Entries in a soft-mask dictionary', '', {' S': '[datatypes.PdfName(\'Alpha\'), datatypes.PdfName(\'Luminosity\')]'}],
120 'TABLE 7.12': ['SoftMaskImageDictionary', 'Additional entry in a soft-mask image dictionary'], 120 'TABLE 7.12': ['SoftMaskImageDictionary', 'Additional entry in a soft-mask image dictionary', 'ImageDictionary', {'Subtype': '[datatypes.PdfName(\'Image\')]', ' ColorSpace': '[datatypes.PdfName(\'DeviceGray\'), datatypes.PdfName(\'Gray\')]'} ],
121 'TABLE 7.13': ['TransparencyGroupDictionary', 'Additional entries specific to a transparency group attributes dictionary'], 121 'TABLE 7.13': ['TransparencyGroupDictionary', 'Additional entries specific to a transparency group attributes dictionary', 'XObjectDictionary', {'S': '[datatype s.PdfName(\'Transparency\')]'}],
122 'TABLE 8.1': ['ViewerPreferencesDictionary', 'Entries in a viewer preferences di ctionary'], 122 'TABLE 8.1': ['ViewerPreferencesDictionary', 'Entries in a viewer preferences di ctionary'],
123 'TABLE 8.3': ['OutlineDictionary', 'Entries in the outline dictionary'], 123 'TABLE 8.3': ['OutlineDictionary', 'Entries in the outline dictionary'],
124 'TABLE 8.4': ['OutlineItemDictionary', 'Entries in an outline item dictionary'], 124 'TABLE 8.4': ['OutlineItemDictionary', 'Entries in an outline item dictionary'],
125 'TABLE 8.6': ['PageLabelDictionary', 'Entries in a page label dictionary'], 125 'TABLE 8.6': ['PageLabelDictionary', 'Entries in a page label dictionary'],
126 'TABLE 8.7': ['ThreadDictionary', 'Entries in a thread dictionary'], 126 'TABLE 8.7': ['ThreadDictionary', 'Entries in a thread dictionary'],
127 'TABLE 8.8': ['BeadDictionary', 'Entries in a bead dictionary'], 127 'TABLE 8.8': ['BeadDictionary', 'Entries in a bead dictionary'],
128 'TABLE 8.9': ['TransitionDictionary', 'Entries in a transition dictionary'], 128 'TABLE 8.9': ['TransitionDictionary', 'Entries in a transition dictionary'],
129 'TABLE 8.10': ['AnnotationDictionary', 'Entries common to all annotation diction aries'], 129 'TABLE 8.10': ['AnnotationDictionary', 'Entries common to all annotation diction aries'],
130 'TABLE 8.12': ['BorderStyleDictionary', 'Entries in a border style dictionary'], 130 'TABLE 8.12': ['BorderStyleDictionary', 'Entries in a border style dictionary'],
131 'TABLE 8.13': ['AppearanceDictionary', 'Entries in an appearance dictionary'], 131 'TABLE 8.13': ['AppearanceDictionary', 'Entries in an appearance dictionary'],
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 'TABLE 9.42': ['BoxStyleDictionary', 'Entries in a box style dictionary'], 215 'TABLE 9.42': ['BoxStyleDictionary', 'Entries in a box style dictionary'],
216 'TABLE 9.43': ['PrinterMarkAnnotationDictionary', 'Additional entries specific t o a printer\'s mark annotation'], 216 'TABLE 9.43': ['PrinterMarkAnnotationDictionary', 'Additional entries specific t o a printer\'s mark annotation'],
217 'TABLE 9.44': ['PrinterMarkFormDictionary', 'Additional entries specific to a pr inter\'s mark form dictionary'], 217 'TABLE 9.44': ['PrinterMarkFormDictionary', 'Additional entries specific to a pr inter\'s mark form dictionary'],
218 'TABLE 9.45': ['SeparationDictionary', 'Entries in a separation dictionary'], 218 'TABLE 9.45': ['SeparationDictionary', 'Entries in a separation dictionary'],
219 'TABLE 9.46': ['PDF_XOutputIntentDictionary', 'Entries in a PDF/X output intent dictionary'], 219 'TABLE 9.46': ['PDF_XOutputIntentDictionary', 'Entries in a PDF/X output intent dictionary'],
220 'TABLE 9.47': ['TrapNetworkAnnotationDictionary', 'Additional entries specific t o a trap network annotation'], 220 'TABLE 9.47': ['TrapNetworkAnnotationDictionary', 'Additional entries specific t o a trap network annotation'],
221 'TABLE 9.48': ['TrapNetworkAppearanceStreamDictionary', 'Additional entries spec ific to a trap network appearance stream'], 221 'TABLE 9.48': ['TrapNetworkAppearanceStreamDictionary', 'Additional entries spec ific to a trap network appearance stream'],
222 'TABLE 9.49': ['OpiVersionDictionary', 'Entry in an OPI version dictionary'], 222 'TABLE 9.49': ['OpiVersionDictionary', 'Entry in an OPI version dictionary'],
223 } 223 }
224 224
225 classTree = {
226 }
227
225 def buildKnownDictionaries(): 228 def buildKnownDictionaries():
226 global tableToClassName 229 global tableToClassName
227 global knownTypes 230 global knownTypes
228 231
229 ret = {} 232 ret = {}
230 for e in tableToClassName: 233 for e in tableToClassName:
231 ret[tableToClassName[e][0]] = '' 234 ret[tableToClassName[e][0]] = ''
232 knownTypes.add(tableToClassName[e][0]) 235 knownTypes.add(tableToClassName[e][0])
233 236
234 return ret 237 return ret
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 ret = ret.replace('\n', '\\n') 293 ret = ret.replace('\n', '\\n')
291 294
292 295
293 return ret 296 return ret
294 297
295 def commitRow(fspecPy): 298 def commitRow(fspecPy):
296 global columnValues 299 global columnValues
297 global emitedDitionaryName 300 global emitedDitionaryName
298 global table 301 global table
299 global tableToClassName 302 global tableToClassName
303 global classTree
304 global tableKey
305
300 306
301 if columnValues == None: 307 if columnValues == None:
302 return 308 return
303 309
304 #print columnValues 310 #print columnValues
305 311
306 lastClosed = columnValues[2].find(')') 312 lastClosed = columnValues[2].find(')')
307 if lastClosed < 0: 313 if lastClosed < 0:
308 print 'ERRRRRRRRRRRRRRROR' 314 print 'ERRRRRRRRRRRRRRROR'
309 print columnValues 315 print columnValues
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 #print emitedDitionaryName 391 #print emitedDitionaryName
386 #else: 392 #else:
387 #print table 393 #print table
388 394
389 #print tableKey 395 #print tableKey
390 #print('\'' + tableKey + '\': [\'' + emitedDitionaryName + '\', \'' + table[ len(tableKey) + 1:] + '\'],') 396 #print('\'' + tableKey + '\': [\'' + emitedDitionaryName + '\', \'' + table[ len(tableKey) + 1:] + '\'],')
391 397
392 emitedDitionaryName = tableToClassName[tableKey][0] 398 emitedDitionaryName = tableToClassName[tableKey][0]
393 comment = fix(tableToClassName[tableKey][1]) 399 comment = fix(tableToClassName[tableKey][1])
394 400
401
395 if len(tableToClassName[tableKey]) >= 3 and tableToClassName[tableKey][2] != '': 402 if len(tableToClassName[tableKey]) >= 3 and tableToClassName[tableKey][2] != '':
396 fspecPy.write(' pdfspec.addClass(\'' + emitedDitionaryName + '\', \'' + t ableToClassName[tableKey][2] + '\', \'' + comment + '\')\\\n') 403 fspecPy.write(' pdfspec.addClass(\'' + emitedDitionaryName + '\', \'' + t ableToClassName[tableKey][2] + '\', \'' + comment + '\')\\\n')
404 classTree[emitedDitionaryName] = [tableToClassName[tableKey][2], {}]
397 else: 405 else:
398 fspecPy.write(' pdfspec.addClass(\'' + emitedDitionaryName + '\', \'Dicti onary\', \'' + comment + '\')\\\n') 406 fspecPy.write(' pdfspec.addClass(\'' + emitedDitionaryName + '\', \'Dicti onary\', \'' + comment + '\')\\\n')
407 classTree[emitedDitionaryName] = ['Dictionary', {}]
399 408
400 if len(tableToClassName[tableKey]) >= 4 and columnValues[0] in tableToClassNam e[tableKey][3]: 409 if len(tableToClassName[tableKey]) >= 4 and columnValues[0] in tableToClassNam e[tableKey][3]:
401 required = True 410 required = True
402 411
403 if required: 412 if required:
404 fspecPy.write(' .required(\'NULL\')\\\n') 413 fspecPy.write(' .required(\'NULL\')\\\n')
405 else: 414 else:
406 fspecPy.write(' .optional()\\\n') 415 fspecPy.write(' .optional()\\\n')
407 416
408 fspecPy.write(' .field(\'' + columnValues[0] + '\')\\\n') 417 fspecPy.write(' .field(\'' + columnValues[0] + '\')\\\n')
409 fspecPy.write(' .name(\'' + columnValues[0] + '\')\\\n') 418 fspecPy.write(' .name(\'' + columnValues[0] + '\')\\\n')
410 fspecPy.write(' .type(\'' + columnValues[1] + '\')\\\n') 419 fspecPy.write(' .type(\'' + columnValues[1] + '\')\\\n')
411 fspecPy.write(' .comment(\'' + columnValues[2] + '\')\\\n') 420 fspecPy.write(' .comment(\'' + columnValues[2] + '\')\\\n')
421
422 classTree[emitedDitionaryName][1][columnValues[0]] = ' .field(\'' + columnValues[0] + '\')\\\n' + \
423 ' .name(\'' + columnValues[0] + '\')\\\n' + \
424 ' .type(\'' + columnValues[1] + '\')\\\n' + \
425 ' .comment(\'\')\\\n'
426
412 427
413 if len(tableToClassName[tableKey]) >= 4 and columnValues[0] in tableToClassNam e[tableKey][3]: 428 if len(tableToClassName[tableKey]) >= 4 and columnValues[0] in tableToClassNam e[tableKey][3]:
414 fspecPy.write(' .must(' + tableToClassName[tableKey][3][columnValue s[0]] + ')\\\n') 429 fspecPy.write(' .must(' + tableToClassName[tableKey][3][columnValue s[0]] + ')\\\n')
415 430
416 fspecPy.write(' .done().done()\\\n') 431 fspecPy.write(' .done().done()\\\n')
417 432
418 433
419 columnValues = None 434 columnValues = None
420 435
421 def newRow(first, second, third): 436 def newRow(first, second, third):
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 if words[i].startswith('(Required'): 469 if words[i].startswith('(Required'):
455 columnWidth[1] = line.find('(Required') - columnWidth[0] 470 columnWidth[1] = line.find('(Required') - columnWidth[0]
456 return True 471 return True
457 472
458 return False 473 return False
459 474
460 475
461 def stopTable(fspecPy): 476 def stopTable(fspecPy):
462 global tableHeaderFound 477 global tableHeaderFound
463 global emitedDitionaryName 478 global emitedDitionaryName
464 479 global tableKey
480 global classTree
481
465 if not inTable(): 482 if not inTable():
466 return 483 return
467 484
468 commitRow(fspecPy) 485 commitRow(fspecPy)
486
487 #print tableKey
488
489 # TODO(edisonn): iterate on all requited key in the def, and if not on the def inition, get definition from parent and export them
490 if len(tableToClassName[tableKey]) >= 4:
491 for field in tableToClassName[tableKey][3]:
492 #print field
493 if not field in classTree[emitedDitionaryName][1]:
494 fieldDef = ''
495 searchKey = classTree[emitedDitionaryName][0]
496 while searchKey != 'Dictionary' and (not field in classTree[searchKey][1 ]):
497 searchKey = classTree[searchKey][0]
498
499 if searchKey != 'Dictionary' and (field in classTree[searchKey][1]):
500 #print tableToClassName[tableKey][3][field]
501 #print classTree[searchKey][1][field]
502 # TODO(edisonns): hack - for required fields, they need to be downgrad ed to only a type
503 classTree[searchKey][1][field] = classTree[searchKey][1][field].replac e(' or array', '')
504 classTree[searchKey][1][field] = classTree[searchKey][1][field].replac e(' or distionary', '')
505 fspecPy.write(' .required(\'NULL\')\\\n')
506 fspecPy.write(classTree[searchKey][1][field])
507 fspecPy.write(' .must(' + tableToClassName[tableKey][3][field ] + ')\\\n')
508 fspecPy.write(' .done().done()\\\n')
509 else:
510 print 'ERROR' + tableKey + '.' + field;
511
469 tableHeaderFound = False 512 tableHeaderFound = False
470 emitedDitionaryName = '' 513 emitedDitionaryName = ''
471 fspecPy.write(' .done()\n') 514 fspecPy.write(' .done()\n')
472 fspecPy.write('\n') 515 fspecPy.write('\n')
473 516
474 517
475 def killTable(): 518 def killTable():
476 return 519 return
477 520
478 def processLineCore(fspecPy, line): 521 def processLineCore(fspecPy, line):
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 605
563 if first == '' and second != '' and second[0] != ' ': 606 if first == '' and second != '' and second[0] != ' ':
564 if acceptType(second): 607 if acceptType(second):
565 appendRow(second, third) 608 appendRow(second, third)
566 return True 609 return True
567 else: 610 else:
568 stopTable(fspecPy) 611 stopTable(fspecPy)
569 return False 612 return False
570 613
571 if first != '' and second != '' and third[0] != '(': 614 if first != '' and second != '' and third[0] != '(':
572 stopTable() 615 stopTable(fspecPy)
573 return False 616 return False
574 617
575 if first == '' and second != '' and second[0] == ' ': 618 if first == '' and second != '' and second[0] == ' ':
576 stopTable(fspecPy) 619 stopTable(fspecPy)
577 return False 620 return False
578 621
579 if first != '' and second != '' and third[0] == '(': 622 if first != '' and second != '' and third[0] == '(':
580 commitRow(fspecPy) 623 commitRow(fspecPy)
581 newRow(first, second, third) 624 newRow(first, second, third)
582 return True 625 return True
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 #TODO(edisonn): build this map 673 #TODO(edisonn): build this map
631 674
632 fspecPy.write(' knowTypes[\'' + tableToClassName[e][0] + '\'] = [\'SkPdf' + tableToClassName[e][0] + '*\', \'(SkPdf' + tableToClassName[e][0] + '*)ret\', d atatypes.CppNull(), \'ret->isDictionary() && ((SkPdf' + tableToClassName[e][0] + '*)ret)->valid()\', \'A_DICTIONARY\']\n') 675 fspecPy.write(' knowTypes[\'' + tableToClassName[e][0] + '\'] = [\'SkPdf' + tableToClassName[e][0] + '*\', \'(SkPdf' + tableToClassName[e][0] + '*)ret\', d atatypes.CppNull(), \'ret->isDictionary() && ((SkPdf' + tableToClassName[e][0] + '*)ret)->valid()\', \'A_DICTIONARY\']\n')
633 fspecPy.write('\n') 676 fspecPy.write('\n')
634 677
635 #print lines 678 #print lines
636 #fnewspec.close() 679 #fnewspec.close()
637 680
638 if '__main__' == __name__: 681 if '__main__' == __name__:
639 sys.exit(generateDef()) 682 sys.exit(generateDef())
OLDNEW
« no previous file with comments | « experimental/PdfViewer/pdfparser/native/SkPdfObject.h ('k') | gyp/pdfviewer.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698