Hack up wx to support @2x images in the toolbar. Oh please let's switch to Qt...

This commit is contained in:
comex 2013-09-25 02:03:32 -04:00
parent 624c92f97e
commit 693cee36cb
3 changed files with 25 additions and 15 deletions

View File

@ -305,7 +305,13 @@ wxBitmap::
#endif #endif
ConvertToDisabled(unsigned char brightness) const ConvertToDisabled(unsigned char brightness) const
{ {
return ConvertToImage().ConvertToDisabled(brightness); // XXX comex: scale support
wxImage disabledImage = ConvertToImage().ConvertToDisabled(brightness);
#ifdef __APPLE__
return wxBitmap(disabledImage, -1, GetScaleFactor());
#else
return disabledImage;
#endif
} }
#endif // wxUSE_IMAGE #endif // wxUSE_IMAGE

View File

@ -1,3 +1,4 @@
// XXX comex: scale support
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Name: src/aui/auibar.cpp // Name: src/aui/auibar.cpp
@ -279,11 +280,11 @@ void wxAuiDefaultToolBarArt::DrawButton(
{ {
bmpX = rect.x + bmpX = rect.x +
(rect.width/2) - (rect.width/2) -
(item.GetBitmap().GetWidth()/2); (item.GetBitmap().GetScaledWidth()/2);
bmpY = rect.y + bmpY = rect.y +
((rect.height-textHeight)/2) - ((rect.height-textHeight)/2) -
(item.GetBitmap().GetHeight()/2); (item.GetBitmap().GetScaledHeight()/2);
textX = rect.x + (rect.width/2) - (textWidth/2) + 1; textX = rect.x + (rect.width/2) - (textWidth/2) + 1;
textY = rect.y + rect.height - textHeight - 1; textY = rect.y + rect.height - textHeight - 1;
@ -294,9 +295,9 @@ void wxAuiDefaultToolBarArt::DrawButton(
bmpY = rect.y + bmpY = rect.y +
(rect.height/2) - (rect.height/2) -
(item.GetBitmap().GetHeight()/2); (item.GetBitmap().GetScaledHeight()/2);
textX = bmpX + 3 + item.GetBitmap().GetWidth(); textX = bmpX + 3 + item.GetBitmap().GetScaledWidth();
textY = rect.y + textY = rect.y +
(rect.height/2) - (rect.height/2) -
(textHeight/2); (textHeight/2);
@ -390,20 +391,20 @@ void wxAuiDefaultToolBarArt::DrawDropDownButton(
dropBmpX = dropDownRect.x + dropBmpX = dropDownRect.x +
(dropDownRect.width/2) - (dropDownRect.width/2) -
(m_buttonDropDownBmp.GetWidth()/2); (m_buttonDropDownBmp.GetScaledWidth()/2);
dropBmpY = dropDownRect.y + dropBmpY = dropDownRect.y +
(dropDownRect.height/2) - (dropDownRect.height/2) -
(m_buttonDropDownBmp.GetHeight()/2); (m_buttonDropDownBmp.GetScaledHeight()/2);
if (m_textOrientation == wxAUI_TBTOOL_TEXT_BOTTOM) if (m_textOrientation == wxAUI_TBTOOL_TEXT_BOTTOM)
{ {
bmpX = buttonRect.x + bmpX = buttonRect.x +
(buttonRect.width/2) - (buttonRect.width/2) -
(item.GetBitmap().GetWidth()/2); (item.GetBitmap().GetScaledWidth()/2);
bmpY = buttonRect.y + bmpY = buttonRect.y +
((buttonRect.height-textHeight)/2) - ((buttonRect.height-textHeight)/2) -
(item.GetBitmap().GetHeight()/2); (item.GetBitmap().GetScaledHeight()/2);
textX = rect.x + (rect.width/2) - (textWidth/2) + 1; textX = rect.x + (rect.width/2) - (textWidth/2) + 1;
textY = rect.y + rect.height - textHeight - 1; textY = rect.y + rect.height - textHeight - 1;
@ -414,9 +415,9 @@ void wxAuiDefaultToolBarArt::DrawDropDownButton(
bmpY = rect.y + bmpY = rect.y +
(rect.height/2) - (rect.height/2) -
(item.GetBitmap().GetHeight()/2); (item.GetBitmap().GetScaledHeight()/2);
textX = bmpX + 3 + item.GetBitmap().GetWidth(); textX = bmpX + 3 + item.GetBitmap().GetScaledWidth();
textY = rect.y + textY = rect.y +
(rect.height/2) - (rect.height/2) -
(textHeight/2); (textHeight/2);
@ -553,8 +554,8 @@ wxSize wxAuiDefaultToolBarArt::GetToolSize(
if (!item.GetBitmap().IsOk() && !(m_flags & wxAUI_TB_TEXT)) if (!item.GetBitmap().IsOk() && !(m_flags & wxAUI_TB_TEXT))
return wxSize(16,16); return wxSize(16,16);
int width = item.GetBitmap().GetWidth(); int width = item.GetBitmap().GetScaledWidth();
int height = item.GetBitmap().GetHeight(); int height = item.GetBitmap().GetScaledHeight();
if (m_flags & wxAUI_TB_TEXT) if (m_flags & wxAUI_TB_TEXT)
{ {
@ -694,8 +695,8 @@ void wxAuiDefaultToolBarArt::DrawOverflowButton(wxDC& dc,
} }
} }
int x = rect.x+1+(rect.width-m_overflowBmp.GetWidth())/2; int x = rect.x+1+(rect.width-m_overflowBmp.GetScaledWidth())/2;
int y = rect.y+1+(rect.height-m_overflowBmp.GetHeight())/2; int y = rect.y+1+(rect.height-m_overflowBmp.GetScaledHeight())/2;
dc.DrawBitmap(m_overflowBmp, x, y, true); dc.DrawBitmap(m_overflowBmp, x, y, true);
} }

View File

@ -1225,6 +1225,8 @@ bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
{ {
UnRef(); UnRef();
// XXX comex: how exactly is this supposed to work!? @2x support isn't used in this case
/*
wxBitmapHandler *handler = FindHandler(type); wxBitmapHandler *handler = FindHandler(type);
if ( handler ) if ( handler )
@ -1234,6 +1236,7 @@ bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
return handler->LoadFile(this, filename, type, -1, -1); return handler->LoadFile(this, filename, type, -1, -1);
} }
else else
*/
{ {
#if wxUSE_IMAGE #if wxUSE_IMAGE
double scale = 1.0; double scale = 1.0;