From 85f20ca165c1710c96afbc42fa07acb68b6b4c1d Mon Sep 17 00:00:00 2001
From: Stefano Rivera <stefano@rivera.za.net>
Date: Sun, 11 May 2014 23:58:19 +0200
Subject: [PATCH] Scale up images

---
 naja/resources/mutators.py  | 15 ++++++++++++++-
 naja/widgets/player_bits.py |  4 ++--
 naja/widgets/robot.py       |  7 +++++--
 naja/widgets/selector.py    |  4 ++--
 naja/widgets/tile.py        |  4 +++-
 5 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/naja/resources/mutators.py b/naja/resources/mutators.py
index 2a730de..382e7c7 100644
--- a/naja/resources/mutators.py
+++ b/naja/resources/mutators.py
@@ -1,6 +1,8 @@
 '''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
 
 
 class Mutator(object):
@@ -27,6 +29,15 @@ 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)
+
+
 # Identity mutator
 NULL = Mutator(lambda x: x)
 
@@ -37,3 +48,5 @@ R270 = rotator(-90)
 
 FLIP_H = Mutator(flip, True, False)
 FLIP_V = Mutator(flip, False, True)
+
+EIGHT_BIT = Mutator(scale_multiplier, EIGHT_BIT_SCALE)
diff --git a/naja/widgets/player_bits.py b/naja/widgets/player_bits.py
index bdb7695..fff8b0d 100644
--- a/naja/widgets/player_bits.py
+++ b/naja/widgets/player_bits.py
@@ -6,7 +6,7 @@ import pygame
 
 from naja.constants import BIT_SIZE, BITS
 from naja.resources import resources
-from naja.resources.mutators import R90, R180, R270
+from naja.resources.mutators import R90, R180, R270, EIGHT_BIT
 from naja.widgets.base import Widget
 
 
@@ -34,7 +34,7 @@ class PlayerBitsWidget(Widget):
             is_set = self.state.player.bits.check_bit(bit)
             img = resources.get_image(
                 'bits', '%s_%s.png' % (image, 'on' if is_set else 'off'),
-                transforms=transforms)
+                transforms=transforms + (EIGHT_BIT,))
             self.surface.blit(img, (img.get_width() * pos, 0))
 
     def draw(self, surface):
diff --git a/naja/widgets/robot.py b/naja/widgets/robot.py
index cfdb750..7e218a9 100644
--- a/naja/widgets/robot.py
+++ b/naja/widgets/robot.py
@@ -4,6 +4,7 @@ import pygame.locals as pgl
 
 from naja.constants import PLAYER_SIZE, BIT_SIZE, TILE_SIZE, BITS
 from naja.resources import resources
+from naja.resources.mutators import EIGHT_BIT
 from naja.widgets.base import Widget
 
 IMG_MAP = {
@@ -25,10 +26,12 @@ class RobotWidget(Widget):
         # Look up the required bits on the board location
         self.pos = (self.state.player.position[0] * TILE_SIZE[0] + 32,
                     self.state.player.position[1] * TILE_SIZE[1] + BIT_SIZE[1])
-        self.surface = resources.get_image('board/robot.png')
+        self.surface = resources.get_image('board/robot.png',
+                                           transforms=(EIGHT_BIT,))
         for bit, img_name in IMG_MAP.iteritems():
             if self.state.player.bits.check_bit(bit):
-                bit_img = resources.get_image(img_name)
+                bit_img = resources.get_image(img_name,
+                                              transforms=(EIGHT_BIT,))
                 self.surface.blit(bit_img, (0, 0))
 
     def draw(self, surface):
diff --git a/naja/widgets/selector.py b/naja/widgets/selector.py
index c0c91b9..5e563a6 100644
--- a/naja/widgets/selector.py
+++ b/naja/widgets/selector.py
@@ -2,7 +2,7 @@ import pygame.locals as pgl
 
 from naja.widgets.base import Container
 from naja.resources import resources
-from naja.resources.mutators import R270
+from naja.resources.mutators import EIGHT_BIT, R270
 
 
 class SelectorWidget(Container):
@@ -10,7 +10,7 @@ class SelectorWidget(Container):
         super(SelectorWidget, self).__init__(*args, **kwargs)
         self.position = 0
         self.selector = resources.get_image('bits', 'arrow_on.png',
-                                            transforms=(R270,))
+                                            transforms=(R270, EIGHT_BIT))
 
     def render(self, surface):
         super(SelectorWidget, self).render(surface)
diff --git a/naja/widgets/tile.py b/naja/widgets/tile.py
index 4a88e12..cd0ab3a 100644
--- a/naja/widgets/tile.py
+++ b/naja/widgets/tile.py
@@ -4,6 +4,7 @@ import pygame.locals as pgl
 
 from naja.constants import TILE_SIZE, BITS
 from naja.resources import resources
+from naja.resources.mutators import EIGHT_BIT
 from naja.widgets.base import Widget
 
 
@@ -41,7 +42,8 @@ class TileWidget(Widget):
             for pattern in bits:
                 x_offset = 10
                 for bit in pattern:
-                    img = resources.get_image(BIT_MAP[bit])
+                    img = resources.get_image(BIT_MAP[bit],
+                                              transforms=(EIGHT_BIT,))
                     self.surface.blit(img, (x_offset, y_offset))
                     x_offset += 32
                 y_offset += 32
-- 
2.34.1