def qimage(self, size): stream = self.stream_for_size(size) qimage = QImage() qimage.loadFromData(stream.read()) return qimage
def create_retroarch_layout(self): if self.stretching() == self.STRETCH_FILL_SCREEN or not self.bezel(): return if not self.use_fullscreen(): return # FIXME: file cmp? paths = self.prepare_emulator_skin() print(paths) # FIXME: SUPPORT frame = 0 ( bezel = 0) option # FIXME: With no bezel, we should still use a black bezel to # hide screen stretching screen_width, screen_height = self.screen_size() # dst_x = 0 dst_y = 0 # dst_w = 0 # dst_w = 160 dst_h = screen_height # Bezel size is normalized against 1080 (height) scale = screen_height / 1080 # Bezel width: 160 dst_w = round(160 * scale) game_x, game_y, game_w, game_h = self.display_rect_fullscreen() from fsui.qt import Qt, QImage, QPainter, QRect, QSize image = QImage( QSize(screen_width, screen_height), QImage.Format_RGBA8888) image.fill(Qt.transparent) # painter = image.paintEngine() painter = QPainter(image) dst_x = game_x - dst_w left = QImage(paths["left"]) painter.drawImage(QRect(dst_x, dst_y, dst_w, dst_h), left) dst_x = game_x + game_w right = QImage(paths["right"]) painter.drawImage(QRect(dst_x, dst_y, dst_w, dst_h), right) painter.end() overlay_png_file = self.temp_file("overlay.png").path image.save(overlay_png_file) # noinspection SpellCheckingInspection overlay_config = ( """overlays = 1 overlay0_overlay = {overlay} overlay0_full_screen = true overlay0_rect = "0.0,0.0,1.0,1.0" overlay0_descs = 0 """.format(overlay=overlay_png_file)) # overlay_config = ( # """overlays = 2 # overlay0_overlay = {left} # overlay0_full_screen = true # overlay0_rect = "0.0,0.0,0.12,1.0" # overlay0_descs = 0 # overlay1_overlay = {right} # overlay1_full_screen = true # overlay1_rect = "0.8,0.0,0.2,1.0" # overlay1_descs = 0 # # """.format(left=paths["left"], right=paths["right"])) overlay_config_file = self.temp_file("overlay.cfg") with open(overlay_config_file.path, "w") as f: f.write(overlay_config) return overlay_config_file.path