Files
@ 3207d998d598
Branch filter:
Location: Diana/src/diana/drawer/base.py - annotation
3207d998d598
1.5 KiB
text/x-python
reintroduced tikz output format
616c96178973 616c96178973 616c96178973 686166c7d5bc 616c96178973 616c96178973 616c96178973 686166c7d5bc 686166c7d5bc 686166c7d5bc 686166c7d5bc 686166c7d5bc 616c96178973 616c96178973 686166c7d5bc 616c96178973 616c96178973 afabea7d0e61 d57d0d4ede15 616c96178973 686166c7d5bc 686166c7d5bc 686166c7d5bc 616c96178973 686166c7d5bc d57d0d4ede15 616c96178973 d57d0d4ede15 d57d0d4ede15 d57d0d4ede15 686166c7d5bc 686166c7d5bc 616c96178973 d57d0d4ede15 686166c7d5bc d57d0d4ede15 616c96178973 d57d0d4ede15 d57d0d4ede15 686166c7d5bc 616c96178973 686166c7d5bc d57d0d4ede15 616c96178973 686166c7d5bc 616c96178973 686166c7d5bc 686166c7d5bc 616c96178973 616c96178973 d57d0d4ede15 d57d0d4ede15 616c96178973 686166c7d5bc d57d0d4ede15 686166c7d5bc 616c96178973 | import os
from itertools import count
from jinja2 import Environment, FileSystemLoader
class DiagramPoint:
def __init__(self, x, y, color="", label=""):
self.x = x
self.y = y
self.color = color
self.label = label
def __repr__(self):
return 'DiagramPoint({0},{1},"{2}","{3}")'.format(self.x, self.y, self.color, self.label)
class Drawer:
high_numbers = True
def __init__(self, start=0):
self.overlays = []
self._letter = "a"
self._index = dict()
self._index_gen = count(start)
cur_dir = os.path.dirname(__file__)
template_dir = os.path.join(cur_dir, "..", "templ")
self._env = Environment(loader=FileSystemLoader(template_dir))
self._env.trim_blocks = True
self._env.lstrip_blocks = True
def add_stone(self, x, y, color):
assert (x, y) not in self._index
self._index[(x, y)] = (next(self._index_gen), DiagramPoint(x, y, color))
def add_move(self, x, y, color, label):
if (not self.high_numbers) and isinstance(label, int) and label%100 != 0:
label %= 100
if (x, y) not in self._index:
self._index[(x, y)] = (next(self._index_gen), DiagramPoint(x, y, color, label))
else:
(_, point) = self._index[(x, y)]
if not point.label:
point.label = self._letter
self._letter = chr(ord(self._letter)+1)
self.overlays.append((label, point.label))
def add_label(self, x, y, label):
self._index[(x, y)] = (next(self._index_gen), DiagramPoint(x, y, "", label))
def save(self, filename):
notes = open(filename+".txt", 'w')
notes.write("\n".join("{0} = {1}".format(a, b) for (a, b) in self.overlays))
notes.close()
|