def render() -> None: """renders all decks""" for deck_id, deck_state in state.items(): deck = decks.get(deck_id, None) if not deck: warn( f"{deck_id} has settings specified but is not seen. Likely unplugged!" ) continue page = get_page(deck_id) for button_id, button_settings in (deck_state.get("buttons", {}).get( page, {}).items() # type: ignore ): key = f"{deck_id}.{page}.{button_id}" if key in image_cache: image = image_cache[key][0] else: pil_image = _render_key_image(deck, **button_settings) image = ImageHelpers.PILHelper.to_native_format( deck, pil_image) qt_image = ImageQt(pil_image) qt_image = qt_image.convertToFormat(QImage.Format_ARGB32) pixmap = QPixmap(qt_image) image_cache[key] = (image, pixmap) with streamdecks_lock: deck.set_key_image(button_id, image)
def call(self, meta, jpeg): image = ImageQt(jpeg) image = image.convertToFormat(QtGui.QImage.Format_RGB888) self.newImage.emit(meta, image)