X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92c32bbee7cde97f465a5632734d63f050f5d550..c29c95fe24973b94fd724db767193171ca7c513d:/interface/wx/renderer.h diff --git a/interface/wx/renderer.h b/interface/wx/renderer.h index 61f3f56c07..f6b55e934f 100644 --- a/interface/wx/renderer.h +++ b/interface/wx/renderer.h @@ -3,7 +3,7 @@ // Purpose: interface of wxRendererNative // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @@ -56,6 +56,18 @@ enum wxCONTROL_UNDETERMINED = wxCONTROL_CHECKABLE }; +/** + Title bar buttons supported by wxRendererNative::DrawTitleBarBitmap(). + */ +enum wxTitleBarButton +{ + wxTITLEBAR_BUTTON_CLOSE = 0x01000000, + wxTITLEBAR_BUTTON_MAXIMIZE = 0x02000000, + wxTITLEBAR_BUTTON_ICONIZE = 0x04000000, + wxTITLEBAR_BUTTON_RESTORE = 0x08000000, + wxTITLEBAR_BUTTON_HELP = 0x10000000 +}; + /** @struct wxSplitterRenderParams @@ -132,8 +144,9 @@ enum wxHeaderSortIconType @class wxDelegateRendererNative wxDelegateRendererNative allows reuse of renderers code by forwarding all the - wxRendererNative methods to the given object and thus allowing you to only - modify some of its methods -- without having to reimplement all of them. + wxRendererNative methods to the given object and + thus allowing you to only modify some of its methods -- without having to + reimplement all of them. Note that the "normal", inheritance-based approach, doesn't work with the renderers as it is impossible to derive from a class unknown at compile-time @@ -145,11 +158,11 @@ enum wxHeaderSortIconType by using this class. Except for the constructor, it has exactly the same methods as - wxRendererNative and their implementation is trivial: they are simply forwarded - to the real renderer. Note that the "real" renderer may, in turn, be a - wxDelegateRendererNative as well and that there may be arbitrarily many levels - like this -- but at the end of the chain there must be a real renderer which - does the drawing. + wxRendererNative and their implementation is + trivial: they are simply forwarded to the real renderer. Note that the "real" + renderer may, in turn, be a wxDelegateRendererNative as well and that there may + be arbitrarily many levels like this -- but at the end of the chain there must + be a real renderer which does the drawing. @library{wxcore} @category{gdi} @@ -191,6 +204,8 @@ public: virtual int GetHeaderButtonHeight(wxWindow *win); + virtual int GetHeaderButtonMargin(wxWindow *win); + virtual void DrawTreeItemButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0); @@ -210,7 +225,7 @@ public: virtual void DrawCheckBox(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0 ); - virtual wxSize GetCheckBoxSize() const; + virtual wxSize GetCheckBoxSize(wxWindow *win); virtual void DrawPushButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0 ); @@ -335,7 +350,7 @@ public: @c wxCONTROL_DISABLED and @c wxCONTROL_CURRENT bits, see @ref wxCONTROL_FLAGS. @return - The optimal width to contain the the unabreviated label text or + The optimal width to contain the unabbreviated label text or bitmap, the sort arrow if present, and internal margins. */ virtual int DrawHeaderButton(wxWindow* win, wxDC& dc, const wxRect& rect, @@ -350,7 +365,7 @@ public: @c wxCONTROL_DISABLED and @c wxCONTROL_CURRENT bits, see @ref wxCONTROL_FLAGS. @return - The optimal width to contain the the unabreviated label text or + The optimal width to contain the unabbreviated label text or bitmap, the sort arrow if present, and internal margins. */ virtual int DrawHeaderButtonContents(wxWindow* win, wxDC& dc, @@ -365,7 +380,7 @@ public: which are selected (e.g. often a blue rectangle) and @c wxCONTROL_CURRENT for the item that has the focus (often a dotted line around the item's text). @c wxCONTROL_FOCUSED may be used to indicate if the control has the focus - (othewise the the selection rectangle is e.g. often grey and not blue). + (otherwise the selection rectangle is e.g. often grey and not blue). This may be ignored by the renderer or deduced by the code directly from the @a win. */ @@ -408,22 +423,46 @@ public: /** 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 (just the button image, not the text) + Draw a native wxRadioButton bitmap. */ - virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0; + virtual void DrawRadioBitmap(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0; + + /** + Draw a title bar button in the given state. + + This function is currently only available under MSW and OS X (and only + for wxTITLEBAR_BUTTON_CLOSE under the latter), its best replacement for + the other platforms is to use wxArtProvider to retrieve the bitmaps for + @c wxART_HELP and @c wxART_CLOSE (but not any other title bar buttons + and not for any state but normal, i.e. not pressed and not current one). + + The presence of this function is indicated by @c + wxHAS_DRAW_TITLE_BAR_BITMAP symbol being defined. + + Also notice that PNG handler must be enabled using wxImage::AddHandler() + to use this function under OS X currently as the bitmaps are embedded + in the library itself in PNG format. + + @since 2.9.1 + */ + virtual void DrawTitleBarBitmap(wxWindow *win, + wxDC& dc, + const wxRect& rect, + wxTitleBarButton button, + int flags = 0) = 0; /** Return the currently used renderer. @@ -447,19 +486,27 @@ public: /** Returns the size of a check box. + The @a win parameter is not used currently and can be @NULL. */ - virtual wxSize GetCheckBoxSize() const = 0; + virtual wxSize GetCheckBoxSize(wxWindow* win) = 0; /** Returns the height of a header button, either a fixed platform height if - available, or a - generic height based on the window's font. + available, or a generic height based on the @a win window's font. */ virtual int GetHeaderButtonHeight(wxWindow* win) = 0; /** - Get the splitter parameters, see - wxSplitterRenderParams. + Returns the horizontal margin on the left and right sides of header + button's label. + + @since 2.9.2 + */ + virtual int GetHeaderButtonMargin(wxWindow *win) = 0; + + /** + Get the splitter parameters, see wxSplitterRenderParams. + The @a win parameter should be a wxSplitterWindow. */ virtual wxSplitterRenderParams GetSplitterParams(const wxWindow* win) = 0;