]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blob - QRScanner/mobile/jni/thirdparty/freetype/src/tools/docmaker/formatter.py
Add MuPDF native source codes
[hornmich/skoda-qr-demo.git] / QRScanner / mobile / jni / thirdparty / freetype / src / tools / docmaker / formatter.py
1 #  Formatter (c) 2002, 2004, 2007, 2008 David Turner <david@freetype.org>
2 #
3
4 from sources import *
5 from content import *
6 from utils   import *
7
8 # This is the base Formatter class.  Its purpose is to convert
9 # a content processor's data into specific documents (i.e., table of
10 # contents, global index, and individual API reference indices).
11 #
12 # You need to sub-class it to output anything sensible.  For example,
13 # the file tohtml.py contains the definition of the HtmlFormatter sub-class
14 # used to output -- you guessed it -- HTML.
15 #
16
17 class  Formatter:
18
19     def  __init__( self, processor ):
20         self.processor   = processor
21         self.identifiers = {}
22         self.chapters    = processor.chapters
23         self.sections    = processor.sections.values()
24         self.block_index = []
25
26         # store all blocks in a dictionary
27         self.blocks = []
28         for section in self.sections:
29             for block in section.blocks.values():
30                 self.add_identifier( block.name, block )
31
32                 # add enumeration values to the index, since this is useful
33                 for markup in block.markups:
34                     if markup.tag == 'values':
35                         for field in markup.fields:
36                             self.add_identifier( field.name, block )
37
38         self.block_index = self.identifiers.keys()
39         self.block_index.sort( index_sort )
40
41     def  add_identifier( self, name, block ):
42         if self.identifiers.has_key( name ):
43             # duplicate name!
44             sys.stderr.write(                                           \
45                "WARNING: duplicate definition for '" + name + "' in " + \
46                block.location() + ", previous definition in " +         \
47                self.identifiers[name].location() + "\n" )
48         else:
49             self.identifiers[name] = block
50
51     #
52     #  Formatting the table of contents
53     #
54     def  toc_enter( self ):
55         pass
56
57     def  toc_chapter_enter( self, chapter ):
58         pass
59
60     def  toc_section_enter( self, section ):
61         pass
62
63     def  toc_section_exit( self, section ):
64         pass
65
66     def  toc_chapter_exit( self, chapter ):
67         pass
68
69     def  toc_index( self, index_filename ):
70         pass
71
72     def  toc_exit( self ):
73         pass
74
75     def  toc_dump( self, toc_filename = None, index_filename = None ):
76         output = None
77         if toc_filename:
78             output = open_output( toc_filename )
79
80         self.toc_enter()
81
82         for chap in self.processor.chapters:
83
84             self.toc_chapter_enter( chap )
85
86             for section in chap.sections:
87                 self.toc_section_enter( section )
88                 self.toc_section_exit( section )
89
90             self.toc_chapter_exit( chap )
91
92         self.toc_index( index_filename )
93
94         self.toc_exit()
95
96         if output:
97             close_output( output )
98
99     #
100     #  Formatting the index
101     #
102     def  index_enter( self ):
103         pass
104
105     def  index_name_enter( self, name ):
106         pass
107
108     def  index_name_exit( self, name ):
109         pass
110
111     def  index_exit( self ):
112         pass
113
114     def  index_dump( self, index_filename = None ):
115         output = None
116         if index_filename:
117             output = open_output( index_filename )
118
119         self.index_enter()
120
121         for name in self.block_index:
122             self.index_name_enter( name )
123             self.index_name_exit( name )
124
125         self.index_exit()
126
127         if output:
128             close_output( output )
129
130     #
131     #  Formatting a section
132     #
133     def  section_enter( self, section ):
134         pass
135
136     def  block_enter( self, block ):
137         pass
138
139     def  markup_enter( self, markup, block = None ):
140         pass
141
142     def  field_enter( self, field, markup = None, block = None ):
143         pass
144
145     def  field_exit( self, field, markup = None, block = None ):
146         pass
147
148     def  markup_exit( self, markup, block = None ):
149         pass
150
151     def  block_exit( self, block ):
152         pass
153
154     def  section_exit( self, section ):
155         pass
156
157     def  section_dump( self, section, section_filename = None ):
158         output = None
159         if section_filename:
160             output = open_output( section_filename )
161
162         self.section_enter( section )
163
164         for name in section.block_names:
165             block = self.identifiers[name]
166             self.block_enter( block )
167
168             for markup in block.markups[1:]:   # always ignore first markup!
169                 self.markup_enter( markup, block )
170
171                 for field in markup.fields:
172                     self.field_enter( field, markup, block )
173                     self.field_exit( field, markup, block )
174
175                 self.markup_exit( markup, block )
176
177             self.block_exit( block )
178
179         self.section_exit( section )
180
181         if output:
182             close_output( output )
183
184     def  section_dump_all( self ):
185         for section in self.sections:
186             self.section_dump( section )
187
188 # eof