2015-03-02 16:47:52 -05:00
|
|
|
from PyQt4 import QtCore, QtGui, uic
|
|
|
|
from PyQt4.QtCore import pyqtSignal, pyqtSlot
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
from PIL.ImageQt import ImageQt
|
|
|
|
import core
|
|
|
|
import time
|
|
|
|
from queue import Queue, Empty
|
|
|
|
import numpy
|
2017-06-06 05:04:42 -04:00
|
|
|
import os
|
|
|
|
from copy import copy
|
2015-03-02 16:47:52 -05:00
|
|
|
|
|
|
|
class Worker(QtCore.QObject):
|
|
|
|
|
|
|
|
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.core = core.Core()
|
|
|
|
self.queue = queue
|
2017-05-27 04:06:17 -04:00
|
|
|
self.core.settings = parent.settings
|
2017-05-28 07:34:34 -04:00
|
|
|
self.stackedWidget = parent.window.stackedWidget
|
2017-06-06 05:04:42 -04:00
|
|
|
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")))
|
|
|
|
|
2015-03-02 16:47:52 -05:00
|
|
|
|
|
|
|
|
2017-05-28 07:34:34 -04:00
|
|
|
@pyqtSlot(str, list)
|
2017-06-04 13:00:36 -04:00
|
|
|
def createPreviewImage(self, components):
|
2015-03-02 16:47:52 -05:00
|
|
|
# print('worker thread id: {}'.format(QtCore.QThread.currentThreadId()))
|
|
|
|
dic = {
|
2017-05-28 07:34:34 -04:00
|
|
|
"components": components,
|
2015-03-02 16:47:52 -05:00
|
|
|
}
|
|
|
|
self.queue.put(dic)
|
|
|
|
|
|
|
|
@pyqtSlot()
|
|
|
|
def process(self):
|
|
|
|
try:
|
|
|
|
nextPreviewInformation = self.queue.get(block=False)
|
|
|
|
while self.queue.qsize() >= 2:
|
|
|
|
try:
|
|
|
|
self.queue.get(block=False)
|
|
|
|
except Empty:
|
|
|
|
continue
|
|
|
|
|
2017-05-28 08:36:34 -04:00
|
|
|
width = int(self.core.settings.value('outputWidth'))
|
|
|
|
height = int(self.core.settings.value('outputHeight'))
|
2017-06-06 05:04:42 -04:00
|
|
|
frame = copy(self.background)
|
|
|
|
frame = frame.resize((width,height))
|
2015-03-02 16:47:52 -05:00
|
|
|
|
2017-05-28 07:34:34 -04:00
|
|
|
components = nextPreviewInformation["components"]
|
2017-06-03 20:29:25 -04:00
|
|
|
for component in reversed(components):
|
2017-06-04 13:00:36 -04:00
|
|
|
#newFrame = Image.alpha_composite(frame,)
|
|
|
|
frame = Image.alpha_composite(frame,component.previewRender(self))
|
2017-05-28 07:34:34 -04:00
|
|
|
|
|
|
|
self._image = ImageQt(frame)
|
2017-05-27 15:32:08 -04:00
|
|
|
self.imageCreated.emit(QtGui.QImage(self._image))
|
|
|
|
|
2015-03-02 16:47:52 -05:00
|
|
|
except Empty:
|
|
|
|
True
|