示例#1
0
    def _on_expose(self, drawing, event):
        # just mark lock as callbacks are already inside gtk thread
        with self._gooey.lock_marker:

            # get a new cairo context from the drawing area
            context = self._drawing_area.window.cairo_create()

            # set a clip region for the expose event
            context.rectangle(event.area.x, event.area.y,
                              event.area.width, event.area.height)
            context.clip()
            
            # zoom and scroll
            context.scale(self.zoom, self.zoom)
            context.translate(*self.scroll)
            
            # call draw handler to draw contents of canvas to cairo context
            self.handle_draw(Brush(context, self.size))

            return False