#include "wx/renderer.h"
-class WXDLLEXPORT wxWindow;
-class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxCheckListBox;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxDC;
+class WXDLLIMPEXP_FWD_CORE wxCheckListBox;
#if wxUSE_LISTBOX
- class WXDLLEXPORT wxListBox;
+ class WXDLLIMPEXP_FWD_CORE wxListBox;
#endif // wxUSE_LISTBOX
#if wxUSE_MENUS
- class WXDLLEXPORT wxMenu;
- class WXDLLEXPORT wxMenuGeometryInfo;
+ class WXDLLIMPEXP_FWD_CORE wxMenu;
+ class WXDLLIMPEXP_FWD_CORE wxMenuGeometryInfo;
#endif // wxUSE_MENUS
-class WXDLLEXPORT wxScrollBar;
+class WXDLLIMPEXP_FWD_CORE wxScrollBar;
#if wxUSE_TEXTCTRL
- class WXDLLEXPORT wxTextCtrl;
+ class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
#endif
#if wxUSE_GAUGE
- class WXDLLEXPORT wxGauge;
+ class WXDLLIMPEXP_FWD_CORE wxGauge;
#endif // wxUSE_GAUGE
#include "wx/string.h"
#include "wx/gdicmn.h"
#include "wx/icon.h"
-#include "wx/scrolbar.h" // for wxScrollBar::Element
// helper class used by wxMenu-related functions
-class WXDLLEXPORT wxMenuGeometryInfo
+class WXDLLIMPEXP_CORE wxMenuGeometryInfo
{
public:
// get the total size of the menu
// wxRenderer: abstract renderers interface
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxRenderer : public wxDelegateRendererNative
+class WXDLLIMPEXP_CORE wxRenderer : public wxDelegateRendererNative
{
public:
// drawing functions
const wxRect& rect,
int flags) = 0;
-
- // draw the focus rectangle around the label contained in the given rect
- virtual void DrawFocusRect(wxDC& dc, const wxRect& rect) = 0;
-
// draw the label inside the given rectangle with the specified alignment
// and optionally emphasize the character with the given index
virtual void DrawLabel(wxDC& dc,
wxBorder border,
const wxRect& rect,
int flags = 0,
- wxRect *rectIn = (wxRect *)NULL) = 0;
+ wxRect *rectIn = NULL) = 0;
// draw text control border (I hate to have a separate method for this but
// it is needed to accommodate GTK+)
wxBorder border,
const wxRect& rect,
int flags = 0,
- wxRect *rectIn = (wxRect *)NULL) = 0;
+ wxRect *rectIn = NULL) = 0;
// draw push button border and return the rectangle left for the label
virtual void DrawButtonBorder(wxDC& dc,
const wxRect& rect,
int flags = 0,
- wxRect *rectIn = (wxRect *)NULL) = 0;
+ wxRect *rectIn = NULL) = 0;
// draw a horizontal line
virtual void DrawHorizontalLine(wxDC& dc,
virtual void AdjustSize(wxSize *size, const wxWindow *window) = 0;
#if wxUSE_SCROLLBAR
-
// get the size of a scrollbar arrow
virtual wxSize GetScrollbarArrowSize() const = 0;
-
- // gets the bounding box for a scrollbar element for the given (by default
- // - current) thumb position
- virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
- wxScrollBar::Element elem,
- int thumbPos = -1) const = 0;
-
- // returns the size of the scrollbar shaft excluding the arrows
- virtual wxCoord GetScrollbarSize(const wxScrollBar *scrollbar) = 0;
-
- // returns one of wxHT_SCROLLBAR_XXX constants
- virtual wxHitTest HitTestScrollbar(const wxScrollBar *scrollbar,
- const wxPoint& pt) const = 0;
-
- // translate the scrollbar position (in logical units) into physical
- // coordinate (in pixels) and the other way round
- virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
- int thumbPos = -1) = 0;
- virtual int PixelToScrollbar(const wxScrollBar *scrollbar,
- wxCoord coord) = 0;
-
#endif // wxUSE_SCROLLBAR
// get the height of a listbox item from the base font height
virtual wxSize GetRadioBitmapSize() const = 0;
virtual wxCoord GetCheckItemMargin() const = 0;
+#if wxUSE_TOOLBAR
// get the standard size of a toolbar button and also return the size of
// a toolbar separator in the provided pointer
virtual wxSize GetToolBarButtonSize(wxCoord *separator) const = 0;
// get the margins between/around the toolbar buttons
virtual wxSize GetToolBarMargin() const = 0;
+#endif // wxUSE_TOOLBAR
#if wxUSE_TEXTCTRL
// convert between text rectangle and client rectangle for text controls:
#if wxUSE_STATUSBAR
// get the borders around the status bar fields (x and y fields of the
- // return value) and also, optionally, the border between the fields
- virtual wxSize GetStatusBarBorders(wxCoord *borderBetweenFields) const = 0;
+ // return value)
+ virtual wxSize GetStatusBarBorders() const = 0;
+
+ // get the border between the status bar fields
+ virtual wxCoord GetStatusBarBorderBetweenFields() const = 0;
+
+ // get the mergin between a field and its border
+ virtual wxSize GetStatusBarFieldMargins() const = 0;
#endif // wxUSE_STATUSBAR
// get client area rectangle of top level window (i.e. subtract
// will be left to the original renderer
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxDelegateRenderer : public wxRenderer
+class WXDLLIMPEXP_CORE wxDelegateRenderer : public wxRenderer
{
public:
wxDelegateRenderer(wxRenderer *renderer) : m_renderer(renderer) { }
const wxRect& rect,
int flags)
{ m_renderer->DrawButtonSurface(dc, col, rect, flags); }
- virtual void DrawFocusRect(wxDC& dc, const wxRect& rect)
- { m_renderer->DrawFocusRect(dc, rect); }
+ virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0)
+ { m_renderer->DrawFocusRect(win, dc, rect, flags); }
virtual void DrawLabel(wxDC& dc,
const wxString& label,
const wxRect& rect,
wxBorder border,
const wxRect& rect,
int flags = 0,
- wxRect *rectIn = (wxRect *)NULL)
+ wxRect *rectIn = NULL)
{ m_renderer->DrawBorder(dc, border, rect, flags, rectIn); }
virtual void DrawTextBorder(wxDC& dc,
wxBorder border,
const wxRect& rect,
int flags = 0,
- wxRect *rectIn = (wxRect *)NULL)
+ wxRect *rectIn = NULL)
{ m_renderer->DrawTextBorder(dc, border, rect, flags, rectIn); }
virtual void DrawButtonBorder(wxDC& dc,
const wxRect& rect,
int flags = 0,
- wxRect *rectIn = (wxRect *)NULL)
+ wxRect *rectIn = NULL)
{ m_renderer->DrawButtonBorder(dc, rect, flags, rectIn); }
virtual void DrawFrame(wxDC& dc,
const wxString& label,
#if wxUSE_SCROLLBAR
virtual wxSize GetScrollbarArrowSize() const
{ return m_renderer->GetScrollbarArrowSize(); }
- virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
- wxScrollBar::Element elem,
- int thumbPos = -1) const
- { return m_renderer->GetScrollbarRect(scrollbar, elem, thumbPos); }
- virtual wxCoord GetScrollbarSize(const wxScrollBar *scrollbar)
- { return m_renderer->GetScrollbarSize(scrollbar); }
- virtual wxHitTest HitTestScrollbar(const wxScrollBar *scrollbar,
- const wxPoint& pt) const
- { return m_renderer->HitTestScrollbar(scrollbar, pt); }
- virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
- int thumbPos = -1)
- { return m_renderer->ScrollbarToPixel(scrollbar, thumbPos); }
- virtual int PixelToScrollbar(const wxScrollBar *scrollbar,
- wxCoord coord)
- { return m_renderer->PixelToScrollbar(scrollbar, coord); }
#endif // wxUSE_SCROLLBAR
virtual wxCoord GetListboxItemHeight(wxCoord fontHeight)
virtual wxCoord GetCheckItemMargin() const
{ return m_renderer->GetCheckItemMargin(); }
+#if wxUSE_TOOLBAR
virtual wxSize GetToolBarButtonSize(wxCoord *separator) const
{ return m_renderer->GetToolBarButtonSize(separator); }
virtual wxSize GetToolBarMargin() const
{ return m_renderer->GetToolBarMargin(); }
+#endif // wxUSE_TOOLBAR
#if wxUSE_TEXTCTRL
virtual wxRect GetTextTotalArea(const wxTextCtrl *text,
{ return m_renderer->GetTextClientArea(text, rect, extraSpaceBeyond); }
#endif // wxUSE_TEXTCTRL
+#if wxUSE_NOTEBOOK
virtual wxSize GetTabIndent() const { return m_renderer->GetTabIndent(); }
virtual wxSize GetTabPadding() const { return m_renderer->GetTabPadding(); }
+#endif // wxUSE_NOTEBOOK
#if wxUSE_SLIDER
virtual wxCoord GetSliderDim() const
#endif // wxUSE_MENUS
#if wxUSE_STATUSBAR
- virtual wxSize GetStatusBarBorders(wxCoord *borderBetweenFields) const
- { return m_renderer->GetStatusBarBorders(borderBetweenFields); }
+ virtual wxSize GetStatusBarBorders() const
+ { return m_renderer->GetStatusBarBorders(); }
+ virtual wxCoord GetStatusBarBorderBetweenFields() const
+ { return m_renderer->GetStatusBarBorderBetweenFields(); }
+ virtual wxSize GetStatusBarFieldMargins() const
+ { return m_renderer->GetStatusBarFieldMargins(); }
#endif // wxUSE_STATUSBAR
+
virtual wxRect GetFrameClientArea(const wxRect& rect, int flags) const
{ return m_renderer->GetFrameClientArea(rect, flags); }
virtual wxSize GetFrameTotalSize(const wxSize& clientSize, int flags) const
int flags) const
{ return m_renderer->HitTestFrame(rect, pt, flags); }
- virtual void DrawHeaderButton(wxWindow *win,
+ virtual int DrawHeaderButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
int flags = 0,
wxHeaderSortIconType sortIcon = wxHDR_SORT_ICON_NONE,
wxHeaderButtonParams* params = NULL)
- { m_renderer->DrawHeaderButton(win, dc, rect, flags, sortIcon, params); }
+ { return m_renderer->DrawHeaderButton(win, dc, rect, flags, sortIcon, params); }
virtual void DrawTreeItemButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
// OnPaint()
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxControlRenderer
+class WXDLLIMPEXP_CORE wxControlRenderer
{
public:
// create a renderer for this dc with this "fundamental" renderer
wxControlRenderer(wxWindow *control, wxDC& dc, wxRenderer *renderer);
// operations
- void DrawLabel(const wxBitmap& bitmap = wxNullBitmap,
- wxCoord marginX = 0, wxCoord marginY = 0);
+ void DrawLabel();
+ void DrawButtonLabel(const wxBitmap& bitmap = wxNullBitmap,
+ wxCoord marginX = 0, wxCoord marginY = 0);
#if wxUSE_LISTBOX
void DrawItems(const wxListBox *listbox,
size_t itemFirst, size_t itemLast);