X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Ftext.py;h=d753e8a12aed87987e9f6f273e861d678eda5612;hb=0cef06f581d48315a59a19ac06ca1d2be14cbb4c;hp=6ca239d6fbdc08d9e467a718fcf86d955d4cf252;hpb=d8daea1f8a67c1a547440b3934454da9792236ef;p=naja.git diff --git a/naja/widgets/text.py b/naja/widgets/text.py index 6ca239d..d753e8a 100644 --- a/naja/widgets/text.py +++ b/naja/widgets/text.py @@ -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,13 +78,10 @@ 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) + width = max(width, line_rect.width + self.padding) height += line_rect.height self.surface = pygame.surface.Surface((width, height),