#undef wxHAS_NATIVE_RENDERER
#endif
+// only MSW and OS X currently provides DrawTitleBarBitmap() method
+#if defined(__WXMSW__) || (defined(__WXMAC__) && wxUSE_LIBPNG && wxUSE_IMAGE)
+ #define wxHAS_DRAW_TITLE_BAR_BITMAP
+#endif
+
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
wxCONTROL_DIRTY = 0x80000000
};
+// title bar buttons supported by DrawTitleBarBitmap()
+//
+// NB: they have the same values as wxTOPLEVEL_BUTTON_XXX constants in
+// wx/univ/toplevel.h as they really represent the same things
+enum wxTitleBarButton
+{
+ wxTITLEBAR_BUTTON_CLOSE = 0x01000000,
+ wxTITLEBAR_BUTTON_MAXIMIZE = 0x02000000,
+ wxTITLEBAR_BUTTON_ICONIZE = 0x04000000,
+ wxTITLEBAR_BUTTON_RESTORE = 0x08000000,
+ wxTITLEBAR_BUTTON_HELP = 0x10000000
+};
+
// ----------------------------------------------------------------------------
// helper structs
// ----------------------------------------------------------------------------
int m_labelAlignment;
};
-enum wxHeaderSortIconType {
+enum wxHeaderSortIconType
+{
wxHDR_SORT_ICON_NONE, // Header button has no sort arrow
- wxHDR_SORT_ICON_UP, // Header button an an up sort arrow icon
- wxHDR_SORT_ICON_DOWN // Header button an a down sort arrow icon
+ wxHDR_SORT_ICON_UP, // Header button an up sort arrow icon
+ wxHDR_SORT_ICON_DOWN // Header button a down sort arrow icon
};
// height if available, or a generic height based on the window's font.
virtual int GetHeaderButtonHeight(wxWindow *win) = 0;
+ // Returns the margin on left and right sides of header button's label
+ virtual int GetHeaderButtonMargin(wxWindow *win) = 0;
+
// draw the expanded/collapsed icon for a tree control item
virtual void DrawTreeItemButton(wxWindow *win,
// draw the focus rectangle around the label contained in the given rect
//
// only wxCONTROL_SELECTED makes sense in flags here
- virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0;
+ virtual void DrawFocusRect(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0) = 0;
+
+ // Draw a native wxChoice
+ virtual void DrawChoice(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0) = 0;
+
+ // Draw a native wxComboBox
+ virtual void DrawComboBox(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0) = 0;
+
+ // Draw a native wxTextCtrl frame
+ virtual void DrawTextCtrl(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0) = 0;
+
+ // Draw a native wxRadioButton bitmap
+ virtual void DrawRadioBitmap(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0) = 0;
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+ // Draw one of the standard title bar buttons
+ //
+ // This is currently implemented only for MSW and OS X (for the close
+ // button only) because there is no way to render standard title bar
+ // buttons under the other platforms, the best can be done is to use normal
+ // (only) images which wxArtProvider provides for wxART_HELP and
+ // wxART_CLOSE (but not any other title bar buttons)
+ //
+ // NB: make sure PNG handler is enabled if using this function under OS X
+ virtual void DrawTitleBarBitmap(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ wxTitleBarButton button,
+ int flags = 0) = 0;
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
+
// geometry functions
// ------------------
virtual int GetHeaderButtonHeight(wxWindow *win)
{ return m_rendererNative.GetHeaderButtonHeight(win); }
+ virtual int GetHeaderButtonMargin(wxWindow *win)
+ { return m_rendererNative.GetHeaderButtonMargin(win); }
+
virtual void DrawTreeItemButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
virtual void DrawCheckBox(wxWindow *win,
wxDC& dc,
const wxRect& rect,
- int flags = 0 )
+ int flags = 0)
{ m_rendererNative.DrawCheckBox( win, dc, rect, flags ); }
virtual wxSize GetCheckBoxSize(wxWindow *win)
virtual void DrawPushButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
- int flags = 0 )
+ int flags = 0)
{ m_rendererNative.DrawPushButton( win, dc, rect, flags ); }
virtual void DrawItemSelectionRect(wxWindow *win,
wxDC& dc,
const wxRect& rect,
- int flags = 0 )
+ int flags = 0)
{ m_rendererNative.DrawItemSelectionRect( win, dc, rect, flags ); }
- virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0)
+ virtual void DrawFocusRect(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0)
{ m_rendererNative.DrawFocusRect( win, dc, rect, flags ); }
+ virtual void DrawChoice(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0)
+ { m_rendererNative.DrawChoice( win, dc, rect, flags); }
+
+ virtual void DrawComboBox(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0)
+ { m_rendererNative.DrawComboBox( win, dc, rect, flags); }
+
+ virtual void DrawTextCtrl(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0)
+ { m_rendererNative.DrawTextCtrl( win, dc, rect, flags); }
+
+ virtual void DrawRadioBitmap(wxWindow* win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0)
+ { m_rendererNative.DrawRadioBitmap(win, dc, rect, flags); }
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+ virtual void DrawTitleBarBitmap(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ wxTitleBarButton button,
+ int flags = 0)
+ { m_rendererNative.DrawTitleBarBitmap(win, dc, rect, button, flags); }
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
+
virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
{ return m_rendererNative.GetSplitterParams(win); }
protected:
wxRendererNative& m_rendererNative;
- DECLARE_NO_COPY_CLASS(wxDelegateRendererNative)
+ wxDECLARE_NO_COPY_CLASS(wxDelegateRendererNative);
};
// ----------------------------------------------------------------------------