From 8b0cd60be99ab481b7205b4760b97445f0152a56 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sun, 14 Mar 2021 10:24:14 +0100 Subject: [PATCH] Qt: Fix game icon canvas size --- rpcs3/rpcs3qt/game_list_frame.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/rpcs3/rpcs3qt/game_list_frame.cpp b/rpcs3/rpcs3qt/game_list_frame.cpp index f00d90bec3..9a07855be7 100644 --- a/rpcs3/rpcs3qt/game_list_frame.cpp +++ b/rpcs3/rpcs3qt/game_list_frame.cpp @@ -1812,19 +1812,20 @@ QPixmap game_list_frame::PaintedPixmap(QPixmap icon, bool paint_config_icon, boo // Calculate the centered size and position of the icon on our canvas. if (icon.width() != 320 || icon.height() != 176) { + ensure(icon.height() > 0); constexpr double target_ratio = 320.0 / 176.0; // aspect ratio 20:11 - if (canvas_size.width() > canvas_size.height()) + if ((icon.width() / static_cast(icon.height())) > target_ratio) { - canvas_size.setHeight(icon.width() / target_ratio); + canvas_size.setHeight(std::ceil(icon.width() * target_ratio)); } else { - canvas_size.setWidth(icon.height() * target_ratio); + canvas_size.setWidth(std::ceil(icon.height() * target_ratio)); } - target_pos.setX((canvas_size.width() - icon.width()) / 2.0); - target_pos.setY((canvas_size.height() - icon.height()) / 2.0); + target_pos.setX(std::max(0, (canvas_size.width() - icon.width()) / 2.0)); + target_pos.setY(std::max(0, (canvas_size.height() - icon.height()) / 2.0)); } // Create a canvas large enough to fit our entire scaled icon