Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
	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)
Пример #5
0
 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())
Пример #6
0
    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")
Пример #7
0
	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
Пример #8
0
    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