Adaptive cover resolution for still images
This commit is contained in:
@@ -62,22 +62,23 @@ def get_game(task, current_time, parent_widget, row):
|
||||
|
||||
game_cover = GdkPixbuf.Pixbuf.new_from_stream_at_scale(
|
||||
tmp_file.read(), 2, 2, False
|
||||
).scale_simple(400, 600, GdkPixbuf.InterpType.BILINEAR)
|
||||
).scale_simple(*parent_widget.image_size, GdkPixbuf.InterpType.BILINEAR)
|
||||
|
||||
itch_pixbuf = GdkPixbuf.Pixbuf.new_from_stream(tmp_file.read())
|
||||
itch_pixbuf = itch_pixbuf.scale_simple(
|
||||
400,
|
||||
itch_pixbuf.get_height() * (400 / itch_pixbuf.get_width()),
|
||||
parent_widget.image_size[0],
|
||||
itch_pixbuf.get_height()
|
||||
* (parent_widget.image_size[0] / itch_pixbuf.get_width()),
|
||||
GdkPixbuf.InterpType.BILINEAR,
|
||||
)
|
||||
itch_pixbuf.composite(
|
||||
game_cover,
|
||||
0,
|
||||
(600 - itch_pixbuf.get_height()) / 2,
|
||||
(parent_widget.image_size[1] - itch_pixbuf.get_height()) / 2,
|
||||
itch_pixbuf.get_width(),
|
||||
itch_pixbuf.get_height(),
|
||||
0,
|
||||
(600 - itch_pixbuf.get_height()) / 2,
|
||||
(parent_widget.image_size[1] - itch_pixbuf.get_height()) / 2,
|
||||
1.0,
|
||||
1.0,
|
||||
GdkPixbuf.InterpType.BILINEAR,
|
||||
|
||||
@@ -56,7 +56,7 @@ def save_cover(
|
||||
elif not pixbuf:
|
||||
try:
|
||||
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
|
||||
str(cover_path), 400, 600, False
|
||||
str(cover_path), *parent_widget.image_size, False
|
||||
)
|
||||
except GLib.GError:
|
||||
return
|
||||
|
||||
@@ -23,10 +23,10 @@ import struct
|
||||
from pathlib import Path
|
||||
from shutil import rmtree
|
||||
|
||||
from gi.repository import Adw, GdkPixbuf, Gio, GLib, Gtk
|
||||
from gi.repository import Adw, Gdk, GdkPixbuf, Gio, GLib, Gtk
|
||||
|
||||
from .game_cover import GameCover
|
||||
from .game import game
|
||||
from .game_cover import GameCover
|
||||
from .get_games import get_games
|
||||
from .save_game import save_game
|
||||
|
||||
@@ -104,6 +104,12 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
||||
self.overview.set_clip_overlay(self.overview_box, False)
|
||||
|
||||
self.schema = Gio.Settings.new("hu.kramo.Cartridges")
|
||||
scale_factor = max(
|
||||
monitor.get_scale_factor()
|
||||
for monitor in Gdk.Display.get_default().get_monitors()
|
||||
)
|
||||
self.image_size = (200 * scale_factor, 300 * scale_factor)
|
||||
|
||||
games = get_games(self)
|
||||
for game_id in games:
|
||||
if "removed" in games[game_id]:
|
||||
|
||||
Reference in New Issue
Block a user