changeset 119:9a30162f2a9c

Add more logic around resizing surfaces
author Neil Muller <drnlmuller@gmail.com>
date Wed, 09 May 2012 23:27:10 +0200
parents bc9da66ec333
children a79bba0dfcd8
files gamelib/gui_base.py
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gui_base.py	Wed May 09 23:23:00 2012 +0200
+++ b/gamelib/gui_base.py	Wed May 09 23:27:10 2012 +0200
@@ -234,14 +234,24 @@
                 current_str += word + ' '
             else:
                 s = self.font.render(current_str[0:-1], True, self.color)
+                self._resize_text_surface(current_height + size[1])
                 self.text_surface.blit(s, (0, current_height))
                 current_height += size[1]
                 current_str = word + ' '
         if current_str[-1] == ' ':
             current_str = current_str[0:-1]
         s = self.font.render(current_str, True, self.color)
+        self._resize_text_surface(current_height + size[1])
         self.text_surface.blit(s, (0, current_height))
         self.text_offset = (0, 0)
         self.rect.height = current_height + size[1]
         self.surface = Surface((self.rect.width, self.rect.height),
             pygame.SRCALPHA)
+
+    def _resize_text_surface(self, new_height):
+        """Resize the text surface if needed"""
+        if new_height > self.text_surface.get_rect().height:
+            old_text = self.text_surface
+            self.text_surface = Surface((self.rect[2], new_height),
+                    pygame.SRCALPHA)
+            self.text_surface.blit(old_text, (0, 0))