from .base import Base
def adjustFont(base,text):
text = str(text)
if len(text) < 2:
return round(0.7*base)
elif len(text) < 3:
return round(0.55*base)
else:
return round(0.4*base)
class Svg(Base):
extension = "svg"
padding = 15
highNumbers = True
def __init__(self, start=0):
super().__init__(start)
self.boardSize = 480
self.padding = 30
def render(self, templateName, 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 = {
"boardSize": self.boardSize, "padding": self.padding, "stones": stones, "moves": moves,
"labels": labels, "adjustFont": adjustFont, "bgcolor": bgcolor}
return self._env.get_template(templateName).render(params)
def save(self, filename, template="templ.svg", bgcolor=""):
file = open(filename+".svg", 'w')
file.write(self.render(template, bgcolor))
file.close()
super().save(filename)