DefaultTable.py revision 3a9fd301808f5a8991ca9ac44028d1ecb22d307f
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
293a9fd301808f5a8991ca9ac44028d1ecb22d307fBehdad Esfahbod	def fromXML(self, name, attrs, content, ttFont):
307842e56b97ce677b83bdab09cda48bc2d89ac75aJust		from fontTools.misc.textTools import readHex
317842e56b97ce677b83bdab09cda48bc2d89ac75aJust		from fontTools import ttLib
32180ace6a5ff1399ec53bc696e8bef7cce6eef39aBehdad Esfahbod		if name != "hexdata":
33cd5aad92f23737ff93a110d5c73d624658a28da8Behdad Esfahbod			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):
400ba7aa7ab5153e6a490425dd0f859cc5947360f4Behdad Esfahbod		if type(self) != type(other): return cmp(type(self), type(other))
410ba7aa7ab5153e6a490425dd0f859cc5947360f4Behdad Esfahbod		if self.__class__ != other.__class__: return cmp(self.__class__, other.__class__)
4296b321c8aea4dc64110d15a541c6f85152ae19cfBehdad Esfahbod
437842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return cmp(self.__dict__, other.__dict__)
447842e56b97ce677b83bdab09cda48bc2d89ac75aJust
45