Fixed generic art provider to scale bitmaps down to client-specific best size if needed.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-03-16 00:37:17 +00:00
parent bea6ba2d3b
commit e6e780acb1

View 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)
);
}
}
}
}