1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
"""Simple Sprite sub-class that renders via a PangoFont"""
from pygame import sprite
from olpcgames import pangofont
class TextSprite( sprite.Sprite ):
"""Sprite with a simple text renderer"""
image = rect = text = color = background = None
def __init__( self, text=None, family=None, size=None, bold=False, italic=False, color=None, background=None ):
super( TextSprite, self ).__init__( )
self.font = pangofont.PangoFont( family=family, size=size, bold=bold, italic=italic )
self.set_color( color )
self.set_background( background )
self.set_text( text )
def set_text( self, text ):
"""Set our text string and render to a graphic"""
self.text = text
self.render( )
def set_color( self, color =None):
"""Set our rendering colour (default white)"""
self.color = color or (255,255,255)
self.render()
def set_background( self, color=None ):
"""Set our background color, default transparent"""
self.background = color
self.render()
def render( self ):
"""Render our image and rect (or None,None)
After a render you will need to move the rect member to the
correct location on the screen.
"""
if self.text:
self.image = self.font.render( self.text, color = self.color, background = self.background )
currentRect = self.rect
self.rect = self.image.get_rect()
if currentRect:
self.rect.center = currentRect.center
else:
self.rect = None
self.image = None
|