#include "wx/dc.h"
#include "wx/settings.h"
+#include "wx/splitter.h"
+
+#include "wx/dcmirror.h"
#include "wx/renderer.h"
virtual void DrawSplitterSash(wxWindow *win,
wxDC& dc,
const wxSize& size,
- wxCoord position);
+ wxCoord position,
+ wxOrientation orient);
virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win);
return s_rendererGeneric;
}
-// some platforms have their own renderers
-#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXGTK__)
-
-/* static */
-wxRendererNative& wxRendererNative::Get()
-{
- return GetGeneric();
-}
-
-#endif // platforms using their own renderers
-
wxRendererGeneric::wxRendererGeneric()
: m_penBlack(wxSystemSettings::GetColour(wxSYS_COLOUR_3DDKSHADOW)),
m_penDarkGrey(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)),
// ----------------------------------------------------------------------------
void
-wxRendererGeneric::DrawHeaderButton(wxWindow *win,
+wxRendererGeneric::DrawHeaderButton(wxWindow * WXUNUSED(win),
wxDC& dc,
const wxRect& rect,
- int flags)
+ int WXUNUSED(flags))
{
const int CORNER = 1;
// draw the plus or minus sign
void
-wxRendererGeneric::DrawTreeItemButton(wxWindow *win,
+wxRendererGeneric::DrawTreeItemButton(wxWindow * WXUNUSED(win),
wxDC& dc,
const wxRect& rect,
int flags)
// ----------------------------------------------------------------------------
wxPoint
-wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow * WXUNUSED(win))
+wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow *win)
{
// see below
- return wxPoint(7, 2);
+ return win->HasFlag(wxSP_3D) ? wxPoint(7, 2) : wxPoint(3, 0);
}
void
-wxRendererGeneric::DrawSplitterBorder(wxWindow * WXUNUSED(win),
+wxRendererGeneric::DrawSplitterBorder(wxWindow *win,
wxDC& dc,
const wxRect& rectOrig)
{
- wxRect rect = rectOrig;
- DrawShadedRect(dc, &rect, m_penDarkGrey, m_penHighlight);
- DrawShadedRect(dc, &rect, m_penBlack, m_penLightGrey);
+ if ( win->HasFlag(wxSP_3D) )
+ {
+ wxRect rect = rectOrig;
+ DrawShadedRect(dc, &rect, m_penDarkGrey, m_penHighlight);
+ DrawShadedRect(dc, &rect, m_penBlack, m_penLightGrey);
+ }
}
void
-wxRendererGeneric::DrawSplitterSash(wxWindow * WXUNUSED(win),
- wxDC& dc,
- const wxSize& size,
- wxCoord position)
+wxRendererGeneric::DrawSplitterSash(wxWindow *win,
+ wxDC& dcReal,
+ const wxSize& sizeReal,
+ wxCoord position,
+ wxOrientation orient)
{
- // we draw a Win32-like sash here:
+ // to avoid duplicating the same code for horizontal and vertical sashes,
+ // simply mirror the DC instead if needed (i.e. if horz splitter)
+ wxMirrorDC dc(dcReal, orient != wxVERTICAL);
+ wxSize size = dc.Reflect(sizeReal);
+
+
+ // we draw a Win32-like grey sash with possible 3D border here:
//
// ---- this is position
// /
// GWGGGDB and lower letters are our border (already drawn)
// GWGGGDB
// wWGGGDd
+ //
+ // only the middle 3 columns are drawn unless wxSP_3D is specified
const wxCoord h = size.y;
// from left to right
- dc.SetPen(m_penLightGrey);
- dc.DrawLine(position, 1, position, h - 1);
+ if ( win->HasFlag(wxSP_3D) )
+ {
+ dc.SetPen(m_penLightGrey);
+ dc.DrawLine(position, 1, position, h - 1);
- dc.SetPen(m_penHighlight);
- dc.DrawLine(position + 1, 0, position + 1, h);
+ dc.SetPen(m_penHighlight);
+ dc.DrawLine(position + 1, 0, position + 1, h);
+ }
dc.SetPen(*wxTRANSPARENT_PEN);
dc.SetBrush(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)));
dc.DrawRectangle(position + 2, 0, 3, h);
- dc.SetPen(m_penDarkGrey);
- dc.DrawLine(position + 5, 0, position + 5, h);
+ if ( win->HasFlag(wxSP_3D) )
+ {
+ dc.SetPen(m_penDarkGrey);
+ dc.DrawLine(position + 5, 0, position + 5, h);
- dc.SetPen(m_penBlack);
- dc.DrawLine(position + 6, 1, position + 6, h - 1);
+ dc.SetPen(m_penBlack);
+ dc.DrawLine(position + 6, 1, position + 6, h - 1);
+ }
}