changeset 46:416e40b77924

Multi-line text
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 03 Apr 2011 20:59:05 +0200
parents 7f7b4bfbaf0e
children 215e2e74c244
files scripts/level-editor skaapsteker/widgets/text.py
diffstat 2 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/level-editor	Sun Apr 03 20:48:26 2011 +0200
+++ b/scripts/level-editor	Sun Apr 03 20:59:05 2011 +0200
@@ -54,9 +54,9 @@
         level.draw(level_surface)
         screen_surface.blit(level_surface, (0, 0), clip_rect)
 
-        text = skaapsteker.widgets.text.Text("Level: %s. Offset: %r"
+        text = skaapsteker.widgets.text.Text("Level: %s.\nOffset: %r"
                                             % (levelname, position),
-                                            colour='white')
+                                            color='white')
         text.draw(screen_surface, (10, 10))
 
         pygame.display.flip()
--- a/skaapsteker/widgets/text.py	Sun Apr 03 20:48:26 2011 +0200
+++ b/skaapsteker/widgets/text.py	Sun Apr 03 20:59:05 2011 +0200
@@ -11,13 +11,22 @@
 loaded_fonts = {}
 
 class Text(object):
-    def __init__(self, text, font='sans', size=16, colour='black'):
+    def __init__(self, text, font='sans', size=16, color='black'):
         self.text = text
         self.font = load_font(font, size)
-        self.surface = self.font.render(self.text, True, pygame.Color(colour))
+        self.color = pygame.Color(color)
+        self.surfaces = [self.font.render(line, True, self.color)
+                         for line in self.text.split('\n')]
 
     def draw(self, surface, pos):
-        surface.blit(self.surface, pos)
+        if isinstance(pos, pygame.Rect):
+            pos = pos.copy()
+        else:
+            pos = pygame.Rect(pos, (0, 0))
+
+        for line in self.surfaces:
+            surface.blit(line, pos)
+            pos.move_ip(0, self.font.get_linesize())
 
 def load_font(name, size):
     if (name, size) not in loaded_fonts: