X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fresources%2Fmutators.py;h=e3fc67a0c011805b3f51d56d704948daf6faa791;hb=e5731d2cbc0c7a260e7b69aac07e6c26b9b2c56d;hp=2a730de5663a3fb39b71e0ea354f02d364781347;hpb=ca580095a6bd245e0c3ce5d653c9e968e570f242;p=naja.git diff --git a/naja/resources/mutators.py b/naja/resources/mutators.py index 2a730de..e3fc67a 100644 --- a/naja/resources/mutators.py +++ b/naja/resources/mutators.py @@ -1,6 +1,11 @@ '''Mutations to apply to images''' -from pygame.transform import rotate, flip +from pygame.transform import flip, rotate, scale + +from naja.constants import EIGHT_BIT_SCALE + +from pygame import surface +import pygame.locals as pgl class Mutator(object): @@ -27,6 +32,29 @@ def rotator(angle): return Mutator(rotate, angle) +def scaler(size): + return Mutator(scale, size) + + +def scale_multiplier(image, factor): + size = image.get_width() * factor, image.get_height() * factor + return scale(image, size) + + +def blend_add(image, colour, flags=pgl.BLEND_ADD): + """Overlay the image with the given colour using BLEND_ADD""" + blend = surface.Surface(image.get_size()) + blend.fill(colour) + # We return a copy + blended_image = image.copy() + blended_image.blit(blend, (0, 0), special_flags=flags) + return blended_image + + +def blender(colour, flags=pgl.BLEND_ADD): + return Mutator(blend_add, tuple(colour), flags) + + # Identity mutator NULL = Mutator(lambda x: x) @@ -37,3 +65,5 @@ R270 = rotator(-90) FLIP_H = Mutator(flip, True, False) FLIP_V = Mutator(flip, False, True) + +EIGHT_BIT = Mutator(scale_multiplier, EIGHT_BIT_SCALE)