diff --git a/src/drawer/svg.py b/src/drawer/svg.py --- a/src/drawer/svg.py +++ b/src/drawer/svg.py @@ -1,9 +1,4 @@ -from itertools import count - - -c=28 -padding=15 -highNumbers=True +from .base import Base def adjustFont(base,text): @@ -24,38 +19,31 @@ class DiagramPoint: return 'DiagramPoint({0},{1},"{2}","{3}")'.format(self.x,self.y,self.color,self.label) -class Svg: +class Svg(Base): extension="svg" padding=15 highNumbers=True - def __init__(self): + def __init__(self,start=0): + super().__init__(start) self.boardSize=480 self.padding=30 - self._index=dict() - self._indexGen=count() - - def addStone(self,x,y,color): - self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,color)) - - def addMove(self,x,y,color,label): - if (not self.highNumbers) and isinstance(label,int) and label%100!=0: - label%=100 - - self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,color,label)) - - def addLabel(self,x,y,label): - self._index[(x,y)]=(next(self._indexGen),DiagramPoint(x,y,"",label)) - - def render(self, template): + def render(self, templateName): 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 not p.label] + 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} - return template.render(params) + return self._env.get_template(templateName).render(params) + + def save(self,filename,template="templ.svg"): + file=open(filename+".svg",'w') + file.write(self.render(template)) + file.close() + + super().save(filename)