Mercurial > skaapsteker
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
--- 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)]