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/branches/WX_2_8_BRANCH@52561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -125,6 +125,8 @@ All (GUI):
|
||||
- Added wxSizer::ComputeFittingClientSize() and ComputeFittingWindowSize().
|
||||
- Fixed wxSizer::SetSizeHints() to work when the best size decreases.
|
||||
- Fixed crash in wxHtmlHelpController if the help window is still open.
|
||||
- Fixed generic art provider to scale bitmaps down to client-specific
|
||||
best size if needed.
|
||||
|
||||
All (Unix):
|
||||
|
||||
|
@@ -235,14 +235,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)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user