// 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
@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
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}
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() const;
+ virtual wxSize GetCheckBoxSize(wxWindow *win);
virtual void DrawPushButton(wxWindow *win, wxDC& dc,
const wxRect& rect, int flags = 0 );
@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,
@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,
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.
*/
/**
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.
/**
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;
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.