# coding: utf-8 import typing import pyglet rectangle_positions_type = typing.Union[ typing.Tuple[ typing.Tuple[int, int], typing.Tuple[int, int], typing.Tuple[int, int], typing.Tuple[int, int] ], typing.List[typing.Tuple[int, int]], ] rgb_type = typing.Tuple[int, int, int] rgb_alpha_type = typing.Tuple[int, int, int, float] def draw_rectangle( positions: rectangle_positions_type, around_color: rgb_type, fill_color: typing.Optional[rgb_alpha_type]=None, ): """ A<---D | | B--->C """ pyglet.gl.glColor3ub(*around_color) pyglet.gl.glBegin(pyglet.gl.GL_LINE_STRIP) for v in positions: pyglet.gl.glVertex2f(*v) pyglet.gl.glVertex2f(*positions[0]) pyglet.gl.glEnd() if fill_color: pyglet.gl.glColor4f(*fill_color) pyglet.gl.glBegin(pyglet.gl.GL_QUADS) pyglet.gl.glVertex3f(positions[0][0], positions[0][1], 0) pyglet.gl.glVertex3f(positions[1][0], positions[1][1], 0) pyglet.gl.glVertex3f(positions[2][0], positions[2][1], 0) pyglet.gl.glVertex3f(positions[3][0], positions[3][1], 0) pyglet.gl.glEnd() def draw_line( from_position: typing.Tuple[int, int], to_position: typing.Tuple[int, int], color: rgb_type, width: typing.Optional[int]=1, ): pyglet.gl.glColor3ub(*color) pyglet.gl.glLineWidth(width) pyglet.graphics.draw( 4, pyglet.gl.GL_LINES, ("v2f", (0, 0, 0, 0, from_position[0], from_position[1], to_position[0], to_position[1])) )