X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fb61f58a73b53c1340ef0ec12a883826db6d436a..4f29051b4e53fd2265005d4ec6bf727abd32493a:/include/wx/renderer.h diff --git a/include/wx/renderer.h b/include/wx/renderer.h index 9345586fea..9b84247093 100644 --- a/include/wx/renderer.h +++ b/include/wx/renderer.h @@ -25,8 +25,8 @@ #ifndef _WX_RENDERER_H_ #define _WX_RENDERER_H_ -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxWindow; +class WXDLLIMPEXP_FWD_CORE wxDC; +class WXDLLIMPEXP_FWD_CORE wxWindow; #include "wx/gdicmn.h" // for wxPoint #include "wx/colour.h" @@ -56,6 +56,7 @@ enum wxCONTROL_ISSUBMENU = wxCONTROL_SPECIAL, // only for the menu items wxCONTROL_EXPANDED = wxCONTROL_SPECIAL, // only for the tree items wxCONTROL_SIZEGRIP = wxCONTROL_SPECIAL, // only for the status bar panes + wxCONTROL_FLAT = wxCONTROL_SPECIAL, // checkboxes only: flat border wxCONTROL_CURRENT = 0x00000010, // mouse is currently over the control wxCONTROL_SELECTED = 0x00000020, // selected item in e.g. listbox wxCONTROL_CHECKED = 0x00000040, // (check/radio button) is checked @@ -74,7 +75,7 @@ enum // ---------------------------------------------------------------------------- // wxSplitterWindow parameters -struct WXDLLEXPORT wxSplitterRenderParams +struct WXDLLIMPEXP_CORE wxSplitterRenderParams { // the only way to initialize this struct is by using this ctor wxSplitterRenderParams(wxCoord widthSash_, wxCoord border_, bool isSens_) @@ -94,7 +95,7 @@ struct WXDLLEXPORT wxSplitterRenderParams // extra optional parameters for DrawHeaderButton -struct WXDLLEXPORT wxHeaderButtonParams +struct WXDLLIMPEXP_CORE wxHeaderButtonParams { wxHeaderButtonParams() : m_labelAlignment(wxALIGN_LEFT) @@ -117,7 +118,7 @@ enum wxHeaderSortIconType { // wxRendererNative interface version -struct WXDLLEXPORT wxRendererVersion +struct WXDLLIMPEXP_CORE wxRendererVersion { wxRendererVersion(int version_, int age_) : version(version_), age(age_) { } @@ -151,14 +152,15 @@ struct WXDLLEXPORT wxRendererVersion // wxRendererNative: abstracts drawing methods needed by the native controls // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxRendererNative +class WXDLLIMPEXP_CORE wxRendererNative { public: // drawing functions // ----------------- - // draw the header control button (used by wxListCtrl) - virtual void DrawHeaderButton(wxWindow *win, + // draw the header control button (used by wxListCtrl) Returns optimal + // width for the label contents. + virtual int DrawHeaderButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0, @@ -168,7 +170,7 @@ public: // Draw the contents of a header control button (label, sort arrows, etc.) // Normally only called by DrawHeaderButton. - virtual void DrawHeaderButtonContents(wxWindow *win, + virtual int DrawHeaderButtonContents(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0, @@ -245,6 +247,11 @@ public: const wxRect& rect, int flags = 0) = 0; + // 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; + // geometry functions // ------------------ @@ -298,7 +305,7 @@ public: // wxDelegateRendererNative: allows reuse of renderers code // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDelegateRendererNative : public wxRendererNative +class WXDLLIMPEXP_CORE wxDelegateRendererNative : public wxRendererNative { public: wxDelegateRendererNative() @@ -308,21 +315,21 @@ public: : m_rendererNative(rendererNative) { } - virtual void DrawHeaderButton(wxWindow *win, + virtual int DrawHeaderButton(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0, wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE, wxHeaderButtonParams* params = NULL) - { m_rendererNative.DrawHeaderButton(win, dc, rect, flags, sortArrow, params); } + { return m_rendererNative.DrawHeaderButton(win, dc, rect, flags, sortArrow, params); } - virtual void DrawHeaderButtonContents(wxWindow *win, + virtual int DrawHeaderButtonContents(wxWindow *win, wxDC& dc, const wxRect& rect, int flags = 0, wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE, wxHeaderButtonParams* params = NULL) - { m_rendererNative.DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params); } + { return m_rendererNative.DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params); } virtual int GetHeaderButtonHeight(wxWindow *win) { return m_rendererNative.GetHeaderButtonHeight(win); } @@ -378,6 +385,9 @@ public: int flags = 0 ) { m_rendererNative.DrawItemSelectionRect( win, dc, rect, flags ); } + virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) + { m_rendererNative.DrawFocusRect( win, dc, rect, flags ); } + virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win) { return m_rendererNative.GetSplitterParams(win); }