Factor out EIGHT_BIT_SCALE.
[naja.git] / naja / widgets / text.py
index 6ca239d6fbdc08d9e467a718fcf86d955d4cf252..0521e9b6a64483d47f3edc90c5e319f24b9b18f1 100644 (file)
@@ -1,27 +1,32 @@
 import pygame
 
-from naja.constants import FONT, FONT_SIZE
+from naja.constants import FONT, FONT_SIZE, EIGHT_BIT_SCALE
 from naja.widgets.base import Widget
 from naja.resources import resources
 from naja.utils import convert_colour
 
 
 class TextWidget(Widget):
+
     def __init__(self, pos, text, size=None, fontname=None, fontsize=None,
                  colour=None):
         super(TextWidget, self).__init__(pos, size)
 
         self.text = text
         self.fontname = fontname or FONT
-        self.fontsize = (fontsize or FONT_SIZE) // 4
+        self.fontsize = (fontsize or FONT_SIZE) // EIGHT_BIT_SCALE
         self.colour = convert_colour(colour or (0, 0, 0))
 
+    def render_line(self, text):
+        text_surf = self.font.render(text, True, self.colour)
+        text_rect = text_surf.get_rect()
+        return pygame.transform.scale(
+            text_surf, (text_rect.width * EIGHT_BIT_SCALE,
+                        text_rect.height * EIGHT_BIT_SCALE))
+
     def prepare(self):
         self.font = resources.get_font(self.fontname, self.fontsize)
-        text = self.font.render(self.text, True, self.colour)
-        text_rect = text.get_rect()
-        self.surface = pygame.transform.scale(text, (text_rect.width * 4,
-                                                     text_rect.height * 4))
+        self.surface = self.render_line(self.text)
         self.size = self.surface.get_rect().size
 
     def draw(self, surface):
@@ -73,10 +78,7 @@ class TextBoxWidget(TextWidget):
         rendered_lines = []
         width, height = self.padding, self.padding
         for line in self.lines():
-            line_surface = self.font.render(line, True, self.colour)
-            line_rect = line_surface.get_rect()
-            line_surface = pygame.transform.scale(
-                line_surface, (line_rect.width * 2, line_rect.height * 2))
+            line_surface = self.render_line(line)
             line_rect = line_surface.get_rect()
             rendered_lines.append(line_surface)
             width = max(width, line_rect.width)