cache various bitmaps
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
cc4bc3a06b
commit
e3400e2eb9
@ -475,6 +475,14 @@ private:
|
|||||||
|
|
||||||
wxFont m_titlebarFont;
|
wxFont m_titlebarFont;
|
||||||
|
|
||||||
|
// the checked and unchecked bitmaps for DrawCheckItem()
|
||||||
|
wxBitmap m_bmpCheckBitmaps[IndicatorStatus_Max];
|
||||||
|
|
||||||
|
// the bitmaps returned by GetIndicator()
|
||||||
|
wxBitmap m_bmpIndicators[IndicatorType_Max]
|
||||||
|
[IndicatorState_Max]
|
||||||
|
[IndicatorStatus_Max];
|
||||||
|
|
||||||
// titlebar icons:
|
// titlebar icons:
|
||||||
wxBitmap m_bmpFrameButtons[FrameButton_Max];
|
wxBitmap m_bmpFrameButtons[FrameButton_Max];
|
||||||
|
|
||||||
@ -1068,7 +1076,7 @@ static const char *pressed_unchecked_radio_xpm[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char **
|
static const char **
|
||||||
bmpIndicators[IndicatorType_Max][IndicatorState_Max][IndicatorStatus_Max] =
|
xpmIndicators[IndicatorType_Max][IndicatorState_Max][IndicatorStatus_Max] =
|
||||||
{
|
{
|
||||||
// checkboxes first
|
// checkboxes first
|
||||||
{
|
{
|
||||||
@ -1110,6 +1118,12 @@ static const char **
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char **xpmChecked[IndicatorStatus_Max] =
|
||||||
|
{
|
||||||
|
checked_item_xpm,
|
||||||
|
unchecked_item_xpm
|
||||||
|
};
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@ -2171,8 +2185,16 @@ void wxWin32Renderer::DrawCheckItem(wxDC& dc,
|
|||||||
}
|
}
|
||||||
else // use default bitmap
|
else // use default bitmap
|
||||||
{
|
{
|
||||||
bmp = wxBitmap(flags & wxCONTROL_CHECKED ? checked_item_xpm
|
IndicatorStatus i = flags & wxCONTROL_CHECKED
|
||||||
: unchecked_item_xpm);
|
? IndicatorStatus_Checked
|
||||||
|
: IndicatorStatus_Unchecked;
|
||||||
|
|
||||||
|
if ( !m_bmpCheckBitmaps[i].Ok() )
|
||||||
|
{
|
||||||
|
m_bmpCheckBitmaps[i] = wxBitmap(xpmChecked[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
bmp = m_bmpCheckBitmaps[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
dc.DrawBitmap(bmp, rect.x, rect.y + (rect.height - bmp.GetHeight()) / 2 - 1,
|
dc.DrawBitmap(bmp, rect.x, rect.y + (rect.height - bmp.GetHeight()) / 2 - 1,
|
||||||
@ -2207,14 +2229,19 @@ wxBitmap wxWin32Renderer::GetIndicator(IndicatorType indType, int flags)
|
|||||||
? IndicatorStatus_Checked
|
? IndicatorStatus_Checked
|
||||||
: IndicatorStatus_Unchecked;
|
: IndicatorStatus_Unchecked;
|
||||||
|
|
||||||
const char **xpm = bmpIndicators[indType][indState][indStatus];
|
wxBitmap bmp = m_bmpIndicators[indType][indState][indStatus];
|
||||||
if (xpm)
|
if ( !bmp.Ok() )
|
||||||
{
|
{
|
||||||
wxBitmap bmp(xpm);
|
const char **xpm = xpmIndicators[indType][indState][indStatus];
|
||||||
return bmp;
|
if ( xpm )
|
||||||
|
{
|
||||||
|
// create and cache it
|
||||||
|
bmp = wxBitmap(xpm);
|
||||||
|
m_bmpIndicators[indType][indState][indStatus] = bmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return wxNullBitmap;
|
return bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWin32Renderer::DrawCheckOrRadioButton(wxDC& dc,
|
void wxWin32Renderer::DrawCheckOrRadioButton(wxDC& dc,
|
||||||
|
Loading…
Reference in New Issue
Block a user