]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/renderer.h
Keep track of the captured mouse window so the base GUI code thinks the window
[wxWidgets.git] / include / wx / renderer.h
index 338bc47c10340e453d32e4c416657d4e541759d8..2906de378a045b7c351655d2d883234cf4297871 100644 (file)
 #define _WX_RENDERER_H_
 
 class WXDLLEXPORT wxDC;
-class WXDLLEXPORT wxRect;
 class WXDLLEXPORT wxWindow;
 
+#include "wx/gdicmn.h" // for wxPoint
+
+// some platforms have their own renderers, others use the generic one
+#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXGTK__)
+    #define wxHAS_NATIVE_RENDERER
+#else
+    #undef wxHAS_NATIVE_RENDERER
+#endif
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -61,6 +69,8 @@ enum
 class WXDLLEXPORT wxRendererNative
 {
 public:
+    virtual ~wxRendererNative() { } // stop GCC warning
+
     // drawing functions
     // -----------------
 
@@ -86,7 +96,8 @@ public:
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
-                                  wxCoord position) = 0;
+                                  wxCoord position,
+                                  wxOrientation orient) = 0;
 
 
     // geometry functions
@@ -105,6 +116,9 @@ public:
 
     // return the generic implementation of the renderer
     static wxRendererNative& GetGeneric();
+
+    // return the default (native) implementation for this platform
+    static wxRendererNative& GetDefault();
 };
 
 // ----------------------------------------------------------------------------
@@ -141,8 +155,9 @@ public:
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
-                                  wxCoord position)
-        { m_rendererNative.DrawSplitterSash(win, dc, size, position); }
+                                  wxCoord position,
+                                  wxOrientation orient)
+        { m_rendererNative.DrawSplitterSash(win, dc, size, position, orient); }
 
 
     virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win)
@@ -154,5 +169,20 @@ protected:
     DECLARE_NO_COPY_CLASS(wxDelegateRendererNative)
 };
 
+// ----------------------------------------------------------------------------
+// inline functions implementation
+// ----------------------------------------------------------------------------
+
+#ifndef wxHAS_NATIVE_RENDERER
+
+// default native renderer is the generic one then
+/* static */ inline
+wxRendererNative& wxRendererNative::GetDefault()
+{
+    return GetGeneric();
+}
+
+#endif // !wxHAS_NATIVE_RENDERER
+
 #endif // _WX_RENDERER_H_