+class wxPenRefData: public wxGDIRefData
+{
+public:
+    wxPenRefData()
+    {
+        m_width = 1;
+        m_style = wxPENSTYLE_SOLID;
+        m_joinStyle = wxJOIN_ROUND;
+        m_capStyle = wxCAP_ROUND;
+        m_dash = NULL;
+        m_countDashes = 0;
+    }
+
+    wxPenRefData( const wxPenRefData& data )
+        : wxGDIRefData()
+    {
+        m_style = data.m_style;
+        m_width = data.m_width;
+        m_joinStyle = data.m_joinStyle;
+        m_capStyle = data.m_capStyle;
+        m_colour = data.m_colour;
+        m_countDashes = data.m_countDashes;
+        m_dash = data.m_dash;
+    }
+
+    bool operator == (const wxPenRefData& data) const
+    {
+        if ( m_countDashes != data.m_countDashes )
+            return false;
+
+        if ( m_dash )
+        {
+            if ( !data.m_dash ||
+                 memcmp(m_dash, data.m_dash, m_countDashes*sizeof(wxGTKDash)) )
+            {
+                return false;
+            }
+        }
+        else if ( data.m_dash )
+        {
+            return false;
+        }
+
+
+        return m_style == data.m_style &&
+               m_width == data.m_width &&
+               m_joinStyle == data.m_joinStyle &&
+               m_capStyle == data.m_capStyle &&
+               m_colour == data.m_colour;
+    }
+