DefaultTable.py revision 81acddadbd0384e105becc1eac292e50e21084a5
132c10eecffb4923e0721c395e4b80fb732543f18Behdad Esfahbodfrom __future__ import print_function, division
27ed91eca1eaa96b79eae780778e89bb9ec44c1eeBehdad Esfahbodfrom fontTools.misc.py23 import *
37842e56b97ce677b83bdab09cda48bc2d89ac75aJust
4e388db566b9ba42669c7e353db4293cf27bc2a5bBehdad Esfahbodclass DefaultTable(object):
57842e56b97ce677b83bdab09cda48bc2d89ac75aJust
67842e56b97ce677b83bdab09cda48bc2d89ac75aJust	dependencies = []
77842e56b97ce677b83bdab09cda48bc2d89ac75aJust
87842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def __init__(self, tag):
9960280bbd6277b56be45595a050a720a49fd5917Behdad Esfahbod		self.tableTag = Tag(tag)
107842e56b97ce677b83bdab09cda48bc2d89ac75aJust
117842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def decompile(self, data, ttFont):
127842e56b97ce677b83bdab09cda48bc2d89ac75aJust		self.data = data
137842e56b97ce677b83bdab09cda48bc2d89ac75aJust
147842e56b97ce677b83bdab09cda48bc2d89ac75aJust	def compile(self, ttFont):
157842e56b97ce677b83bdab09cda48bc2d89ac75aJust		return self.data
167842e56b97ce677b83bdab09cda48bc2d89ac75aJust
1781acddadbd0384e105becc1eac292e50e21084a5Behdad Esfahbod	def toXML(self, writer, ttFont, progress=None):
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
39b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod	def __eq__(self, other):
40b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod		if type(self) != type(other):
41b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod			raise TypeError("unordered types %s() < %s()", type(self), type(other))
42b7fd2e19138b177403689bdd6989cfd2402aa2b3Behdad Esfahbod		return self.__dict__ == other.__dict__
43