DefaultTable.py revision f8fd4777d273836a1222b72f6761cb6fdf9ec87a
17842e56b97ce677b83bdab09cda48bc2d89ac75aJustimport string
27842e56b97ce677b83bdab09cda48bc2d89ac75aJustimport sys
37842e56b97ce677b83bdab09cda48bc2d89ac75aJust
47842e56b97ce677b83bdab09cda48bc2d89ac75aJustclass DefaultTable:
57842e56b97ce677b83bdab09cda48bc2d89ac75aJust
67842e56b97ce677b83bdab09cda48bc2d89ac75aJust	dependencies = []
77842e56b97ce677b83bdab09cda48bc2d89ac75aJust
87842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def __init__(self, tag):
97842e56b97ce677b83bdab09cda48bc2d89ac75aJust		self.tableTag = tag
107842e56b97ce677b83bdab09cda48bc2d89ac75aJust
117842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def decompile(self, data, ttFont):
127842e56b97ce677b83bdab09cda48bc2d89ac75aJust		self.data = data
137842e56b97ce677b83bdab09cda48bc2d89ac75aJust
147842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def compile(self, ttFont):
157842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return self.data
167842e56b97ce677b83bdab09cda48bc2d89ac75aJust
177842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def toXML(self, writer, ttFont):
18f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust		if hasattr(self, "ERROR"):
19f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.comment("An error occurred during the decompilation of this table")
20f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.newline()
21f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.comment(self.ERROR)
22f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust			writer.newline()
237842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.begintag("hexdata")
247842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.newline()
257842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.dumphex(self.compile(ttFont))
267842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.endtag("hexdata")
277842e56b97ce677b83bdab09cda48bc2d89ac75aJust		writer.newline()
287842e56b97ce677b83bdab09cda48bc2d89ac75aJust
297842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def fromXML(self, (name, attrs, content), ttFont):
307842e56b97ce677b83bdab09cda48bc2d89ac75aJust		from fontTools.misc.textTools import readHex
317842e56b97ce677b83bdab09cda48bc2d89ac75aJust		from fontTools import ttLib
327842e56b97ce677b83bdab09cda48bc2d89ac75aJust		if name <> "hexdata":
337842e56b97ce677b83bdab09cda48bc2d89ac75aJust			raise ttLib.TTLibError, "can't handle '%s' element" % name
347842e56b97ce677b83bdab09cda48bc2d89ac75aJust		self.decompile(readHex(content), ttFont)
357842e56b97ce677b83bdab09cda48bc2d89ac75aJust
367842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def __repr__(self):
377842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return "<'%s' table at %x>" % (self.tableTag, id(self))
387842e56b97ce677b83bdab09cda48bc2d89ac75aJust
397842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def __cmp__(self, other):
407842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return cmp(self.__dict__, other.__dict__)
417842e56b97ce677b83bdab09cda48bc2d89ac75aJust
42