Files
@ 69ccf3e0aefe
Branch filter:
Location: Diana/src/drawer/svg.py - annotation
69ccf3e0aefe
1.4 KiB
text/x-python
created config.py and added command line arguments
69ccf3e0aefe 69ccf3e0aefe 69ccf3e0aefe 0137299a43da 0137299a43da 0137299a43da 0137299a43da 0137299a43da b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 0137299a43da 0137299a43da 0137299a43da 0137299a43da 0137299a43da 0137299a43da 0137299a43da b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 69ccf3e0aefe b9d29dcfe3d8 b9d29dcfe3d8 69ccf3e0aefe 0137299a43da b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 0137299a43da 69ccf3e0aefe b9d29dcfe3d8 b9d29dcfe3d8 69ccf3e0aefe 0137299a43da b9d29dcfe3d8 69ccf3e0aefe 0137299a43da b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b104a0ddefed 0137299a43da c705c709565b | from itertools import count
c=28
padding=15
highNumbers=True
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:
extension="svg"
padding=15
highNumbers=True
def __init__(self):
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):
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]
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)
|