Files
@ f669c32706e5
Branch filter:
Location: Diana/src/drawer/svg.py - annotation
f669c32706e5
1.2 KiB
text/x-python
refactoring: much of SourceFile.createDiagram moved to drawer, created drawer.Base class
f669c32706e5 0137299a43da 0137299a43da b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b104a0ddefed b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 f669c32706e5 0137299a43da 0137299a43da 0137299a43da 0137299a43da 0137299a43da f669c32706e5 f669c32706e5 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 f669c32706e5 69ccf3e0aefe 0137299a43da f669c32706e5 b9d29dcfe3d8 b9d29dcfe3d8 b9d29dcfe3d8 b104a0ddefed 0137299a43da f669c32706e5 f669c32706e5 f669c32706e5 f669c32706e5 f669c32706e5 f669c32706e5 f669c32706e5 f669c32706e5 | 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):
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}
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)
|