Source code for albow.utils
from pygame import Surface
from pygame.locals import SRCALPHA
[docs]def frame_rect(surface, color, rect, thick=1):
o = 1
surface.fill(color, (rect.left + o, rect.top, rect.width - o - o, thick))
surface.fill(color, (rect.left + o, rect.bottom - thick, rect.width - o - o, thick))
surface.fill(color, (rect.left, rect.top + o, thick, rect.height - o - o))
surface.fill(color, (rect.right - thick, rect.top + o, thick, rect.height - o - o))
[docs]def blit_tinted(surface, image, pos, tint, src_rect=None):
from Numeric import add, minimum
from pygame.surfarray import array3d, pixels3d
if src_rect:
image = image.subsurface(src_rect)
buf = Surface(image.get_size(), SRCALPHA, 32)
buf.blit(image, (0, 0))
src_rgb = array3d(image)
buf_rgb = pixels3d(buf)
buf_rgb[...] = minimum(255, add(tint, src_rgb)).astype('b')
surface.blit(buf, pos)
[docs]def blit_in_rect(dst, src, frame, align='tl', margin=0):
r = src.get_rect()
align_rect(r, frame, align, margin)
dst.blit(src, r)
[docs]def align_rect(r, frame, align='tl', margin=0):
if 'l' in align:
r.left = frame.left + margin
elif 'r' in align:
r.right = frame.right - margin
else:
r.centerx = frame.centerx
if 't' in align:
r.top = frame.top + margin
elif 'b' in align:
r.bottom = frame.bottom - margin
else:
r.centery = frame.centery
[docs]def brighten(rgb, factor):
return [min(255, int(round(factor * c))) for c in rgb]