| Index: experimental/PdfViewer/generate_code.py
|
| ===================================================================
|
| --- experimental/PdfViewer/generate_code.py (revision 9735)
|
| +++ experimental/PdfViewer/generate_code.py (working copy)
|
| @@ -3,13 +3,13 @@
|
| import sys
|
|
|
| import datatypes
|
| -import pdfspec_autogen
|
| +from autogen.pdfspec_autogen import *
|
|
|
| knowTypes = {
|
| '(any)': ['SkPdfObject*', 'ObjectFromDictionary', datatypes.CppNull(), 'true'],
|
| '(undefined)': ['SkPdfObject*', 'ObjectFromDictionary', datatypes.CppNull(), 'true'],
|
| '(various)': ['SkPdfObject*', 'ObjectFromDictionary', datatypes.CppNull(), 'true'],
|
| -'array': ['SkPdfArray', 'ArrayFromDictionary', datatypes.PdfArrayNone(), 'ret->podofo()->GetDataType() == ePdfDataType_Array'],
|
| +'array': ['SkPdfArray*', 'ArrayFromDictionary', datatypes.CppNull(), 'ret->podofo()->GetDataType() == ePdfDataType_Array'],
|
| 'boolean': ['bool', 'BoolFromDictionary', datatypes.PdfBoolean('false'), 'ret->podofo()->GetDataType() == ePdfDataType_Bool'],
|
| 'date': ['SkPdfDate', 'DateFromDictionary', datatypes.PdfDateNever(), 'ret->podofo()->GetDataType() == ePdfDataType_Array'],
|
| 'dictionary': ['SkPdfDictionary*', 'DictionaryFromDictionary', datatypes.CppNull(), 'ret->podofo()->GetDataType() == ePdfDataType_Dictionary'],
|
| @@ -19,11 +19,12 @@
|
| 'name': ['std::string', 'NameFromDictionary', datatypes.PdfString('""'), 'ret->podofo()->GetDataType() == ePdfDataType_Name'],
|
| 'tree': ['SkPdfTree*', 'TreeFromDictionary', datatypes.CppNull(), 'ret->podofo()->GetDataType() == ePdfDataType_Reference'],
|
| 'number': ['double', 'DoubleFromDictionary', datatypes.PdfNumber(0), 'ret->podofo()->GetDataType() == ePdfDataType_Real || ret->podofo()->GetDataType() == ePdfDataType_Number'],
|
| -'rectangle': ['SkRect', 'SkRectFromDictionary', datatypes.PdfEmptyRect(), 'ret->podofo()->GetDataType() == ePdfDataType_Array'],
|
| +'rectangle': ['SkRect*', 'SkRectFromDictionary', datatypes.CppNull(), 'ret->podofo()->GetDataType() == ePdfDataType_Array && ret->podofo()->GetArray().GetLength() == 4'],
|
| 'stream': ['SkPdfStream*', 'StreamFromDictionary', datatypes.CppNull(), 'ret->podofo()->HasStream()'],
|
| 'string': ['std::string', 'StringFromDictionary', datatypes.PdfString('""'), 'ret->podofo()->GetDataType() == ePdfDataType_String || ret->podofo()->GetDataType() == ePdfDataType_HexString'],
|
| 'text': ['std::string', 'StringFromDictionary', datatypes.PdfString('""'), 'ret->podofo()->GetDataType() == ePdfDataType_String || ret->podofo()->GetDataType() == ePdfDataType_HexString'],
|
| 'text string': ['std::string', 'StringFromDictionary', datatypes.PdfString('""'), 'ret->podofo()->GetDataType() == ePdfDataType_String || ret->podofo()->GetDataType() == ePdfDataType_HexString'],
|
| +'matrix': ['SkMatrix*', 'SkMatrixFromDictionary', datatypes.CppNull(), 'ret->podofo()->GetDataType() == ePdfDataType_Array && ret->podofo()->GetArray().GetLength() == 4'],
|
| }
|
|
|
|
|
| @@ -289,6 +290,7 @@
|
| fileClass.write('#define __DEFINED__SkPdf' + cls.fName + '\n')
|
| fileClass.write('\n')
|
|
|
| + fileClass.write('#include "SkPdfUtils.h"\n')
|
| fileClass.write('#include "SkPdfEnums_autogen.h"\n')
|
| fileClass.write('#include "SkPdfArray_autogen.h"\n')
|
| if cls.fBase != '':
|
| @@ -327,13 +329,18 @@
|
| fileClass.write('\n')
|
| fileClass.write('public:\n')
|
| fileClass.write(' SkPdf' + cls.fName + '(const PdfMemDocument* podofoDoc = NULL, const PdfObject* podofoObj = NULL) : fPodofoDoc(podofoDoc), fPodofoObj(podofoObj) {}\n')
|
| + fileClass.write(' SkPdf' + cls.fName + '(const SkPdf' + cls.fName + '& from) : fPodofoDoc(from.fPodofoDoc), fPodofoObj(from.fPodofoObj) {}\n')
|
| + fileClass.write('\n')
|
| fileClass.write(' const PdfMemDocument* doc() const { return fPodofoDoc;}\n')
|
| fileClass.write(' const PdfObject* podofo() const { return fPodofoObj;}\n')
|
| else:
|
| fileClass.write('public:\n')
|
| fileClass.write(' SkPdf' + cls.fName + '(const PdfMemDocument* podofoDoc = NULL, const PdfObject* podofoObj = NULL) : SkPdf' + cls.fBase + '(podofoDoc, podofoObj) {}\n')
|
| fileClass.write('\n')
|
| + fileClass.write(' SkPdf' + cls.fName + '(const SkPdf' + cls.fName + '& from) : SkPdf' + cls.fBase + '(from.fPodofoDoc, from.fPodofoObj) {}\n')
|
| + fileClass.write('\n')
|
|
|
| +
|
| #check required fieds, also, there should be an internal_valid() manually wrote for complex
|
| # situations
|
| # right now valid return true
|
| @@ -497,6 +504,7 @@
|
|
|
| def generateCode():
|
| global fileHeaders
|
| + global knowTypes
|
|
|
| fileHeaders = open('SkPdfHeaders_autogen.h', 'w')
|
| fileHeaders.write('#ifndef __DEFINED__SkPdfHeaders\n')
|
| @@ -535,8 +543,8 @@
|
| .carbonCopyPublic('const std::string& value() const {return fPodofoObj->GetString().GetStringUtf8();}')
|
|
|
| manager.addClass('Dictionary').check('podofoObj.GetDataType() == ePdfDataType_Dictionary')\
|
| - .carbonCopyPublic('const SkPdfObject get(const char* dictionaryKeyName) const {return SkPdfObject(fPodofoDoc, resolveReferenceObject(fPodofoDoc, fPodofoObj->GetDictionary().GetKey(PdfName(dictionaryKeyName))));}')\
|
| - .carbonCopyPublic('SkPdfObject get(const char* dictionaryKeyName) {return SkPdfObject(fPodofoDoc, resolveReferenceObject(fPodofoDoc, fPodofoObj->GetDictionary().GetKey(PdfName(dictionaryKeyName))));}')\
|
| + .carbonCopyPublic('SkPdfObject* get(const char* dictionaryKeyName) const {return new SkPdfObject(fPodofoDoc, resolveReferenceObject(fPodofoDoc, fPodofoObj->GetDictionary().GetKey(PdfName(dictionaryKeyName))));}')\
|
| + .carbonCopyPublic('SkPdfObject* get(const char* dictionaryKeyName) {return new SkPdfObject(fPodofoDoc, resolveReferenceObject(fPodofoDoc, fPodofoObj->GetDictionary().GetKey(PdfName(dictionaryKeyName))));}')\
|
|
|
| manager.addClass('Stream') # attached to a dictionary in podofo
|
|
|
| @@ -555,7 +563,9 @@
|
| .must([datatypes.PdfName('TrueType')])\
|
| .done().done()\
|
|
|
| - pdfspec_autogen.buildPdfSpec(manager)
|
| +
|
| + addDictionaryTypesTo(knowTypes)
|
| + buildPdfSpec(manager)
|
|
|
| manager.addClass('MultiMasterFontDictionary', 'Type1FontDictionary')\
|
| .required('NULL')\
|
|
|