// Name: renderer.h
// Purpose: interface of wxRendererNative
// Author: wxWidgets team
-// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
/** Mouse is currently over the control. */
wxCONTROL_CURRENT = 0x00000010,
- /** Selected item in e.g. listbox. */
+ /** Selected item in e.g.\ listbox. */
wxCONTROL_SELECTED = 0x00000020,
/** (Check/radio button) is checked. */
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
It doesn't have any methods and all of its fields are constant, so they can
only be examined but not modified.
- @library{wxbase}
+ @library{wxcore}
@category{gdi}
*/
struct wxSplitterRenderParams
wxRendererNative::DrawHeaderButton() to specify custom values used to draw
the text or bitmap label.
- @library{wxbase}
+ @library{wxcore}
@category{gdi}
*/
struct wxHeaderButtonParams
virtual int GetHeaderButtonHeight(wxWindow *win);
+ virtual int GetHeaderButtonMargin(wxWindow *win);
+
virtual void DrawTreeItemButton(wxWindow *win, wxDC& dc,
const wxRect& rect, int flags = 0);
virtual void DrawCheckBox(wxWindow *win, wxDC& dc,
const wxRect& rect, int flags = 0 );
+ virtual wxSize GetCheckBoxSize(wxWindow *win);
+
virtual void DrawPushButton(wxWindow *win, wxDC& dc,
const wxRect& rect, int flags = 0 );
/**
Virtual destructor as for any base class.
*/
- ~wxRendererNative();
+ virtual ~wxRendererNative();
/**
- Draw a check box (used by wxDataViewCtrl).
+ Draw a check box.
@a flags may have the @c wxCONTROL_CHECKED, @c wxCONTROL_CURRENT or
@c wxCONTROL_UNDETERMINED bit set, see @ref wxCONTROL_FLAGS.
*/
- virtual void DrawCheckBox(wxWindow* win, wxDC& dc,
- const wxRect& rect, int flags);
+ virtual void DrawCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect,
+ int flags = 0) = 0;
/**
Draw a button like the one used by wxComboBox to show a
see @ref wxCONTROL_FLAGS.
*/
virtual void DrawComboBoxDropButton(wxWindow* win, wxDC& dc,
- const wxRect& rect,
- int flags);
+ const wxRect& rect, int flags = 0) = 0;
/**
Draw a drop down arrow that is suitable for use outside a combo box. Arrow will
see @ref wxCONTROL_FLAGS.
*/
virtual void DrawDropArrow(wxWindow* win, wxDC& dc, const wxRect& rect,
- int flags);
+ int flags = 0) = 0;
/**
Draw a focus rectangle using the specified rectangle.
see @ref wxCONTROL_FLAGS.
*/
virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect,
- int flags = 0);
+ int flags = 0) = 0;
/**
Draw the header control button (used, for example, by wxListCtrl).
@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, int flags = 0,
- wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
- wxHeaderButtonParams* params = NULL);
+ virtual int DrawHeaderButton(wxWindow* win, wxDC& dc, const wxRect& rect,
+ int flags = 0,
+ wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE, wxHeaderButtonParams* params = NULL) = 0;
/**
Draw the contents of a header control button (label, sort arrows,
@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,
+ virtual int DrawHeaderButtonContents(wxWindow* win, wxDC& dc,
const wxRect& rect, int flags = 0,
- wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
- wxHeaderButtonParams* params = NULL);
+ wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE, wxHeaderButtonParams* params = NULL) = 0;
/**
Draw a selection rectangle underneath the text as used e.g. in a
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.
*/
virtual void DrawItemSelectionRect(wxWindow* win, wxDC& dc,
- const wxRect& rect, int flags = 0);
+ const wxRect& rect, int flags = 0) = 0;
/**
Draw a blank push button that looks very similar to wxButton.
@a flags may have the @c wxCONTROL_PRESSED, @c wxCONTROL_CURRENT or
@c wxCONTROL_ISDEFAULT bit set, see @ref wxCONTROL_FLAGS.
*/
- virtual void DrawPushButton(wxWindow* win, wxDC& dc,
- const wxRect& rect, int flags);
+ virtual void DrawPushButton(wxWindow* win, wxDC& dc, const wxRect& rect,
+ int flags = 0) = 0;
/**
Draw the border for sash window: this border must be such that the sash
drawn by DrawSplitterSash() blends into it well.
*/
- virtual void DrawSplitterBorder(wxWindow* win, wxDC& dc,
- const wxRect& rect, int flags = 0);
+ virtual void DrawSplitterBorder(wxWindow* win, wxDC& dc, const wxRect& rect,
+ int flags = 0) = 0;
/**
Draw a sash. The @a orient parameter defines whether the sash should be
vertical or horizontal and how the @a position should be interpreted.
*/
- virtual void DrawSplitterSash(wxWindow* win, wxDC& dc,
- const wxSize& size, wxCoord position,
- wxOrientation orient, int flags = 0);
+ virtual void DrawSplitterSash(wxWindow* win, wxDC& dc, const wxSize& size,
+ wxCoord position, wxOrientation orient,
+ int flags = 0) = 0;
/**
Draw the expanded/collapsed icon for a tree control item.
To draw an expanded button the @a flags parameter must contain @c wxCONTROL_EXPANDED bit,
see @ref wxCONTROL_FLAGS.
*/
- virtual void DrawTreeItemButton(wxWindow* win, wxDC& dc,
- const wxRect& rect, int flags = 0);
+ virtual void DrawTreeItemButton(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;
+
+ /**
+ 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.
*/
- static wxRendererNative Get();
+ static wxRendererNative& Get();
/**
Return the default (native) implementation for this platform -- this is also
Set() in which case the return value of this
method may be different from the return value of Get().
*/
- static wxRendererNative GetDefault();
+ static wxRendererNative& GetDefault();
/**
Return the generic implementation of the renderer. Under some platforms, this
is the default renderer implementation, others have platform-specific default
renderer which can be retrieved by calling GetDefault().
*/
- static wxRendererNative GetGeneric();
+ static wxRendererNative& GetGeneric();
+
+ /**
+ Returns the size of a check box.
+ The @a win parameter is not used currently and can be @NULL.
+ */
+ 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);
+ 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);
+ virtual wxSplitterRenderParams GetSplitterParams(const wxWindow* win) = 0;
/**
This function is used for version checking: Load()
but it has to be in the derived, not base, class, to detect mismatches between
the renderers versions and so you have to implement it anew in all renderers.
*/
- virtual wxRendererVersion GetVersion() const;
+ virtual wxRendererVersion GetVersion() const = 0;
/**
Load the renderer from the specified DLL, the returned pointer must be
renderer which has the age greater or equal to its age. This verification is
done by IsCompatible() method.
- @library{wxbase}
+ @library{wxcore}
@category{gdi}
*/
struct wxRendererVersion
{
+ wxRendererVersion(int version_, int age_);
+
/**
Checks if the main program is compatible with the renderer having the version
@e ver, returns @true if it is and @false otherwise.