X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Ftransforms.py;h=8590c1bbd1ee61539921e9d906cfdf96f9fbb890;hb=05a783db47a36c0cc18df7cb625d44a6689aaf56;hp=50cb1d1de42287b977ba84e1d5a4b8420956b62f;hpb=cd254036f630c40baab130f5fab14e9d11bc286e;p=tabakrolletjie.git diff --git a/tabakrolletjie/transforms.py b/tabakrolletjie/transforms.py index 50cb1d1..8590c1b 100644 --- a/tabakrolletjie/transforms.py +++ b/tabakrolletjie/transforms.py @@ -4,6 +4,8 @@ import pygame.surface import pygame.locals as pgl +from .constants import COLOURS + class Transform(object): @@ -66,21 +68,41 @@ class Multiply(Transform): return surface -class MultiplyImage(Transform): - """ Apply a colour by multiplying. """ +class Alpha(Transform): + """ Make translucent. """ - ARGS = ["image"] + ARGS = ["alpha"] def apply(self, surface): - surface.blit(self.image, (0, 0), None, pgl.BLEND_RGBA_MULT) + surface.fill((255, 255, 255, self.alpha), None, pgl.BLEND_RGBA_MULT) return surface -class Alpha(Transform): - """ Make translucent. """ +class ColourWedges(Transform): + """ Apply colours as wedges. """ - ARGS = ["alpha"] + ARGS = ["colours"] def apply(self, surface): - surface.fill((255, 255, 255, self.alpha), None, pgl.BLEND_RGBA_MULT) + size = surface.get_width() + assert size in (16, 32, 48, 64) + fitting_colours = [COLOURS[c] for c in self.colours] + ncolour = len(fitting_colours) + if ncolour > 3: + print "Multicoloured light should not have more than 3 colours" + ncolour = 3 + + if ncolour == 1: + multiply = Multiply(colour=fitting_colours[0]) + return multiply.apply(surface) + + colour_mult_image = pygame.surface.Surface((size, size)) + from .loader import loader + for i in range(ncolour): + sector = loader.load_image( + str(size), "light_mask_%d_%d.png" % (ncolour, i + 1), + transform=Multiply(colour=fitting_colours[i])) + colour_mult_image.blit(sector, (0, 0), None, 0) + + surface.blit(colour_mult_image, (0, 0), None, pgl.BLEND_RGBA_MULT) return surface