浏览代码

LibGUI: Thumbnail keep the aspect ratio of the original file.

VAN BOSSUYT Nicolas 5 年之前
父节点
当前提交
f85aa8462f
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      Libraries/LibGUI/FileSystemModel.cpp

+ 7 - 1
Libraries/LibGUI/FileSystemModel.cpp

@@ -470,9 +470,15 @@ static RefPtr<Gfx::Bitmap> 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;
 }