git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14218
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
+ // 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:
wxBitmap m_bmpFrameButtons[FrameButton_Max];
// titlebar icons:
wxBitmap m_bmpFrameButtons[FrameButton_Max];
- bmpIndicators[IndicatorType_Max][IndicatorState_Max][IndicatorStatus_Max] =
+ xpmIndicators[IndicatorType_Max][IndicatorState_Max][IndicatorStatus_Max] =
+static const char **xpmChecked[IndicatorStatus_Max] =
+{
+ checked_item_xpm,
+ unchecked_item_xpm
+};
+
// ============================================================================
// implementation
// ============================================================================
// ============================================================================
// implementation
// ============================================================================
}
else // use default bitmap
{
}
else // use default bitmap
{
- bmp = wxBitmap(flags & wxCONTROL_CHECKED ? checked_item_xpm
- : unchecked_item_xpm);
+ IndicatorStatus i = flags & wxCONTROL_CHECKED
+ ? 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,
? IndicatorStatus_Checked
: IndicatorStatus_Unchecked;
? IndicatorStatus_Checked
: IndicatorStatus_Unchecked;
- const char **xpm = bmpIndicators[indType][indState][indStatus];
- if (xpm)
+ wxBitmap bmp = m_bmpIndicators[indType][indState][indStatus];
+ if ( !bmp.Ok() )
- wxBitmap bmp(xpm);
- return bmp;
+ const char **xpm = xpmIndicators[indType][indState][indStatus];
+ if ( xpm )
+ {
+ // create and cache it
+ bmp = wxBitmap(xpm);
+ m_bmpIndicators[indType][indState][indStatus] = bmp;
+ }
- else
- return wxNullBitmap;
}
void wxWin32Renderer::DrawCheckOrRadioButton(wxDC& dc,
}
void wxWin32Renderer::DrawCheckOrRadioButton(wxDC& dc,