from .base import Drawer def stone_color(c): if c == "b": return "black" elif c == "w": return "white" else: return c def label_color(c): return stone_color("b" if c == "w" else "w" if c == "b" else c) class Tikz(Drawer): high_numbers = True def render(self, template_name, bgcolor=""): points = [p for (i, p) in sorted(self._index.values(), key=lambda x: x[0])] stones = [p for p in points if p.color and p.label == ""] moves = [p for p in points if p.color and p.label] labels = [p for p in points if not p.color and p.label] params = { "stones": stones, "moves": moves, "labels": labels, "bgcolor": bgcolor, "stone_color": stone_color, "label_color": label_color } return self._env.get_template(template_name).render(params) def save(self, filename, template="templ.tex", bgcolor=""): file = open(filename + ".tikz", 'w') file.write(self.render(template, bgcolor)) file.close() super().save(filename)