changeset 45:7f7b4bfbaf0e

Trivial text rendering widget
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 03 Apr 2011 20:48:26 +0200
parents ccc7ed272e84
children 416e40b77924
files data/fonts/DejaVuSans.ttf scripts/level-editor skaapsteker/widgets/__init__.py skaapsteker/widgets/text.py
diffstat 3 files changed, 34 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
Binary file data/fonts/DejaVuSans.ttf has changed
--- a/scripts/level-editor	Sun Apr 03 20:48:11 2011 +0200
+++ b/scripts/level-editor	Sun Apr 03 20:48:26 2011 +0200
@@ -10,10 +10,11 @@
 import pygame
 import pygame.key
 from pygame.locals import (SWSURFACE, QUIT, KEYDOWN, K_UP, K_DOWN, K_LEFT,
-                           K_RIGHT, KMOD_SHIFT, K_q)
+                           K_RIGHT, KMOD_SHIFT, K_q, K_ESCAPE)
 
 from skaapsteker.constants import SCREEN
 from skaapsteker.level import Level
+import skaapsteker.widgets.text
 
 FRAMERATE = 60
 
@@ -40,7 +41,7 @@
                     position[0] -= distance
                 elif ev.key == K_RIGHT:
                     position[0] += distance
-                elif ev.key == K_q:
+                elif ev.key in (K_q, K_ESCAPE):
                     return
 
         position[0] = max(position[0], 0)
@@ -53,6 +54,11 @@
         level.draw(level_surface)
         screen_surface.blit(level_surface, (0, 0), clip_rect)
 
+        text = skaapsteker.widgets.text.Text("Level: %s. Offset: %r"
+                                            % (levelname, position),
+                                            colour='white')
+        text.draw(screen_surface, (10, 10))
+
         pygame.display.flip()
         clock.tick(FRAMERATE)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/skaapsteker/widgets/text.py	Sun Apr 03 20:48:26 2011 +0200
@@ -0,0 +1,26 @@
+import os.path
+
+import pygame
+
+import skaapsteker.data
+
+fonts = {
+    'sans': 'DejaVuSans.ttf',
+}
+
+loaded_fonts = {}
+
+class Text(object):
+    def __init__(self, text, font='sans', size=16, colour='black'):
+        self.text = text
+        self.font = load_font(font, size)
+        self.surface = self.font.render(self.text, True, pygame.Color(colour))
+
+    def draw(self, surface, pos):
+        surface.blit(self.surface, pos)
+
+def load_font(name, size):
+    if (name, size) not in loaded_fonts:
+        fontfn = skaapsteker.data.filepath('fonts/' + fonts[name])
+        fonts[(name, size)] = pygame.font.Font(fontfn, size)
+    return fonts[(name, size)]