diff options
| author | Brianna | 2017-07-15 19:40:08 -0400 |
|---|---|---|
| committer | GitHub | 2017-07-15 19:40:08 -0400 |
| commit | f420ad69f5f6f3c830fea890a760ce0ce61ba571 (patch) | |
| tree | 2a7f9df3eebbae8da4317516f84dfe7490b5d36a /src/preview_thread.py | |
| parent | 94d4acc1f4f4abe4029e8f9c050932b67cae8cec (diff) | |
| parent | bcb8f27c2e4434d2296dcd66bf279b76ee0d0a4f (diff) | |
Merge audio-mixing branch
some basic audio features + more user feedback + merging static components
Diffstat (limited to 'src/preview_thread.py')
| -rw-r--r-- | src/preview_thread.py | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/src/preview_thread.py b/src/preview_thread.py index 95a26ec..4ffb7f6 100644 --- a/src/preview_thread.py +++ b/src/preview_thread.py @@ -10,12 +10,12 @@ import core from queue import Queue, Empty import os -from frame import FloodFrame +from frame import Checkerboard class Worker(QtCore.QObject): - imageCreated = pyqtSignal(['QImage']) + imageCreated = pyqtSignal(QtGui.QImage) error = pyqtSignal() def __init__(self, parent=None, queue=None): @@ -24,14 +24,12 @@ class Worker(QtCore.QObject): parent.processTask.connect(self.process) self.parent = parent self.core = self.parent.core + self.settings = self.parent.core.settings self.queue = queue - self.core.settings = parent.settings - self.stackedWidget = parent.window.stackedWidget - # create checkerboard background to represent transparency - self.background = FloodFrame(1920, 1080, (0, 0, 0, 0)) - self.background.paste(Image.open(os.path.join( - self.core.wd, "background.png"))) + width = int(self.settings.value('outputWidth')) + height = int(self.settings.value('outputHeight')) + self.background = Checkerboard(width, height) @pyqtSlot(list) def createPreviewImage(self, components): @@ -42,6 +40,8 @@ class Worker(QtCore.QObject): @pyqtSlot() def process(self): + width = int(self.settings.value('outputWidth')) + height = int(self.settings.value('outputHeight')) try: nextPreviewInformation = self.queue.get(block=False) while self.queue.qsize() >= 2: @@ -50,33 +50,42 @@ class Worker(QtCore.QObject): except Empty: continue - width = int(self.core.settings.value('outputWidth')) - height = int(self.core.settings.value('outputHeight')) + if self.background.width != width \ + or self.background.height != height: + self.background = Checkerboard(width, height) + frame = self.background.copy() - frame = frame.resize((width, height)) components = nextPreviewInformation["components"] for component in reversed(components): try: + newFrame = component.previewRender(self) frame = Image.alpha_composite( - frame, component.previewRender(self) + frame, newFrame ) except ValueError as e: + errMsg = "Bad frame returned by %s's preview renderer. " \ + "%s. New frame size was %s*%s; should be %s*%s. " \ + "This is a fatal error." % ( + str(component), str(e).capitalize(), + newFrame.width, newFrame.height, + width, height + ) + print(errMsg) self.parent.showMessage( - msg="Bad frame returned by %s's previewRender method. " - "This is a fatal error." % - str(component), + msg=errMsg, detail=str(e), icon='Warning', - parent=None # mainwindow is in a different thread + parent=None # MainWindow is in a different thread ) - from frame import BlankFrame - self.imageCreated.emit(ImageQt(BlankFrame)) self.error.emit() break + except RuntimeError as e: + print(e) else: - self.imageCreated.emit(ImageQt(frame)) + self.frame = ImageQt(frame) + self.imageCreated.emit(QtGui.QImage(self.frame)) except Empty: True |
