summaryrefslogtreecommitdiff
path: root/wx+/bitmap_button.h
diff options
context:
space:
mode:
Diffstat (limited to 'wx+/bitmap_button.h')
-rw-r--r--wx+/bitmap_button.h23
1 files changed, 12 insertions, 11 deletions
diff --git a/wx+/bitmap_button.h b/wx+/bitmap_button.h
index bbae6397..a3f160e8 100644
--- a/wx+/bitmap_button.h
+++ b/wx+/bitmap_button.h
@@ -36,7 +36,7 @@ public:
};
//wxButton::SetBitmap() also supports "image + text", but screws up proper gap and border handling
-void setBitmapTextLabel(wxBitmapButton& btn, const wxImage& img, const wxString& text, int gap = fastFromDIP(5), int border = fastFromDIP(5));
+void setBitmapTextLabel(wxBitmapButton& btn, const wxImage& img, const wxString& text, int gap = dipToWxsize(5), int border = dipToWxsize(5));
//set bitmap label flicker free:
void setImage(wxAnyButton& button, const wxImage& bmp);
@@ -65,12 +65,12 @@ void setBitmapTextLabel(wxBitmapButton& btn, const wxImage& img, const wxString&
wxImage imgTxt = createImageFromText(text, btn.GetFont(), btn.GetForegroundColour());
if (img.IsOk())
imgTxt = btn.GetLayoutDirection() != wxLayout_RightToLeft ?
- stackImages(img, imgTxt, ImageStackLayout::horizontal, ImageStackAlignment::center, gap) :
- stackImages(imgTxt, img, ImageStackLayout::horizontal, ImageStackAlignment::center, gap);
+ stackImages(img, imgTxt, ImageStackLayout::horizontal, ImageStackAlignment::center, wxsizeToScreen(gap)) :
+ stackImages(imgTxt, img, ImageStackLayout::horizontal, ImageStackAlignment::center, wxsizeToScreen(gap));
//SetMinSize() instead of SetSize() is needed here for wxWindows layout determination to work correctly
- btn.SetMinSize({imgTxt.GetWidth () + 2 * border,
- std::max(imgTxt.GetHeight() + 2 * border, getDefaultButtonHeight())});
+ btn.SetMinSize({screenToWxsize(imgTxt.GetWidth()) + 2 * border,
+ std::max(screenToWxsize(imgTxt.GetHeight()) + 2 * border, getDefaultButtonHeight())});
setImage(btn, imgTxt);
}
@@ -107,11 +107,12 @@ inline
wxImage generatePressedButtonBack(const wxSize& sz)
{
#if 1
- return rectangleImage(sz, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW), {0x11, 0x79, 0xfe} /*light blue*/, fastFromDIP(2));
+ return rectangleImage(sz, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW), {0x11, 0x79, 0xfe} /*light blue*/, dipToScreen(2));
#else //rectangle border with gradient as background
- wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
- bmp.SetScaleFactor(getDisplayScaleFactor());
+ wxBitmap bmp(wxsizeToScreen(sz.x),
+ wxsizeToScreen(sz.y)); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
+ bmp.SetScaleFactor(getScreenDpiScale());
{
//draw rectangle border with gradient
const wxColor colFrom = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
@@ -120,9 +121,9 @@ wxImage generatePressedButtonBack(const wxSize& sz)
wxMemoryDC dc(bmp);
dc.SetPen(*wxTRANSPARENT_PEN); //wxTRANSPARENT_PEN is about 2x faster than redundantly drawing with col!
- wxRect rect(bmp.GetSize());
+ wxRect rect(sz);
- const int borderSize = fastFromDIP(3);
+ const int borderSize = dipToWxsize(3);
for (int i = 1 ; i <= borderSize; ++i)
{
const wxColor colGradient((colFrom.Red () * (borderSize - i) + colTo.Red () * i) / borderSize,
@@ -130,7 +131,7 @@ wxImage generatePressedButtonBack(const wxSize& sz)
(colFrom.Blue () * (borderSize - i) + colTo.Blue () * i) / borderSize);
dc.SetBrush(colGradient);
dc.DrawRectangle(rect);
- rect.Deflate(1);
+ rect.Deflate(dipToWxsize(1));
}
dc.SetBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
bgstack15