]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed generic art provider to scale bitmaps down to client-specific best size if...
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 16 Mar 2008 00:37:17 +0000 (00:37 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 16 Mar 2008 00:37:17 +0000 (00:37 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/artstd.cpp

index e7e113c851ee9c469ea578c69a8d68b9175ef15f..9dab2e587869c8b4fbea7855cdeb4a5a490d5498 100644 (file)
@@ -232,14 +232,26 @@ wxBitmap wxDefaultArtProvider::CreateBitmap(const wxArtID& id,
             {
                 int bmp_w = bmp.GetWidth();
                 int bmp_h = bmp.GetHeight();
-                // want default size but it's smaller, paste into transparent image
+
                 if ((bmp_h < bestSize.x) && (bmp_w < bestSize.y))
                 {
+                    // the caller wants default size, which is larger than 
+                    // the image we have; to avoid degrading it visually by
+                    // scaling it up, paste it into transparent image instead:
                     wxPoint offset((bestSize.x - bmp_w)/2, (bestSize.y - bmp_h)/2);
                     wxImage img = bmp.ConvertToImage();
                     img.Resize(bestSize, offset);
                     bmp = wxBitmap(img);
                 }
+                else // scale (down or mixed, but not up)
+                {
+                    wxImage img = bmp.ConvertToImage();
+                    bmp = wxBitmap
+                          (
+                              img.Scale(bestSize.x, bestSize.y,
+                                        wxIMAGE_QUALITY_HIGH)
+                          );
+                }
             }
         }
     }