@staticmethod
def _spiral(width, height):
    """Spiral generator.

        Parameters
        ----------
        width : `int`
            Spiral width.
        height : `int`
            Spiral height.

        Returns
        -------
        `generator` of (`int`, `int`)
            Points.
        """
    if width == 1:
        for y in range(height - 1, -1, -1):
            yield 0, y
        return
    if height == 1:
        for x in range(width - 1, -1, -1):
            yield x, 0
        return
    if width <= height:
        x0 = width // 2
        if width % 2:
            for y in range(height - 1 - x0, x0 - 1, -1):
                yield x0, y
        x0 -= 1
        y0 = x0
    else:
        y0 = height // 2
        if height % 2:
            for x in range(width - 1 - y0, y0 - 1, -1):
                yield x, y0
        y0 -= 1
        x0 = y0
    while x0 >= 0:
        x1 = width - x0 - 1
        y1 = height - y0 - 1
        for y in range(y0 + 1, y1):
            yield x0, y
        for x in range(x0, x1):
            yield x, y1
        for y in range(y1, y0, -1):
            yield x1, y
        for x in range(x1, x0 - 1, -1):
            yield x, y0
        x0 -= 1
        y0 -= 1
