#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"
+#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__)
wxCONTROL_DISABLED = 0x00000001, // control is disabled
wxCONTROL_FOCUSED = 0x00000002, // currently has keyboard focus
wxCONTROL_PRESSED = 0x00000004, // (button) is pressed
- wxCONTROL_ISDEFAULT = 0x00000008, // only applies to the buttons
- wxCONTROL_ISSUBMENU = wxCONTROL_ISDEFAULT, // only for menu items
- wxCONTROL_EXPANDED = wxCONTROL_ISDEFAULT, // only for the tree items
+ wxCONTROL_SPECIAL = 0x00000008, // control-specific bit:
+ wxCONTROL_ISDEFAULT = wxCONTROL_SPECIAL, // only for the buttons
+ 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_UPICON = 0x00000100, // header button has an up arrow icon
- wxCONTROL_DOWNICON = 0x00000200, // header button has a down arrow icon
- wxCONTROL_FLAGS_MASK = 0x000002ff,
+ wxCONTROL_FLAGS_MASK = 0x000000ff,
// this is a pseudo flag not used directly by wxRenderer but rather by some
// controls internally
wxHeaderButtonParams()
: m_labelAlignment(wxALIGN_LEFT)
{ }
-
+
wxColour m_arrowColour;
wxColour m_selectionColour;
wxString m_labelText;
int m_labelAlignment;
};
+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
+};
+
// wxRendererNative interface version
struct WXDLLEXPORT wxRendererVersion
// 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,
+ wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
wxHeaderButtonParams* params=NULL) = 0;
// 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,
+ wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
wxHeaderButtonParams* params=NULL) = 0;
// Returns the default height of a header button, either a fixed platform
// draw rectangle indicating that an item in e.g. a list control
// has been selected or focused
//
- // flags may use
+ // flags may use
// wxCONTROL_SELECTED (item is selected, e.g. draw background)
// wxCONTROL_CURRENT (item is the current item, e.g. dotted border)
// wxCONTROL_FOCUSED (the whole control has focus, e.g. blue background vs. grey otherwise)
: 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, 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, params); }
+ { return m_rendererNative.DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params); }
-
virtual int GetHeaderButtonHeight(wxWindow *win)
{ return m_rendererNative.GetHeaderButtonHeight(win); }