X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f8e1a81f3e2fdad47eb014c8d74d919c7a9faaa4..3039ade95dbad1ee5a5ed03c25e3ed9241907850:/include/wx/renderer.h diff --git a/include/wx/renderer.h b/include/wx/renderer.h index 852f70598c..1c54983345 100644 --- a/include/wx/renderer.h +++ b/include/wx/renderer.h @@ -25,17 +25,17 @@ #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/gdicmn.h" // for wxPoint, wxSize #include "wx/colour.h" #include "wx/font.h" #include "wx/bitmap.h" #include "wx/string.h" // some platforms have their own renderers, others use the generic one -#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXGTK__) +#if defined(__WXMSW__) || ( defined(__WXMAC__) && wxOSX_USE_COCOA_OR_CARBON ) || defined(__WXGTK__) #define wxHAS_NATIVE_RENDERER #else #undef wxHAS_NATIVE_RENDERER @@ -56,17 +56,13 @@ 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 wxCONTROL_CHECKABLE = 0x00000080, // (menu) item can be checked wxCONTROL_UNDETERMINED = wxCONTROL_CHECKABLE, // (check) undetermined state - wxCONTROL_SIZE_NORMAL = 0x00000100, - wxCONTROL_SIZE_LARGE = 0x00000200, - wxCONTROL_SIZE_SMALL = 0x00000400, - wxCONTROL_SIZE_MINI = 0x00000800, - wxCONTROL_FLAGS_MASK = 0x000000ff, // this is a pseudo flag not used directly by wxRenderer but rather by some @@ -79,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_) @@ -99,7 +95,7 @@ struct WXDLLEXPORT wxSplitterRenderParams // extra optional parameters for DrawHeaderButton -struct WXDLLEXPORT wxHeaderButtonParams +struct WXDLLIMPEXP_CORE wxHeaderButtonParams { wxHeaderButtonParams() : m_labelAlignment(wxALIGN_LEFT) @@ -114,15 +110,16 @@ struct WXDLLEXPORT wxHeaderButtonParams 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 }; // wxRendererNative interface version -struct WXDLLEXPORT wxRendererVersion +struct WXDLLIMPEXP_CORE wxRendererVersion { wxRendererVersion(int version_, int age_) : version(version_), age(age_) { } @@ -156,7 +153,7 @@ struct WXDLLEXPORT wxRendererVersion // wxRendererNative: abstracts drawing methods needed by the native controls // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxRendererNative +class WXDLLIMPEXP_CORE wxRendererNative { public: // drawing functions @@ -231,6 +228,9 @@ public: const wxRect& rect, int flags = 0) = 0; + // Returns the default size of a check box. + virtual wxSize GetCheckBoxSize(wxWindow *win) = 0; + // draw blank button // // flags may use wxCONTROL_PRESSED, wxCONTROL_CURRENT and wxCONTROL_ISDEFAULT @@ -251,6 +251,23 @@ 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; + + // 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 (just the graphical portion) + virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0; + // geometry functions // ------------------ @@ -304,7 +321,7 @@ public: // wxDelegateRendererNative: allows reuse of renderers code // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDelegateRendererNative : public wxRendererNative +class WXDLLIMPEXP_CORE wxDelegateRendererNative : public wxRendererNative { public: wxDelegateRendererNative() @@ -372,6 +389,9 @@ public: int flags = 0 ) { m_rendererNative.DrawCheckBox( win, dc, rect, flags ); } + virtual wxSize GetCheckBoxSize(wxWindow *win) + { return m_rendererNative.GetCheckBoxSize(win); } + virtual void DrawPushButton(wxWindow *win, wxDC& dc, const wxRect& rect, @@ -384,6 +404,21 @@ 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 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 DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) + { m_rendererNative.DrawRadioButton( win, dc, rect, flags); } + virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win) { return m_rendererNative.GetSplitterParams(win); }