def invalidate(self, invalid_rcs, draw_mouse=True):
        assert all(isinstance(rc, Rect) for rc in invalid_rcs)
        update_rcs = map(Rect, invalid_rcs)
        self.debug('invalidate', {'rects': update_rcs})
        wnds_to_draw = []
        for wnd in reversed(self.wnds):
            new_invalid_rcs = []
            for invalid_rc in invalid_rcs:
                draw_rc = invalid_rc.intersected(
                    wnd.window_rect_in_screen_coord())
                if draw_rc.is_empty():
                    new_invalid_rcs.append(invalid_rc)
                else:
                    wnds_to_draw.append((wnd, draw_rc))
                    if wnd.attr() & WND_TRANSPARENT:
                        new_invalid_rcs.append(invalid_rc)
                    else:
                        new_invalid_rcs.extend(invalid_rc - draw_rc)
            invalid_rcs = new_invalid_rcs
        painter = Painter(self.screen)
        for wnd, rc in reversed(wnds_to_draw):
            self.blit_window(painter, wnd, rc)

        if draw_mouse:
            painter.draw_bitmap(self.mouse_x, self.mouse_y, self.mouse_img)

        for rc in update_rcs:
            self.update_screen(rc)
 def on_paint(self, ev):
     painter = Painter(self)
     painter.draw_bitmap(0, 0, self.im)
     for i, icon in enumerate(self.icons):
         x = ICON_MARGIN
         y = ICON_MARGIN + i * (ICON_SIZE + ICON_MARGIN)
         if i == self.cur_icon:
             rc = Rect(x, y, ICON_SIZE, ICON_SIZE)
             dx = ICON_SIZE / 10
             rc.adjust(-dx, -dx, dx, dx)
             painter.fill_rect(rc, SteelBlue)
         painter.draw_bitmap(x, y, icon)
Exemple #3
0
 def on_paint(self, ev):
     painter = Painter(self)
     painter.draw_bitmap(0, 0, self.im)
 def update_screen(self, rc):
     painter = Painter(Bitmap(self.video_mem))
     painter.draw_bitmap(rc, self.screen, rc)