diff --git a/src/drawer/svg.py b/src/drawer/svg.py new file mode 100644 --- /dev/null +++ b/src/drawer/svg.py @@ -0,0 +1,72 @@ +c=28 +padding=15 +highNumbers=True + + +class Svg: + content="" + footer="" + extension="svg" + + padding=15 + gridSize=28 + highNumbers=True + + def __init__(self): + self.content=''' + + + + + \n'''.format(2*self.padding+18*self.gridSize) + self.footer="\n" + + grid=' \n' + + # okraje desky + for i in (0,18): + self.content+=' \n'.format(self.padding, 18*self.gridSize+self.padding, self.gridSize*i+self.padding, self.gridSize*i+self.padding) + self.content+=' \n'.format(self.gridSize*i+self.padding, self.gridSize*i+self.padding, self.padding, 18*self.gridSize+self.padding) + + # mřížka + for i in range(1,18): + self.content+=grid.format(self.padding, 18*self.gridSize+self.padding, c*i+self.padding, c*i+self.padding) + self.content+=grid.format(c*i+self.padding, c*i+self.padding, self.padding, 18*c+self.padding) + + # hvězdy + for i in range(3): + for j in range(3): + self.content+=' \n'.format(padding+3*c+6*i*c, padding+3*c+6*j*c, 2) + + def __str__(self): + return self.content+self.footer + + def drawStone(self,x,y,color): + self.content+=' \n'.format(padding+x*c, padding+y*c, c/2-1, color) + + def getFontSize(self,text): + if len(text)<2: return round(0.7*c) + elif len(text)<3: return round(0.55*c) + else: return round(0.4*c) + + def writeLabel(self,x,y,label,color): + label=str(label) + fontSize=self.getFontSize(label) + self.content+=' {4}\n'.format(padding+x*c, padding+y*c+0.35*fontSize, color, fontSize, label) + + def drawMove(self,x,y,label,color): + labelColor="w" if color=="b" else "b" + + if (not self.highNumbers) and isinstance(label,int) and label%100!=0: label=label%100 # dost neobratná logika + + self.drawStone(x,y,color) + self.writeLabel(x,y,label,labelColor) + + def getContent(self): + return self.content+self.footer