BOSWatch/exampleAddOns/alarmMonitorRPi/wrapline.py

50 lines
1.2 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#
"""
alarmMonitor - wrapline
This snippet of code will convert a string of text into a list containing the lines it would break down into for a certain font and width
@author: pygame.org
http://www.pygame.org/wiki/TextWrapping
"""
def truncline(text, font, maxwidth):
real=len(text)
stext=text
l=font.size(text)[0]
cut=0
a=0
done=1
old = None
while l > maxwidth:
a=a+1
n=text.rsplit(None, a)[0]
if stext == n:
cut += 1
stext= n[:-cut]
else:
stext = n
l=font.size(stext)[0]
real=len(stext)
done=0
return real, done, stext
def wrapline(text, font, maxwidth):
done=0
wrapped=[]
while not done:
nl, done, stext=truncline(text, font, maxwidth)
wrapped.append(stext.strip())
text=text[nl:]
return wrapped
def wrap_multi_line(text, font, maxwidth):
""" returns text taking new lines into account.
"""
lines = chain(*(wrapline(line, font, maxwidth) for line in text.splitlines()))
return list(lines)