Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/olpcgames/textsprite.py
blob: 7663630345b76407a3a5c9ad03fcccd007ddd3cd (plain)
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