Makeschematic.py: Difference between revisions
From OpenWetWare
Jump to navigationJump to search
No edit summary |
posted an older version last time |
||
| Line 53: | Line 53: | ||
def maked( | def maked(inf, outf): | ||
pygame.init() | pygame.init() | ||
| Line 105: | Line 105: | ||
oligocolor = 0,0,0 | oligocolor = 0,0,0 | ||
for lin in open( | for lin in open(inf, 'r'): | ||
haha = num.findall(lin) | haha = num.findall(lin) | ||
haha[0] = int(haha[0]) | haha[0] = int(haha[0]) | ||
| Line 145: | Line 145: | ||
### | ### | ||
pygame.image.save(screen, | pygame.image.save(screen, outf) | ||
pygame.quit() | pygame.quit() | ||
| Line 151: | Line 151: | ||
</pre> | </pre> | ||
Latest revision as of 00:04, 22 July 2006
import sys, pygame, re
from pygame.draw import line
#globals
unitlength = 20
def getcolend(acol, arrow):
if arrow%2 == 0:
return 62 + acol*4*unitlength+unitlength/2
else:
return 62 + acol*4*unitlength+unitlength*7/2
def getrowloc(arow):
if arow%2 == 0:
return 75+2*unitlength*arow+unitlength/2
else:
return 75+2*unitlength*arow-unitlength/2
def drawat(x,y,z, screener, cola1): #draw from (x,y) to (x,z)
yc = getrowloc(x)
if y < z:
xca = 62+4*unitlength*y+unitlength/2
xcb = 62+4*unitlength*z+7*unitlength/2
line(screener, cola1, (xca, yc), (xcb, yc),1)
else:
xca = 62+4*unitlength*z+unitlength/2
xcb = 62+4*unitlength*y+7*unitlength/2
line(screener, cola1, (xca, yc), (xcb, yc),1)
def drawup(col, row1, row2, screener, oliga, cola2,fonz): #draw from (y,x) to (z,x)
yc1 = getrowloc(row1)
yc2 = getrowloc(row2)
xc = getcolend(col, row1)
line(screener, cola2, (xc, yc1), (xc, yc2),1)
if col%2 == 0:
xc = xc-10
screener.blit(fonz.render(str(oliga),1,cola2),(xc,yc1))
screener.blit(fonz.render(str(oliga),1,cola2),(xc,yc2))
drawat(row1, col, col, screener, cola2) #possibly draws over previously drawn segments
drawat(row2, col, col, screener, cola2)
def maked(inf, outf):
pygame.init()
font18=pygame.font.Font("arial.TTF",18)
font12=pygame.font.Font("arial.TTF",12)
black = 0, 0, 0
white = 250, 250, 250
size = width, height = 1100, 3000
screen = pygame.display.set_mode(size)
screen.fill(white)
#numrows should be even for now
numrows = 72
for x in range(11):
line(screen, (175,175,175), (62+4*unitlength*(x+1), 0), (62+4*unitlength*(x+1), 3000), 1)
for x in range(12):
screen.blit(font18.render(str(x),1,black),(62+unitlength*(4*x+2)-5,32))
#rects for making arcs
arcthelad = pygame.Rect(0, 0, 2*unitlength, 2*unitlength)
arcthelad2= pygame.Rect(0, 0, 2*unitlength, 2*unitlength)
for x in range(numrows/2):
arcthelad.left = 62+(12*4-1)*unitlength
arcthelad.top = 75+4*unitlength*x
screen.blit(font18.render(str(2*x),1,black),(31,75+unitlength*4*x-9))
line(screen, (0,0,0), (62, 75+unitlength*4*x), (62+12*4*unitlength, 75+4*unitlength*x),1)
pygame.draw.arc(screen, (250,0,0), arcthelad, -1.57, 1.57, 1)
screen.blit(font18.render(str(2*x+1),1,black),(31,75+(4*x+2)*unitlength-9))
arcthelad2.left = 62-unitlength
arcthelad2.top = 75+(4*x+2)*unitlength
line(screen, (0,0,0), (62+12*4*unitlength, 75+(4*x+2)*unitlength), (62, 75+(4*x+2)*unitlength),1)
pygame.draw.arc(screen, (250,0,0), arcthelad2, 1.57, 4.71, 1)
num = re.compile('\d+')
oligo = -1
row = 0
col = 0
xc = 0
yc = 0
oligocolor = 0,0,0
for lin in open(inf, 'r'):
haha = num.findall(lin)
haha[0] = int(haha[0])
haha[1] = int(haha[1])
haha[2] = int(haha[2])
oligocolor = (haha[0])%100, (haha[0] * 2)%100, (haha[0] * 3)%100 # darker colors
if haha[0] != oligo: #arrows
if (oligo != -1):
yc = getrowloc(row)
xc = getcolend(col, row)
if row%2 == 0:
pygame.draw.polygon(screen, oligocolor, ((xc,yc+unitlength/5),(xc,yc-unitlength/5),(xc-unitlength/2,yc)), 0)
screen.blit(font18.render(str(oligo),1,oligocolor),(xc,yc))
elif row%2 == 1:
pygame.draw.polygon(screen, oligocolor, ((xc,yc+unitlength/5),(xc,yc-unitlength/5),(xc+unitlength/2,yc)), 0)
screen.blit(font18.render(str(oligo),1,oligocolor),(xc,yc))
oligo = haha[0]
row = haha[1]
col = haha[2]
pygame.draw.circle(screen, oligocolor, (getcolend(col, row+1), getrowloc(row)), 2, 0)
else:
if haha[1] == row:
drawat(row, col, haha[2], screen, oligocolor)
else:
drawup(col, row, haha[1], screen, oligo, oligocolor, font12)
row = haha[1]
col = haha[2]
#didn't take care of last oligo in above
yc = getrowloc(row)
xc = getcolend(col, row)
if row%2 == 0:
pygame.draw.polygon(screen, oligocolor, ((xc,yc+unitlength/5),(xc,yc-unitlength/5),(xc-unitlength/2,yc)), 0)
screen.blit(font18.render(str(oligo),1,oligocolor),(xc,yc))
elif row%2 == 1:
pygame.draw.polygon(screen, oligocolor, ((xc,yc+unitlength/5),(xc,yc-unitlength/5),(xc+unitlength/2,yc)), 0)
screen.blit(font18.render(str(oligo),1,oligocolor),(xc,yc))
###
pygame.image.save(screen, outf)
pygame.quit()
#screen = pygame.image.load(blah.bmp)