some progress bar support
git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@293 4cde692c-a291-49d1-8350-778aa11640f8
diff --git a/Lib/fontTools/cffLib.py b/Lib/fontTools/cffLib.py
index b09a863..618090c 100644
--- a/Lib/fontTools/cffLib.py
+++ b/Lib/fontTools/cffLib.py
@@ -1,7 +1,7 @@
"""cffLib.py -- read/write tools for Adobe CFF fonts."""
#
-# $Id: cffLib.py,v 1.25 2002-05-24 11:55:37 jvr Exp $
+# $Id: cffLib.py,v 1.26 2002-07-23 16:42:11 jvr Exp $
#
import struct, sstruct
@@ -463,6 +463,9 @@
def toXML(self, xmlWriter, progress):
names = self.keys()
names.sort()
+ i = 0
+ step = 10
+ numGlyphs = len(names)
for name in names:
charStr, fdSelect = self.getItemAndSelector(name)
if charStr.needsDecompilation():
@@ -478,6 +481,10 @@
charStr.toXML(xmlWriter)
xmlWriter.endtag("CharString")
xmlWriter.newline()
+ if not i % step and progress is not None:
+ progress.setLabel("Dumping 'CFF ' table... (%s)" % name)
+ progress.increment(step / float(numGlyphs))
+ i = i + 1
def fromXML(self, (name, attrs, content)):
for element in content:
@@ -557,7 +564,7 @@
return value
def write(self, parent, value):
return value
- def xmlWrite(self, xmlWriter, name, value):
+ def xmlWrite(self, xmlWriter, name, value, progress):
xmlWriter.simpletag(name, value=value)
xmlWriter.newline()
def xmlRead(self, (name, attrs, content), parent):
@@ -575,7 +582,7 @@
return parseNum(attrs["value"])
class ArrayConverter(SimpleConverter):
- def xmlWrite(self, xmlWriter, name, value):
+ def xmlWrite(self, xmlWriter, name, value, progress):
value = map(str, value)
xmlWriter.simpletag(name, value=" ".join(value))
xmlWriter.newline()
@@ -584,10 +591,10 @@
return map(parseNum, values)
class TableConverter(SimpleConverter):
- def xmlWrite(self, xmlWriter, name, value):
+ def xmlWrite(self, xmlWriter, name, value, progress):
xmlWriter.begintag(name)
xmlWriter.newline()
- value.toXML(xmlWriter, None)
+ value.toXML(xmlWriter, progress)
xmlWriter.endtag(name)
xmlWriter.newline()
def xmlRead(self, (name, attrs, content), parent):
@@ -682,7 +689,7 @@
return charset
def write(self, parent, value):
return 0 # dummy value
- def xmlWrite(self, xmlWriter, name, value):
+ def xmlWrite(self, xmlWriter, name, value, progress):
# XXX only write charset when not in OT/TTX context, where we
# dump charset as a separate "GlyphOrder" table.
##xmlWriter.simpletag("charset")
@@ -816,12 +823,12 @@
else:
assert 0, "unsupported FDSelect format: %s" % format
return fdSelect
- def xmlWrite(self, xmlWriter, name, value):
+ def xmlWrite(self, xmlWriter, name, value, progress):
pass
class ROSConverter(SimpleConverter):
- def xmlWrite(self, xmlWriter, name, value):
+ def xmlWrite(self, xmlWriter, name, value, progress):
registry, order, supplement = value
xmlWriter.simpletag(name, [('Registry', registry), ('Order', order),
('Supplement', supplement)])
@@ -1079,7 +1086,7 @@
if value is None:
continue
conv = self.converters[name]
- conv.xmlWrite(xmlWriter, name, value)
+ conv.xmlWrite(xmlWriter, name, value, progress)
def fromXML(self, (name, attrs, content)):
conv = self.converters[name]
@@ -1112,7 +1119,7 @@
def toXML(self, xmlWriter, progress):
if hasattr(self, "CharStrings"):
- self.decompileAllCharStrings()
+ self.decompileAllCharStrings(progress)
if not hasattr(self, "ROS") or not hasattr(self, "CharStrings"):
# these values have default values, but I only want them to show up
# in CID fonts.
@@ -1120,10 +1127,14 @@
'CIDCount']
BaseDict.toXML(self, xmlWriter, progress)
- def decompileAllCharStrings(self):
+ def decompileAllCharStrings(self, progress):
# XXX only when doing ttdump -i?
+ i = 0
for charString in self.CharStrings.values():
charString.decompile()
+ if not i % 30 and progress:
+ progress.increment(0) # update
+ i = i + 1
class PrivateDict(BaseDict):