This repository has been archived on 2020-08-22. You can view files and clone it, but cannot push or open issues or pull requests.
pyaudviz/preview_thread.py

60 lines
1.9 KiB
Python
Raw Normal View History

2015-03-02 16:47:52 -05:00
from PyQt4 import QtCore, QtGui, uic
from PyQt4.QtCore import pyqtSignal, pyqtSlot
from PIL import Image
2015-03-02 16:47:52 -05:00
from PIL.ImageQt import ImageQt
import core
from queue import Queue, Empty
2017-06-06 05:04:42 -04:00
import os
from copy import copy
2015-03-02 16:47:52 -05:00
2017-06-06 11:14:39 -04:00
2015-03-02 16:47:52 -05:00
class Worker(QtCore.QObject):
2017-06-06 11:14:39 -04:00
imageCreated = pyqtSignal(['QImage'])
def __init__(self, parent=None, queue=None):
QtCore.QObject.__init__(self)
parent.newTask.connect(self.createPreviewImage)
parent.processTask.connect(self.process)
self.parent = parent
2017-06-06 11:14:39 -04:00
self.core = core.Core()
self.queue = queue
self.core.settings = parent.settings
self.stackedWidget = parent.window.stackedWidget
self.background = Image.new("RGBA", (1920, 1080), (0, 0, 0, 0))
self.background.paste(Image.open(os.path.join(
os.path.dirname(os.path.realpath(__file__)), "background.png")))
@pyqtSlot(str, list)
def createPreviewImage(self, components):
dic = {
"components": components,
}
self.queue.put(dic)
@pyqtSlot()
def process(self):
2015-03-02 16:47:52 -05:00
try:
2017-06-06 11:14:39 -04:00
nextPreviewInformation = self.queue.get(block=False)
while self.queue.qsize() >= 2:
try:
self.queue.get(block=False)
except Empty:
continue
width = int(self.core.settings.value('outputWidth'))
height = int(self.core.settings.value('outputHeight'))
frame = copy(self.background)
frame = frame.resize((width, height))
components = nextPreviewInformation["components"]
for component in reversed(components):
frame = Image.alpha_composite(
frame, component.previewRender(self))
self._image = ImageQt(frame)
self.imageCreated.emit(QtGui.QImage(self._image))
2015-03-02 16:47:52 -05:00
except Empty:
2017-06-06 11:14:39 -04:00
True