diff --git a/include/wx/bmpbndl.h b/include/wx/bmpbndl.h index 6657fb8056..c0813b1cc4 100644 --- a/include/wx/bmpbndl.h +++ b/include/wx/bmpbndl.h @@ -109,6 +109,11 @@ public: // If size == wxDefaultSize, GetDefaultSize() is used for it instead. wxBitmap GetBitmap(const wxSize& size) const; + // Helper combining GetBitmap() and GetPreferredSizeFor(): returns the + // bitmap of the size appropriate for the current DPI scaling of the given + // window. + wxBitmap GetBitmapFor(const wxWindow* window) const; + // Access implementation wxBitmapBundleImpl* GetImpl() const { return m_impl.get(); } diff --git a/interface/wx/bmpbndl.h b/interface/wx/bmpbndl.h index 5e8b111358..49cd69f233 100644 --- a/interface/wx/bmpbndl.h +++ b/interface/wx/bmpbndl.h @@ -288,6 +288,19 @@ public: consume resources until the application termination. */ wxBitmap GetBitmap(const wxSize& size) const; + + /** + Get bitmap of the size appropriate for the DPI scaling used by the + given window. + + This helper function simply combines GetBitmap() and + GetPreferredSizeFor(), i.e. it returns a (normally unscaled) bitmap + from the bundle of the closest size to the size that should be used at + the DPI scaling of the provided window. + + @param window Non-null and fully created window. + */ + wxBitmap GetBitmapFor(const wxWindow* window) const; }; /** diff --git a/src/common/bmpbndl.cpp b/src/common/bmpbndl.cpp index 202c1fc435..c310fce88f 100644 --- a/src/common/bmpbndl.cpp +++ b/src/common/bmpbndl.cpp @@ -407,6 +407,11 @@ wxBitmap wxBitmapBundle::GetBitmap(const wxSize& size) const return bmp; } +wxBitmap wxBitmapBundle::GetBitmapFor(const wxWindow* window) const +{ + return GetBitmap(GetPreferredSizeFor(window)); +} + // ============================================================================ // wxBitmapBundleImpl implementation // ============================================================================