#include "wx/univ/renderer.h"
#include "wx/pen.h"
-class WXDLLEXPORT wxColourScheme;
+class WXDLLIMPEXP_FWD_CORE wxColourScheme;
// ----------------------------------------------------------------------------
// wxStdRenderer: implements as much of wxRenderer API as possible generically
int flags);
- virtual void DrawFocusRect(wxDC& dc, const wxRect& rect);
+ virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0);
+
virtual void DrawLabel(wxDC& dc,
const wxString& label,
const wxRect& rect,
wxAlignment align = wxALIGN_LEFT,
int indexAccel = -1);
+ virtual void DrawScrollbarArrow(wxDC& dc,
+ wxDirection dir,
+ const wxRect& rect,
+ int flags = 0);
+ virtual void DrawScrollCorner(wxDC& dc,
+ const wxRect& rect);
+
#if wxUSE_TEXTCTRL
virtual void DrawTextLine(wxDC& dc,
const wxString& text,
virtual bool AreScrollbarsInsideBorder() const;
-#if wxUSE_SCROLLBAR
- virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
- wxScrollBar::Element elem,
- int thumbPos = -1) const;
+ virtual void AdjustSize(wxSize *size, const wxWindow *window);
+
+ virtual wxCoord GetListboxItemHeight(wxCoord fontHeight);
+
+#if wxUSE_STATUSBAR
+ virtual void DrawStatusField(wxDC& dc,
+ const wxRect& rect,
+ const wxString& label,
+ int flags = 0, int style = 0);
+
+ virtual wxSize GetStatusBarBorders() const;
+
+ virtual wxCoord GetStatusBarBorderBetweenFields() const;
+
+ virtual wxSize GetStatusBarFieldMargins() const;
+#endif // wxUSE_STATUSBAR
+
+ virtual wxCoord GetCheckItemMargin() const { return 0; }
+
+
+ virtual void DrawFrameTitleBar(wxDC& dc,
+ const wxRect& rect,
+ const wxString& title,
+ const wxIcon& icon,
+ int flags,
+ int specialButton = 0,
+ int specialButtonFlag = 0);
+ virtual void DrawFrameBorder(wxDC& dc,
+ const wxRect& rect,
+ int flags);
+ virtual void DrawFrameBackground(wxDC& dc,
+ const wxRect& rect,
+ int flags);
+ virtual void DrawFrameTitle(wxDC& dc,
+ const wxRect& rect,
+ const wxString& title,
+ int flags);
+ virtual void DrawFrameIcon(wxDC& dc,
+ const wxRect& rect,
+ const wxIcon& icon,
+ int flags);
+ virtual void DrawFrameButton(wxDC& dc,
+ wxCoord x, wxCoord y,
+ int button,
+ int flags = 0);
+
+ virtual wxRect GetFrameClientArea(const wxRect& rect, int flags) const;
- virtual wxCoord GetScrollbarSize(const wxScrollBar *scrollbar);
+ virtual wxSize GetFrameTotalSize(const wxSize& clientSize, int flags) const;
- virtual wxHitTest HitTestScrollbar(const wxScrollBar *scrollbar,
- const wxPoint& pt) const;
+ virtual wxSize GetFrameMinSize(int flags) const;
- virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
- int thumbPos = -1);
- virtual int PixelToScrollbar(const wxScrollBar *scrollbar, wxCoord coord);
-#endif // wxUSE_SCROLLBAR
+ virtual wxSize GetFrameIconSize() const;
+ virtual int HitTestFrame(const wxRect& rect,
+ const wxPoint& pt,
+ int flags = 0) const;
protected:
// various constants
+ enum ArrowDirection
+ {
+ Arrow_Left,
+ Arrow_Right,
+ Arrow_Up,
+ Arrow_Down,
+ Arrow_Max
+ };
+
+ enum ArrowStyle
+ {
+ Arrow_Normal,
+ Arrow_Disabled,
+ Arrow_Pressed,
+ Arrow_Inverted,
+ Arrow_InvertedDisabled,
+ Arrow_StateMax
+ };
+
+ enum FrameButtonType
+ {
+ FrameButton_Close,
+ FrameButton_Minimize,
+ FrameButton_Maximize,
+ FrameButton_Restore,
+ FrameButton_Help,
+ FrameButton_Max
+ };
+
enum IndicatorType
{
IndicatorType_Check,
IndicatorState& state,
IndicatorStatus& status);
+ // translate wxDirection to ArrowDirection
+ static ArrowDirection GetArrowDirection(wxDirection dir);
+
+
// fill the rectangle with a brush of given colour (must be valid)
void DrawSolidRect(wxDC& dc, const wxColour& col, const wxRect& rect);
virtual void DrawRaisedBorder(wxDC& dc, wxRect *rect);
virtual void DrawSunkenBorder(wxDC& dc, wxRect *rect);
virtual void DrawAntiSunkenBorder(wxDC& dc, wxRect *rect);
- virtual void DrawFrameBorder(wxDC& dc, wxRect *rect);
+ virtual void DrawBoxBorder(wxDC& dc, wxRect *rect);
+ virtual void DrawStaticBorder(wxDC& dc, wxRect *rect);
+ virtual void DrawExtraBorder(wxDC& dc, wxRect *rect);
// draw the frame with non-empty label inside the given rectText
virtual wxBitmap GetRadioBitmap(int flags) = 0;
virtual wxBitmap GetCheckBitmap(int flags) = 0;
+ // return the frame icon bitmap
+ virtual wxBitmap GetFrameButtonBitmap(FrameButtonType type) = 0;
+
+ // get the width of either normal or resizeable frame border depending on
+ // whether flags contains wxTOPLEVEL_RESIZEABLE bit
+ //
+ // notice that these methods only make sense with standard border drawing
+ // code which uses the borders of the same width on all sides, this is why
+ // they are only present here and not in wxRenderer itself
+ virtual int GetFrameBorderWidth(int flags) const;
+
#if wxUSE_TEXTCTRL
// return the width of the border around the text area in the text control
virtual int GetTextBorderWidth(const wxTextCtrl *text) const;
#endif // wxUSE_TEXTCTRL
- // return the starting and ending positions, in pixels, of the thumb of a
- // scrollbar with the given logical position, thumb size and range and the
- // given physical length
- static void GetScrollBarThumbSize(wxCoord length,
- int thumbPos,
- int thumbSize,
- int range,
- wxCoord *thumbStart,
- wxCoord *thumbEnd);
-
// GDI objects we often use
wxPen m_penBlack,
m_penDarkGrey,
m_penLightGrey,
m_penHighlight;
+ wxFont m_titlebarFont;
+
// the colours we use, they never change currently so we don't have to ever
// update m_penXXX objects above
const wxColourScheme * const m_scheme;