Skip to content

Commit

Permalink
Added speech bubble rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
jaseg committed Apr 3, 2013
1 parent 4879895 commit 03fe6f2
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions pixelterm.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
from pygments.formatters import terminal256
from PIL import Image, PngImagePlugin

formatter = terminal256.Terminal256Formatter()
reset_sequence = terminal256.EscapeSequence(fg=formatter._closest_color(0,0,0), bg=formatter._closest_color(0,0,0)).reset_string()

def termify_pixels(img):
sx, sy = img.size
out = ''

formatter = terminal256.Terminal256Formatter()
fg,bg = None,None
fgd,bgd = {},{}
def bgescape(color):
Expand All @@ -37,14 +39,34 @@ def fgescape(color):
fgd[color]= terminal256.EscapeSequence(fg=formatter._closest_color(r,g,b)).color_string()
return fgd[color]
#NOTE: This ignores the last line if there is an odd number of lines.
def balloon(x,y):
if img.getpixel((x+1, y)) != (0,255,0,127):
w = 1
while img.getpixel((x-w, y)) == (0,255,0,127):
w += 1
if x-w<0:
break
return '$balloon{}$'.format(w)
return ''

for y in range(0, sy-1, 2):
for x in range(sx):
coltop = img.getpixel((x, y))
colbot = img.getpixel((x, y+1))

if coltop[3] == 127: #Control colors
out += reset_sequence
out += {(255, 0, 0, 127): lambda x,y:'$\\$',
(0, 0, 255, 127): lambda x,y:'$/$',
(0, 255, 0, 127): balloon
}.get(coltop, lambda x,y:' ')(x,y)
continue

if coltop[3] != 255:
coltop = (0,0,0,0)
if colbot[3] != 255:
colbot = (0,0,0,0)

#Da magicks: ▀█▄
c,cf = '▀','█'
te,be = fgescape,bgescape
Expand All @@ -54,7 +76,7 @@ def fgescape(color):
c,te,be = cf,te,te
out += te(coltop) + be(colbot) + c
out = out.rstrip() + '\n'
out += terminal256.EscapeSequence(fg=formatter._closest_color(0,0,0), bg=formatter._closest_color(0,0,0)).reset_string()
out += reset_sequence
return out

if __name__ == '__main__':
Expand Down

0 comments on commit 03fe6f2

Please sign in to comment.