X-Git-Url: https://scm.cri.minesparis.psl.eu/git/minwii.git/blobdiff_plain/346a9b8e1fcfe30629f0d1ee4675e9e8f89890cf..4c4732c6ed8cb0aaa70fb2d4c6e5a958868c5349:/src/pgu/fonts.py?ds=sidebyside diff --git a/src/pgu/fonts.py b/src/pgu/fonts.py deleted file mode 100644 index ab6f73d..0000000 --- a/src/pgu/fonts.py +++ /dev/null @@ -1,130 +0,0 @@ -"""Some handy font-like objects. - -

please note that this file is alpha, and is subject to modification in -future versions of pgu!

-""" - -print 'pgu.fonts','This module is alpha, and is subject to change.' - -import pygame -from pygame.locals import * - -class TileFont: - """Creates an instance of the TileFont class. Interface compatible with pygame.Font - -

TileFonts are fonts that are stored in a tiled image. Where the image opaque, it assumed that the font is visible. Font color is changed automatically, so it does not work with - fonts with stylized coloring.

- -
TileFont(fname,size,hints,scale=None,sensitive=False)
- -
-
size
the dimensions of the characters -
hints
a string of hints "abcdefg..." -
scale
size to scale font to -
sensitive
case sensitivity -
- """ - - def __init__(self,fname,size,hints,scale=None,sensitive=False): - - self.image = pygame.image.load(fname) - - w,h = self.image.get_width(),self.image.get_height() - tw,th = size - if not scale: scale = size - self._size = size - self.scale = scale - - self.chars = {} - x,y = 0,0 - self.sensitive = sensitive - if not self.sensitive: hints = hints.lower() - for c in hints: - if c not in ('\r','\n','\t'): - img = self.image.subsurface(x,y,tw,th) - self.chars[c] = img - x += tw - if x >= w: x,y = 0,y+th - - self.colors = {} - - def size(self,text): - tw,th = self.scale - return len(text)*tw,th - - def render(self,text,antialias=0,color=(255,255,255),background=None): - size = self.size(text) - scale = self.scale - tw,th = self._size - if background == None: - s = pygame.Surface(size).convert_alpha() - s.fill((0,0,0,0)) - else: - s = pygame.Surface(size).convert() - s.fill(background) - - if not self.sensitive: text = text.lower() - - if color not in self.colors: self.colors[color] = {} - colored = self.colors[color] - - x,y = 0,0 - for c in text: - if c in self.chars: - if c not in colored: - img = self.chars[c].convert_alpha() - for yy in xrange(0,th): - for xx in xrange(0,tw): - r,g,b,a = img.get_at((xx,yy)) - if a > 128: - img.set_at((xx,yy),color) - colored[c] = img - img = colored[c] - if scale != (tw,th): img = pygame.transform.scale(img,scale) - s.blit(img,(x,y)) - x += scale[0] - return s - - -class BorderFont: - """a decorator for normal fonts, adds a border. Interface compatible with pygame.Font. - -
BorderFont(font,size=1,color=(0,0,0))
- -
-
size
width of border; defaults 0 -
color
color of border; default (0,0,0) -
- """ - def __init__(self,font,size=1,color=(0,0,0)): - - self.font = font - self._size = size - self.color = color - - def size(self,text): - w,h = self.font.size(text) - s = self._size - return w+s*2,h+s*2 - - def render(self,text,antialias=0,color=(255,255,255),background=None): - size = self.size(text) - - if background == None: - s = pygame.Surface(size).convert_alpha() - s.fill((0,0,0,0)) - else: - s = pygame.Surface(size).convert() - s.fill(background) - - bg = self.font.render(text,antialias,self.color) - fg = self.font.render(text,antialias,color) - - si = self._size - dirs = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)] - for dx,dy in dirs: s.blit(bg,(si+dx*si,si+dy*si)) - s.blit(fg,(si,si)) - - return s - -