From f85aa8462f2893cf6e719f7c17005ec44a1e9705 Mon Sep 17 00:00:00 2001 From: VAN BOSSUYT Nicolas Date: Tue, 7 Apr 2020 20:38:54 +0200 Subject: [PATCH] LibGUI: Thumbnail keep the aspect ratio of the original file. --- Libraries/LibGUI/FileSystemModel.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Libraries/LibGUI/FileSystemModel.cpp b/Libraries/LibGUI/FileSystemModel.cpp index 06204dd301..11878536bf 100644 --- a/Libraries/LibGUI/FileSystemModel.cpp +++ b/Libraries/LibGUI/FileSystemModel.cpp @@ -470,9 +470,15 @@ static RefPtr render_thumbnail(const StringView& path) auto png_bitmap = Gfx::Bitmap::load_from_file(path); if (!png_bitmap) return nullptr; + + double scale = min(32 / (double)png_bitmap->width(), 32 / (double)png_bitmap->height()); + auto thumbnail = Gfx::Bitmap::create(png_bitmap->format(), { 32, 32 }); + Gfx::Rect destination = Gfx::Rect(0, 0, (int)(png_bitmap->width() * scale), (int)(png_bitmap->height() * scale)); + destination.center_within(thumbnail->rect()); + Painter painter(*thumbnail); - painter.draw_scaled_bitmap(thumbnail->rect(), *png_bitmap, png_bitmap->rect()); + painter.draw_scaled_bitmap(destination, *png_bitmap, png_bitmap->rect()); return thumbnail; }