<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def highlight(self, x, y, w, h, fg=None, bg=None, blend=100):
 """ Highlight a specified section of the screen. :param x: The column (x coord) for the start of the highlight. :param y: The line (y coord) for the start of the highlight. :param w: The width of the highlight (in characters). :param h: The height of the highlight (in characters). :param fg: The foreground colour of the highlight. :param bg: The background colour of the highlight. :param blend: How much (as a percentage) to take of the new colour when blending. The colours and attributes are the COLOUR_xxx and A_yyy constants defined in the Screen class. If fg or bg are None that means don't change the foreground/background as appropriate. """

        # Convert to buffer coordinates
        y -= self._start_line
        for i in range(w):
            if x + i >= self.width or x + i < 0:
                continue

            for j in range(h):
                if y + j >= self._buffer_height or y + j < 0:
                    continue

                old = self._buffer.get(x + i, y + j)
                new_bg = self._blend(bg, old[3], blend)
                new_fg = self._blend(fg, old[1], blend)
                self._buffer.set(x + i, y + j, (old[0], new_fg, old[2], new_bg, old[4]))