59 lines
2.1 KiB
Python
Executable File
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)
|
|
|