X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33ac7e6f01acbac1cff0ad400d8ea7f0bfd0a62f..04633c190f5a6eafe607a5712647aaa131522b1f:/src/msw/pen.cpp diff --git a/src/msw/pen.cpp b/src/msw/pen.cpp index b764f03bea..dc52acc011 100644 --- a/src/msw/pen.cpp +++ b/src/msw/pen.cpp @@ -5,11 +5,11 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "pen.h" #endif @@ -30,7 +30,8 @@ #endif #include "wx/msw/private.h" -#include "assert.h" + +static int wx2msPenStyle(int wx_style); IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) @@ -41,7 +42,7 @@ wxPenRefData::wxPenRefData() m_join = wxJOIN_ROUND ; m_cap = wxCAP_ROUND ; m_nbDash = 0 ; - m_dash = (wxMSWDash*)NULL; + m_dash = (wxDash*)NULL; m_hPen = 0; } @@ -67,14 +68,10 @@ wxPenRefData::~wxPenRefData() wxPen::wxPen() { - if (wxThePenList) - wxThePenList->AddPen(this); } wxPen::~wxPen() { - if (wxThePenList) - wxThePenList->RemovePen(this); } // Should implement Create @@ -89,7 +86,7 @@ wxPen::wxPen(const wxColour& col, int Width, int Style) M_PENDATA->m_join = wxJOIN_ROUND ; M_PENDATA->m_cap = wxCAP_ROUND ; M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = (wxMSWDash*)NULL; + M_PENDATA->m_dash = (wxDash*)NULL; M_PENDATA->m_hPen = 0 ; #ifndef __WIN32__ @@ -117,8 +114,6 @@ wxPen::wxPen(const wxColour& col, int Width, int Style) #endif RealizeResource(); - if ( wxThePenList ) - wxThePenList->AddPen(this); } wxPen::wxPen(const wxBitmap& stipple, int Width) @@ -132,13 +127,11 @@ wxPen::wxPen(const wxBitmap& stipple, int Width) M_PENDATA->m_join = wxJOIN_ROUND ; M_PENDATA->m_cap = wxCAP_ROUND ; M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = (wxMSWDash*)NULL; + M_PENDATA->m_dash = (wxDash*)NULL; M_PENDATA->m_hPen = 0 ; RealizeResource(); - if (wxThePenList) - wxThePenList->AddPen(this); } bool wxPen::RealizeResource() @@ -151,13 +144,12 @@ bool wxPen::RealizeResource() return TRUE; } - COLORREF ms_colour = 0; - ms_colour = M_PENDATA->m_colour.GetPixel(); + COLORREF ms_colour = M_PENDATA->m_colour.GetPixel(); // Join style, Cap style, Pen Stippling only on Win32. // Currently no time to find equivalent on Win3.1, sorry // [if such equiv exist!!] -#ifdef __WIN32__ +#if defined(__WIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__) if (M_PENDATA->m_join==wxJOIN_ROUND && M_PENDATA->m_cap==wxCAP_ROUND && M_PENDATA->m_style!=wxUSER_DASH && @@ -240,9 +232,9 @@ bool wxPen::RealizeResource() if (M_PENDATA->m_style==wxUSER_DASH && M_PENDATA->m_nbDash && M_PENDATA->m_dash) { real_dash = new wxMSWDash[M_PENDATA->m_nbDash]; - int i; - for (i=0; im_nbDash; i++) - real_dash[i] = M_PENDATA->m_dash[i] * M_PENDATA->m_width; + int rw = M_PENDATA->m_width > 1 ? M_PENDATA->m_width : 1; + for ( int i = 0; i < M_PENDATA->m_nbDash; i++ ) + real_dash[i] = M_PENDATA->m_dash[i] * rw; } else { @@ -287,7 +279,7 @@ bool wxPen::RealizeResource() return FALSE; } -WXHANDLE wxPen::GetResourceHandle() +WXHANDLE wxPen::GetResourceHandle() const { if ( !M_PENDATA ) return 0; @@ -377,7 +369,7 @@ void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) Unshare(); M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxMSWDash *)Dash; + M_PENDATA->m_dash = (wxDash *)Dash; RealizeResource(); } @@ -405,6 +397,7 @@ int wx2msPenStyle(int wx_style) int cstyle; switch (wx_style) { +#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__) case wxDOT: cstyle = PS_DOT; break; @@ -421,8 +414,10 @@ int wx2msPenStyle(int wx_style) case wxTRANSPARENT: cstyle = PS_NULL; break; +#endif case wxUSER_DASH: +#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__) #ifdef __WIN32__ // Win32s doesn't have PS_USERSTYLE if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95) @@ -431,6 +426,7 @@ int wx2msPenStyle(int wx_style) cstyle = PS_DOT; // We must make a choice... This is mine! #else cstyle = PS_DASH; +#endif #endif break; case wxSOLID: