// Management of pens, brushes and fonts
 // ---------------------------------------------------------------------------
 
+typedef wxInt8 wxDash;
+
 class WXDLLEXPORT wxPenList : public wxList
 {
     DECLARE_DYNAMIC_CLASS(wxPenList)
 
 #include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
-#include <gtk/gtk.h>
+#include <gtk/gtk.h>  // only needed for wxGTKDash, should it go elsewhere..
 
 //-----------------------------------------------------------------------------
 // classes
 
 class wxPen;
 
-typedef    wxInt8 wxDash;
-
 #if GTK_CHECK_VERSION(1,2,7)
 typedef    gint8 wxGTKDash;
 #else
 
 #include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
-#include <gtk/gtk.h>
+#include <gtk/gtk.h>  // only needed for wxGTKDash, should it go elsewhere..
 
 //-----------------------------------------------------------------------------
 // classes
 
 class wxPen;
 
-typedef    wxInt8 wxDash;
-
 #if GTK_CHECK_VERSION(1,2,7)
 typedef    gint8 wxGTKDash;
 #else
 
 #include "wx/colour.h"
 #include "wx/bitmap.h"
 
-typedef    long wxDash ;
+typedef long wxMACDash;
 
 class WXDLLEXPORT wxPen;
 
   int           m_cap ;
   wxBitmap      m_stipple ;
   int           m_nbDash ;
-  wxDash *      m_dash ;
+  wxMACDash *   m_dash ;
   wxColour      m_colour;
 /* TODO: implementation
   WXHPEN        m_hPen;
   inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
   inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
   inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
-  inline int GetDashes(wxDash **ptr) const {
-     *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  inline int GetDashes(wxDash **ptr) const
+  {
+    *ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*) NULL);
+    return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
   }
 
   inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); };
 
     int          m_currentPenJoin ;
     int          m_currentPenCap ;
     int          m_currentPenDashCount ;
-    char*        m_currentPenDash ;
+    wxMOTIFDash* m_currentPenDash ;
     wxBitmap     m_currentStipple ;
     int          m_currentStyle ;
     int          m_currentFill ;
 
 #include "wx/colour.h"
 #include "wx/bitmap.h"
 
-typedef    char wxDash ;
+typedef char wxMOTIFDash;
 
 class WXDLLEXPORT wxPen;
 
   int           m_cap ;
   wxBitmap      m_stipple ;
   int           m_nbDash ;
-  wxDash *      m_dash ;
+  wxMOTIFDash  *m_dash ;
   wxColour      m_colour;
 };
 
   inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
   inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
   inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
-  inline int GetDashes(wxDash **ptr) const {
-     *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  inline int GetDashes(wxDash **ptr) const
+  {
+    *ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*) NULL);
+    return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
   }
   inline int GetDashCount() const { return (M_PENDATA->m_nbDash); }
-  inline wxDash* GetDash() const { return (M_PENDATA->m_dash); }
+  inline wxDash* GetDash() const { return (wxDash*)M_PENDATA->m_dash; }
 
   inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); };
 
 
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-typedef    WXDWORD  wxDash ;
+typedef WXDWORD wxMSWDash;
 
 class WXDLLEXPORT wxPen;
 
   int           m_cap ;
   wxBitmap      m_stipple ;
   int           m_nbDash ;
-  wxDash *      m_dash ;
+  wxMSWDash *   m_dash ;
   wxColour      m_colour;
   WXHPEN        m_hPen;
 };
   inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
   inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
   inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
-  inline int GetDashes(wxDash **ptr) const {
-     *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  inline int GetDashes(wxDash **ptr) const
+  {
+    *ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*) NULL);
+    return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
   }
 
   inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); };
 
                                 // Define 1 for font size to be backward compatible
                                 // to 1.63 and earlier. 1.64 and later define point
                                 // sizes to be compatible with Windows.
-#define wxUSE_GENERIC_DIALOGS_IN_MSW 1
+#define wxUSE_GENERIC_DIALOGS_IN_MSW 0
                                 // Define 1 to use generic dialogs in Windows, even though
                                 // they duplicate native common dialog (e.g. wxColourDialog)
 #define wxUSE_PENWINDOWS 0
 
 #include "wx/gdiobj.h"
 #include "wx/bitmap.h"
 
-typedef    long wxDash ;
+typedef long wxPMDash;
 
 class WXDLLEXPORT wxPen;
 
   int           m_cap ;
   wxBitmap      m_stipple ;
   int           m_nbDash ;
-  wxDash *      m_dash ;
+  wxPMDash *    m_dash ;
   wxColour      m_colour;
   WXHPEN        m_hPen;
 };
   inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
   inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
   inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
-  inline int GetDashes(wxDash **ptr) const {
-     *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  inline int GetDashes(wxDash **ptr) const
+  {
+    *ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*) NULL);
+    return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
   }
 
   inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); };
 
 #endif
 
 #include "wx/gdiobj.h"
+#include "wx/gdicmn.h"
 
-typedef    WXDWORD  wxDash ;
+typedef WXDWORD wxQTDash;
 
 class WXDLLEXPORT wxPen;
 
   int           m_cap ;
   wxBitmap      m_stipple ;
   int           m_nbDash ;
-  wxDash *      m_dash ;
+  wxQTDash *    m_dash;
   wxColour      m_colour;
 /* TODO: implementation
   WXHPEN        m_hPen;
   inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
   inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
   inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
-  inline int GetDashes(wxDash **ptr) const {
-     *ptr = (M_PENDATA ? M_PENDATA->m_dash : NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  inline int GetDashes(wxDash **ptr) const
+  {
+    *ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*)NULL);
+    return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
   }
 
   inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : NULL); };
 
 #include "wx/colour.h"
 #include "wx/bitmap.h"
 
-typedef    long wxDash ;
+// PORTERS, NB: this typedef is the platform specific type for dashes..
+// change all occurences of XSTUBX in pen.h and pen.cpp to something
+// meaningful for your port (eg. wxMSWDash, wxGTKDash) and change the
+// type from long to whatever your platform requires.
+
+typedef long wxXSTUBXDash;
+
+// wxDash is typedef'd in gdicmn.h and is the type that should be used
+// for all public interfaces.  Convert parameters to the wxXSTUBXDash
+// type for use inside the platform specific methods, and cast them
+// back to wxDash again before passing back to the user.  -- RL
 
 class WXDLLEXPORT wxPen;
 
 protected:
   int           m_width;
   int           m_style;
-  int           m_join ;
-  int           m_cap ;
-  wxBitmap      m_stipple ;
-  int           m_nbDash ;
-  wxDash *      m_dash ;
+  int           m_join;
+  int           m_cap;
+  wxBitmap      m_stipple;
+  int           m_nbDash;
+  wxXSTUBXDash *m_dash;
   wxColour      m_colour;
 /* TODO: implementation
   WXHPEN        m_hPen;
   inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); };
   inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); };
   inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); };
-  inline int GetDashes(wxDash **ptr) const {
-     *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
+  inline int GetDashes(wxDash **ptr) const
+  {
+      *ptr = (M_PENDATA ? (wxDash*)M_PENDATA->m_dash : (wxDash*)NULL);
+      return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
   }
 
   inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); };
 
     m_join = wxJOIN_ROUND ;
     m_cap = wxCAP_ROUND ;
     m_nbDash = 0 ;
-    m_dash = 0 ;
+    m_dash = (wxMACDash*)NULL;
 /* TODO: null data
     m_hPen = 0;
 */
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMACDash*)NULL;
 
     RealizeResource();
 
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMACDash*)NULL;
 
     RealizeResource();
 
     Unshare();
 
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxMACDash *)Dash;
   
     RealizeResource();
 }
 
     m_join = wxJOIN_ROUND ;
     m_cap = wxCAP_ROUND ;
     m_nbDash = 0 ;
-    m_dash = 0 ;
+    m_dash = (wxMACDash*)NULL;
 /* TODO: null data
     m_hPen = 0;
 */
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMACDash*)NULL;
 
     RealizeResource();
 
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMACDash*)NULL;
 
     RealizeResource();
 
     Unshare();
 
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxMACDash *)Dash;
   
     RealizeResource();
 }
 
     m_currentPenWidth = 1;
     m_currentPenJoin = -1;
     m_currentPenDashCount = -1;
-    m_currentPenDash = (char*) NULL;
+    m_currentPenDash = (wxMOTIFDash*) NULL;
     m_currentStyle = -1;
     m_currentFill = -1;
     //    m_currentBkMode = wxTRANSPARENT;
     m_currentPenWidth = 1;
     m_currentPenJoin = -1;
     m_currentPenDashCount = -1;
-    m_currentPenDash = (char*) NULL;
+    m_currentPenDash = (wxMOTIFDash*) NULL;
     m_currentStyle = -1;
     m_currentFill = -1;
     //    m_currentBkMode = wxTRANSPARENT;
     int old_pen_join = m_currentPenJoin;
     int old_pen_cap = m_currentPenCap;
     int old_pen_nb_dash = m_currentPenDashCount;
-    char *old_pen_dash = m_currentPenDash;
+    wxMOTIFDash *old_pen_dash = m_currentPenDash;
 
     wxColour oldPenColour = m_currentColour;
     m_currentColour = m_pen.GetColour ();
     m_currentPenJoin = m_pen.GetJoin ();
     m_currentPenCap = m_pen.GetCap ();
     m_currentPenDashCount = m_pen.GetDashCount();
-    m_currentPenDash = m_pen.GetDash();
+    m_currentPenDash = (wxMOTIFDash*)m_pen.GetDash();
 
     if (m_currentStyle == wxSTIPPLE)
         m_currentStipple = * m_pen.GetStipple ();
         int style;
         int join;
         int cap;
-        static const char dotted[] = {2, 5};
-        static const char short_dashed[] = {4, 4};
-        static const char long_dashed[] = {4, 8};
-        static const char dotted_dashed[] = {6, 6, 2, 6};
+        static const wxMOTIFDash dotted[] = {2, 5};
+        static const wxMOTIFDash short_dashed[] = {4, 4};
+        static const wxMOTIFDash long_dashed[] = {4, 8};
+        static const wxMOTIFDash dotted_dashed[] = {6, 6, 2, 6};
 
         // We express dash pattern in pen width unit, so we are
         // independent of zoom factor and so on...
         int req_nb_dash;
-        const char *req_dash;
+        const wxMOTIFDash *req_dash;
 
         switch (m_pen.GetStyle ())
         {
         case wxTRANSPARENT:
         default:
             style = LineSolid;
-            req_dash = NULL;
+            req_dash = (wxMOTIFDash*)NULL;
             req_nb_dash = 0;
         }
 
         if (req_dash && req_nb_dash)
         {
-            char *real_req_dash = new char[req_nb_dash];
+            wxMOTIFDash *real_req_dash = new wxMOTIFDash[req_nb_dash];
             if (real_req_dash)
             {
                 int factor = scaled_width == 0 ? 1 : scaled_width;
 
     m_join = wxJOIN_ROUND ;
     m_cap = wxCAP_ROUND ;
     m_nbDash = 0 ;
-    m_dash = 0 ;
+    m_dash = (wxMOTIFDash*)NULL;
 }
 
 wxPenRefData::wxPenRefData(const wxPenRefData& data)
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMOTIFDash*)NULL;
     
     RealizeResource();
     
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMOTIFDash*)NULL;
     
     RealizeResource();
     
     Unshare();
     
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxMOTIFDash *)Dash;
     
     RealizeResource();
 }
 
   m_join = wxJOIN_ROUND ;
   m_cap = wxCAP_ROUND ;
   m_nbDash = 0 ;
-  m_dash = 0 ;
+  m_dash = (wxMSWDash*)NULL;
   m_hPen = 0;
 }
 
   M_PENDATA->m_join = wxJOIN_ROUND ;
   M_PENDATA->m_cap = wxCAP_ROUND ;
   M_PENDATA->m_nbDash = 0 ;
-  M_PENDATA->m_dash = 0 ;
+  M_PENDATA->m_dash = (wxMSWDash*)NULL;
   M_PENDATA->m_hPen = 0 ;
 
 #ifndef __WIN32__
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxMSWDash*)NULL;
     M_PENDATA->m_hPen = 0 ;
 
     RealizeResource();
 
           logb.lbColor = ms_colour;
 
-          wxDash *real_dash;
+          wxMSWDash *real_dash;
            if (M_PENDATA->m_style==wxUSER_DASH && M_PENDATA->m_nbDash && M_PENDATA->m_dash)
           {
-              real_dash = new wxDash[M_PENDATA->m_nbDash];
+              real_dash = new wxMSWDash[M_PENDATA->m_nbDash];
                int i;
                for (i=0; i<M_PENDATA->m_nbDash; i++)
-               real_dash[i] = M_PENDATA->m_dash[i] * M_PENDATA->m_width;
+                   real_dash[i] = M_PENDATA->m_dash[i] * M_PENDATA->m_width;
            }
           else
            {
-              real_dash = 0;
+              real_dash = (wxMSWDash*)NULL;
            }
 
            // Win32s doesn't have ExtCreatePen function...
                                        M_PENDATA->m_style==wxUSER_DASH
                                          ? M_PENDATA->m_nbDash
                                          : 0,
-                                       (const DWORD*)real_dash );
+                                       real_dash );
           }
           else
            {
     Unshare();
 
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxMSWDash *)Dash;
   
     RealizeResource();
 }
 
     m_join = wxJOIN_ROUND ;
     m_cap = wxCAP_ROUND ;
     m_nbDash = 0 ;
-    m_dash = 0 ;
+    m_dash = (wxPMDash*)NULL;
     m_hPen = 0;
 }
 
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxPMDash*)NULL;
     M_PENDATA->m_hPen = 0 ;
 
 // TODO:
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxPMDash*)NULL;
     M_PENDATA->m_hPen = 0 ;
 
     RealizeResource();
     Unshare();
 
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxPMDash *)Dash;
 
     RealizeResource();
 }
 
     m_join = wxJOIN_ROUND ;
     m_cap = wxCAP_ROUND ;
     m_nbDash = 0 ;
-    m_dash = 0 ;
+    m_dash = (wxQTDash*)NULL;
 /* TODO: null data
     m_hPen = 0;
 */
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxQTDash*)NULL;
 
     RealizeResource();
 
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxQTDash*)NULL;
 
     RealizeResource();
 
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxQTDash*)NULL;
 
     RealizeResource();
 
     Unshare();
 
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxQTDash *)Dash;
   
     RealizeResource();
 }
 
     m_join = wxJOIN_ROUND ;
     m_cap = wxCAP_ROUND ;
     m_nbDash = 0 ;
-    m_dash = 0 ;
+    m_dash = (wxXSTUBXDash*)NULL;
 /* TODO: null data
     m_hPen = 0;
 */
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxXSTUBXDash*)NULL;
 
     RealizeResource();
 
     M_PENDATA->m_join = wxJOIN_ROUND ;
     M_PENDATA->m_cap = wxCAP_ROUND ;
     M_PENDATA->m_nbDash = 0 ;
-    M_PENDATA->m_dash = 0 ;
+    M_PENDATA->m_dash = (wxXSTUBXDash*)NULL;
 
     RealizeResource();
 
     Unshare();
 
     M_PENDATA->m_nbDash = nb_dashes;
-    M_PENDATA->m_dash = (wxDash *)Dash;
+    M_PENDATA->m_dash = (wxXSTUBXDash*)Dash;
   
     RealizeResource();
 }