# display.py import pyglet class DisplayContent: def __init__(self): pass def create(self, obj, width, height, x, y): obj.audiencebatch = pyglet.graphics.Batch() obj.audiencecontent = [] class DisplayLyrics(DisplayContent): def __init__(self, text): self._text = text def create(self, obj, width, height, x, y): scale = height / 600 super().create(obj, width, height, x, y) obj.audiencecontent.append(pyglet.text.Label(self._text, font_name='Ariel', font_size=36 * scale, x=x + width//2, y=y + height//2, anchor_x='center', anchor_y='center', width=width, align='center', multiline=True, batch=obj.audiencebatch)) class DisplayImage(DisplayContent): def __init__(self, image, background=None): self._image = image self._background = background def create(self, obj, width, height, x, y): super().create(obj, width, height, x, y) scale = min(width / self._image.width, height / self._image.height) if self._background is not None: print("Background is {}".format(self._background)) rectangle = pyglet.shapes.Rectangle(x=x + width//2, y=y + height//2, width=width, height=height, color=self._background, batch=obj.audiencebatch) rectangle.anchor_x = width//2 rectangle.anchor_y = height//2 obj.audiencecontent.append(rectangle) sprite = pyglet.sprite.Sprite(img=self._image, x=x + width//2, y=y + height//2, batch=obj.audiencebatch) sprite.scale = scale obj.audiencecontent.append(sprite)