Changeset 183:691d2795ae3c


Ignore:
Timestamp:
04/06/11 18:20:21 (12 years ago)
Author:
Stefano Rivera <stefano@…>
Branch:
default
Phase:
public
Rebase:
33313934633861343264333739386534666232646262323938333733353462386237613032616231
Message:

Add text shadow

Location:
skaapsteker
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • skaapsteker/cutscene.py

    r165 r183  
    1414        self.text = text
    1515        self.text_widget = Text(text, pygame.Rect(20, 20, 800-40, 600-40),
    16                                 size=24, wrap=True)
     16                                size=24, shadow='gray', wrap=True)
    1717        self.background = data.load_image('backgrounds/' + background)
    1818        self.start_time = pygame.time.get_ticks()
  • skaapsteker/levelscene.py

    r173 r183  
    9696
    9797        fps_text_pos = self._clip_rect.left + 10, self._clip_rect.top + 10
    98         fps_text = Text('FPS: %.1f' % engine.get_fps(), fps_text_pos)
     98        fps_text = Text('FPS: %.1f' % engine.get_fps(), fps_text_pos, shadow='white')
    9999        fps_text.draw(self._level_surface)
    100100
  • skaapsteker/widgets/text.py

    r182 r183  
    3939class Text(Widget):
    4040    def __init__(self, text, pos, font='sans', size=16, color='black',
    41                  wrap=False):
     41                 shadow=None, wrap=False):
    4242        self.text = text
    4343        if isinstance(pos, pygame.Rect):
     
    4747        self.font = load_font(font, size)
    4848        self.color = pygame.Color(color)
     49        self.shadow = None
     50        if shadow:
     51            self.shadow = pygame.Color(shadow)
    4952        if wrap:
    5053            if not isinstance(pos, pygame.Rect):
     
    5255            self._wrap()
    5356
    54         self.surfaces = [self.font.render(line, True, self.color)
    55                          for line in self.text.split('\n')]
    56         self.rect.width = max(line.get_width() for line in self.surfaces)
    57         self.rect.height = self.font.get_linesize() * len(self.surfaces)
    58 
     57        self._lines = []
     58        offset = (0, 0)
     59        for line in self.text.split('\n'):
     60            if shadow is not None:
     61                self._lines.append(((offset[0] + 1, offset[1] + 1),
     62                                   self.font.render(line, True, self.shadow)))
     63            self._lines.append((offset,
     64                                self.font.render(line, True, self.color)))
     65            offset = (offset[0], offset[1] + self.font.get_linesize())
     66        self.rect.width = max(line[1].get_width() for line in self._lines)
     67        self.rect.height = self.font.get_linesize() * len(self._lines)
     68        if shadow is not None:
     69            self.rect.width += 1
     70            self.rect.height += 1
    5971
    6072    def _wrap(self):
     
    8496    def draw(self, surface):
    8597        pos = self.rect
    86         for line in self.surfaces:
    87             surface.blit(line, pos)
    88             pos = pos.move(0, self.font.get_linesize())
     98        for offset, line in self._lines:
     99            surface.blit(line, pos.move(offset))
    89100
    90101
Note: See TracChangeset for help on using the changeset viewer.