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 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 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)