def do_expose_event(self, event): context = self.window.cairo_create() context.set_source(self.__checkerBoard) context.paint() size = self.window.get_size() graphics.drawGrid(context, 16, size[0], size[1]) for shape in self.shapes: graphics.drawShape(shape, context, True)
def specialRedraw(self, context, ex, ey, ew, eh): """ See TileGrid.specialRedraw """ surface = self.getController().getTilesetSurface(self.index) context.rectangle(0, 0, surface.get_width(), surface.get_height()) context.set_source(self.checkerPattern) context.fill() context.set_source_surface(surface, 0, 0) context.paint() if self.showGrid: context.save() context.rectangle(0, 0, surface.get_width(), surface.get_height()) context.clip() graphics.drawGrid(context, self.getController().mapTileSize(), surface.get_width(), surface.get_height())
def renderScreen(self, screen): import graphics from constants import white screen.fill(white) graphics.drawGrid(screen) graphics.renderControls(graphics.screen) for row in range(3): for col in range(3): if self.grid[row][col] == "X": graphics.drawX(screen, self.grid, row, col) elif self.grid[row][col] == "O": graphics.drawO(screen, self.grid, row, col)
def renderScreen(self, screen): import graphics from constants import white screen.fill(white) graphics.drawGrid(screen) graphics.renderControls(graphics.screen) for row in range(3): for col in range(3): if self.grid[row][col] == "X": graphics.drawX(screen, self.grid, row, col) elif self.grid[row][col] == "O": graphics.drawO(screen, self.grid, row, col) if not self.win and not self.tie: graphics.renderMsgAboveGrid(screen, ("O" if self.player == 1 else "X") + "'s turn")
def specialRedraw(self, context, ex, ey, ew, eh): self.__redrawLocked = True # Ensure that the scrolling is handled correctly # This sets the size of the scroll bar handles correctly self.vAdjust.page_size = eh / self.getZoom() self.hAdjust.page_size = ew / self.getZoom() # Adjust the scroll offsets so that the maximum amount of map is # visible. This mimics the behavior of a drawing area inside of a # gtk.ScrolledWindow ewz = int(ew / self.getZoom()) if self.__scrollOffsetX + ewz > self.hAdjust.upper: self.__scrollOffsetX = int(max(self.hAdjust.upper - ewz, 0)) self.hAdjust.value = self.__scrollOffsetX ehz = int(eh / self.getZoom()) if self.__scrollOffsetY + ehz > self.vAdjust.upper: self.__scrollOffsetY = int(max(self.vAdjust.upper - ehz, 0)) self.vAdjust.value = self.__scrollOffsetY context.rectangle(0, 0, self.hAdjust.upper - self.__scrollOffsetX, self.vAdjust.upper - self.__scrollOffsetY) context.set_source(self.checkerPattern) context.fill() # Draw tile layers controller = self.getController() ts = int(controller.mapTileSize()) xStart = self.__scrollOffsetX // ts xEnd = (ewz // ts) + xStart + 2 yStart = self.__scrollOffsetY // ts yEnd = (ehz // ts) + yStart + 2 i = controller.getLayerInfo() for z in range(controller.getNumLayers()): if i[z][1] == False: continue # The layer is not visible for x in range(xStart, xEnd): for y in range(yStart, yEnd): info = controller.getTile(x, y, z) if info is not None: surface = controller.getTilesetSurface(info[2]) context.set_source_surface(surface, ((x - info[0]) * ts) - self.__scrollOffsetX, ((y - info[1]) * ts) - self.__scrollOffsetY) context.rectangle((x * ts) - self.__scrollOffsetX, (y * ts) - self.__scrollOffsetY, ts, ts) context.fill() if self.showGrid == True: context.save() context.rectangle(0, 0, ts * controller.mapWidth(), ts * controller.mapHeight()) context.clip() graphics.drawGrid(context, ts, ewz, ehz, self.__scrollOffsetX, self.__scrollOffsetY) context.restore() # Change the transform matrix of the context here so that the classes # in editortools don't need to know about self.__scrollOffset*. This # only works if specialRedraw is called before the context.translate(-self.__scrollOffsetX, -self.__scrollOffsetY) self.__redrawLocked = False
def specialRedraw(self, context, ex, ey, ew, eh): self.__redrawLocked = True # Ensure that the scrolling is handled correctly # This sets the size of the scroll bar handles correctly self.vAdjust.page_size = eh / self.getZoom() self.hAdjust.page_size = ew / self.getZoom() # Adjust the scroll offsets so that the maximum amount of map is # visible. This mimics the behavior of a drawing area inside of a # gtk.ScrolledWindow ewz = int(ew / self.getZoom()) if self.__scrollOffsetX + ewz > self.hAdjust.upper: self.__scrollOffsetX = int(max(self.hAdjust.upper - ewz, 0)) self.hAdjust.value = self.__scrollOffsetX ehz = int(eh / self.getZoom()) if self.__scrollOffsetY + ehz > self.vAdjust.upper: self.__scrollOffsetY = int(max(self.vAdjust.upper - ehz, 0)) self.vAdjust.value = self.__scrollOffsetY context.rectangle(0, 0, self.hAdjust.upper - self.__scrollOffsetX, self.vAdjust.upper - self.__scrollOffsetY) context.set_source(self.checkerPattern) context.fill() # Draw tile layers controller = self.getController() ts = int(controller.mapTileSize()) xStart = self.__scrollOffsetX // ts xEnd = (ewz // ts) + xStart + 2 yStart = self.__scrollOffsetY // ts yEnd = (ehz // ts) + yStart + 2 i = controller.getLayerInfo() for z in range(controller.getNumLayers()): if i[z][1] == False: continue # The layer is not visible for x in range(xStart, xEnd): for y in range(yStart, yEnd): info = controller.getTile(x, y, z) if info is not None: surface = controller.getTilesetSurface(info[2]) context.set_source_surface( surface, ((x - info[0]) * ts) - self.__scrollOffsetX, ((y - info[1]) * ts) - self.__scrollOffsetY) context.rectangle((x * ts) - self.__scrollOffsetX, (y * ts) - self.__scrollOffsetY, ts, ts) context.fill() if self.showGrid == True: context.save() context.rectangle(0, 0, ts * controller.mapWidth(), ts * controller.mapHeight()) context.clip() graphics.drawGrid(context, ts, ewz, ehz, self.__scrollOffsetX, self.__scrollOffsetY) context.restore() # Change the transform matrix of the context here so that the classes # in editortools don't need to know about self.__scrollOffset*. This # only works if specialRedraw is called before the context.translate(-self.__scrollOffsetX, -self.__scrollOffsetY) self.__redrawLocked = False