"""a collection of text rendering functions"""
def write(s,font,pos,color,text,border=1):
	"""write text to a surface with a black border"""
	i = font.render(text,1,(0,0,0))
	si = border
	dirs = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)]
	for dx,dy in dirs: s.blit(i,(pos[0]+dx*si,pos[1]+dy*si))
	i = font.render(text,1,color)
	s.blit(i,pos)

def writec(s,font,color,text,border=1):
	"""write centered text to a surface with a black border"""
	w,h = font.size(text)
	x = (s.get_width()-w)/2
	y = (s.get_height()-h)/2
	write(s,font,(x,y),color,text,border)
	
def writepre(s,font,rect,color,text):
	"""write preformatted text"""
	r,c,txt = rect,color,text
	txt = txt.replace("\t","        ")
	i = font.render(" ",1,c)
	sw,sh = i.get_width(),i.get_height()
	y = r.top
	for sentence in txt.split("\n"):
		x = r.left
		i = font.render(sentence,1,c)
		s.blit(i,(x,y))
		y += sh

def writewrap(s,font,rect,color,text):
	"""write wrapped text"""
	r,c,txt = rect,color,text
	txt = txt.replace("\t","        ")
	i = font.render(" ",1,c)
	sw,sh = i.get_width(),i.get_height()
	y = r.top
	for sentence in txt.split("\n"):
		x = r.left
		for word in sentence.split(" "):
			i = font.render(word,1,c)
			iw,ih = i.get_width(),i.get_height()
			if x+iw > r.right: x,y = r.left,y+sh
			s.blit(i,(x,y))
			x += iw+sw
		y += sh

# vim: set filetype=python sts=4 sw=4 noet si :
