wxCONTROL_DIRTY = 0x80000000
};
+// ----------------------------------------------------------------------------
+// helper structs
+// ----------------------------------------------------------------------------
+
+// wxSplitterWindow parameters
+struct WXDLLEXPORT wxSplitterRenderParams
+{
+ // the only way to initialize this struct is by using this ctor
+ wxSplitterRenderParams(wxCoord widthSash_, wxCoord border_, bool isSens_)
+ : widthSash(widthSash_), border(border_), isHotSensitive(isSens_)
+ {
+ }
+
+ // the width of the splitter sash
+ const wxCoord widthSash;
+
+ // the width of the border of the splitter window
+ const wxCoord border;
+
+ // true if the splitter changes its appearance when the mouse is over it
+ const bool isHotSensitive;
+};
+
// ----------------------------------------------------------------------------
// wxRendererNative: abstracts drawing methods needed by the native controls
// ----------------------------------------------------------------------------
// drawn by DrawSash() blends into it well
virtual void DrawSplitterBorder(wxWindow *win,
wxDC& dc,
- const wxRect& rect) = 0;
+ const wxRect& rect,
+ int flags = 0) = 0;
// draw a (vertical) sash
virtual void DrawSplitterSash(wxWindow *win,
wxDC& dc,
const wxSize& size,
wxCoord position,
- wxOrientation orient) = 0;
+ wxOrientation orient,
+ int flags = 0) = 0;
// geometry functions
// get the splitter parameters: the x field of the returned point is the
// sash width and the y field is the border width
- virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win) = 0;
+ virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win) = 0;
// pseudo constructors
// return the default (native) implementation for this platform
static wxRendererNative& GetDefault();
+
+
+ // changing the global renderer
+ // ----------------------------
+
+#if wxUSE_DYNLIB_CLASS
+ // load the renderer from the specified DLL, the returned pointer must be
+ // deleted by caller if not NULL when it is not used any more
+ static wxRendererNative *Load(const wxString& name);
+#endif // wxUSE_DYNLIB_CLASS
+
+ // set the renderer to use, passing NULL reverts to using the default
+ // renderer
+ //
+ // return the previous renderer used with Set() or NULL if none
+ static wxRendererNative *Set(wxRendererNative *renderer);
};
// ----------------------------------------------------------------------------
virtual void DrawSplitterBorder(wxWindow *win,
wxDC& dc,
- const wxRect& rect)
- { m_rendererNative.DrawSplitterBorder(win, dc, rect); }
+ const wxRect& rect,
+ int flags = 0)
+ { m_rendererNative.DrawSplitterBorder(win, dc, rect, flags); }
virtual void DrawSplitterSash(wxWindow *win,
wxDC& dc,
const wxSize& size,
wxCoord position,
- wxOrientation orient)
- { m_rendererNative.DrawSplitterSash(win, dc, size, position, orient); }
+ wxOrientation orient,
+ int flags = 0)
+ { m_rendererNative.DrawSplitterSash(win, dc, size,
+ position, orient, flags); }
- virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win)
- { return m_rendererNative.GetSplitterSashAndBorder(win); }
+ virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
+ { return m_rendererNative.GetSplitterParams(win); }
protected:
wxRendererNative& m_rendererNative;