comparison gamelib/gui_base.py @ 68:7309392d9ca9

fixed widget drawing bugs
author Rizmari Versfeld <rizziepit@gmail.com>
date Tue, 08 May 2012 23:05:58 +0200
parents 24f0707695b4
children 626b1eaec13c
comparison
equal deleted inserted replaced
67:06c8539df478 68:7309392d9ca9
102 self.pressed_child = None 102 self.pressed_child = None
103 103
104 def draw(self, screen): 104 def draw(self, screen):
105 if self.background_colour: 105 if self.background_colour:
106 self.surface.fill(self.background_colour) 106 self.surface.fill(self.background_colour)
107 else:
108 self.surface.fill((0, 0, 0, 255))
107 if self.background_image: 109 if self.background_image:
108 self.surface.blit(self.background_image, (0, 0)) 110 self.surface.blit(self.background_image, (0, 0))
109 self.draw_children(self.surface) 111 self.draw_children(self.surface)
110 screen.blit(self.surface, (0, 0)) 112 screen.blit(self.surface, (0, 0))
111 113
153 class TextButton(Button): 155 class TextButton(Button):
154 156
155 def __init__(self, rect, normal_drawable, down_drawable, text, font, 157 def __init__(self, rect, normal_drawable, down_drawable, text, font,
156 shadow): 158 shadow):
157 super(TextButton, self).__init__(rect, normal_drawable, down_drawable) 159 super(TextButton, self).__init__(rect, normal_drawable, down_drawable)
158 self.surface = Surface((rect[2], rect[3])) 160 self.surface = Surface((rect[2], rect[3]), pygame.SRCALPHA)
159 self.text = text 161 self.text = text
160 self.font = font 162 self.font = font
161 self.shadow = shadow 163 self.shadow = shadow
162 self._draw_text() 164 self._draw_text()
163 165
164 def _draw_text(self): 166 def _draw_text(self):
165 self.font.set_bold(True) 167 self.font.set_bold(True)
166 self.text_surface = self.font.render(self.text, True, (128, 128, 128)) 168 self.text_surface = self.font.render(self.text, True, (0, 0, 0))
169 size = self.font.size(self.text)
167 if self.shadow: 170 if self.shadow:
168 shadow = self.font.render(self.text, True, (0, 0, 0)) 171 shadow = self.font.render(self.text, True, (128, 128, 128))
169 self.text_surface.blit(shadow, (-2, -2)) 172 temp_surface = Surface((shadow.get_width() + 2, shadow.get_width() + 2), pygame.SRCALPHA)
170 self.font.set_bold(False) 173 temp_surface.fill((255, 255, 255, 0))
171 size = self.font.size(self.text) 174 temp_surface.blit(shadow, (2, 2))
175 temp_surface.blit(self.text_surface, (0, 0))
176 self.text_surface = temp_surface
177 size = [s + 2 for s in size]
172 self.text_offset = ((self.rect[2] - size[0]) / 2, 178 self.text_offset = ((self.rect[2] - size[0]) / 2,
173 (self.rect[3] - size[1]) / 2) 179 (self.rect[3] - size[1]) / 2)
180 self.font.set_bold(False)
174 181
175 def draw(self, surface): 182 def draw(self, surface):
176 self.surface.fill((0, 0, 0, 0)) 183 self.surface.fill((0, 0, 0, 0))
177 super(TextButton, self).draw(self.surface) 184 super(TextButton, self).draw(self.surface)
178 self.surface.blit(self.text_surface, self.text_offset) 185 self.surface.blit(self.text_surface, self.text_offset)
181 188
182 class TextLabel(Drawable): 189 class TextLabel(Drawable):
183 190
184 def __init__(self, rect, text, font, color): 191 def __init__(self, rect, text, font, color):
185 super(TextLabel, self).__init__(rect) 192 super(TextLabel, self).__init__(rect)
186 self.surface = Surface((rect[2], rect[3])) 193 self.surface = Surface((rect[2], rect[3]), pygame.SRCALPHA)
187 self.text = text 194 self.text = text
188 self.font = font 195 self.font = font
189 self.color = color 196 self.color = color
190 self._draw_text() 197 self._draw_text()
191 198