import os from PySide6.QtCore import Qt, Signal, QPoint, QSize from PySide6.QtWidgets import QWidget from PySide6.QtGui import QPixmap, QPainter, QImage from Kikka.KikkaConst import * from .KikkaShell import ShellBase class ImageShellWindow(ShellBase): def __init__(self, parent=None): super().__init__(parent) self._size = QSize(512, 512) self._cavan_image = None self._pixmap = None def loadData(self, data): self._size = QSize(512, 512) img = QImage(os.path.join(RESOURCES_PATH, "shell.png")) self.setImage(img) self.repaint() def onKikkaOperation(self, operation, param): pass def setImage(self, image): # if isDebug: # image = self.debugDraw(image) self._cavan_image = QImage(self._size, QImage.Format.Format_ARGB32_Premultiplied) painter = QPainter(self._cavan_image) painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Source) painter.fillRect(self._cavan_image.rect(), Qt.GlobalColor.transparent) painter.end() del painter painter = QPainter(self._cavan_image) painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_SourceOver) painter.drawImage(QPoint(), image) painter.end() del painter # self._cavan_image.save("shell_image.png") pixmap = QPixmap().fromImage(image, Qt.ImageConversionFlag.AutoColor) self._pixmap = pixmap self.setFixedSize(self._pixmap.size()) self.setMask(self._pixmap.mask()) self.repaint() def paintEvent(self, event): if self._pixmap is None: return painter = QPainter(self) painter.drawPixmap(QPoint(), self._pixmap)