X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e413198572959f013fc2537a3c8cc184c9ac820d..032e024c1c6ab6a20226604baab9d00558620e72:/include/wx/renderer.h diff --git a/include/wx/renderer.h b/include/wx/renderer.h index 1c54983345..c1b744ce61 100644 --- a/include/wx/renderer.h +++ b/include/wx/renderer.h @@ -41,6 +41,11 @@ class WXDLLIMPEXP_FWD_CORE wxWindow; #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 // ---------------------------------------------------------------------------- @@ -70,6 +75,19 @@ enum 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 // ---------------------------------------------------------------------------- @@ -254,19 +272,52 @@ public: // 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; + 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; + 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; + 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 - // Draw a native wxRadioButton (just the graphical portion) - virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0; // geometry functions // ------------------ @@ -386,7 +437,7 @@ public: 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) @@ -395,29 +446,53 @@ public: 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) + 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) + 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) + virtual void DrawTextCtrl(wxWindow* win, + wxDC& dc, + const wxRect& rect, + int flags = 0) { m_rendererNative.DrawTextCtrl( win, dc, rect, flags); } - virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) - { m_rendererNative.DrawRadioButton( 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); } @@ -428,7 +503,7 @@ public: protected: wxRendererNative& m_rendererNative; - DECLARE_NO_COPY_CLASS(wxDelegateRendererNative) + wxDECLARE_NO_COPY_CLASS(wxDelegateRendererNative); }; // ----------------------------------------------------------------------------