Files
gig/display.py
2025-08-22 22:11:37 +01:00

59 lines
2.1 KiB
Python
Executable File

# 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)