Mercurial > sypikslang
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 |