X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04ef50df3a0fa3c343800c554e609f98fc7575cc..6726a6b09748c707351987da56226ac0316d1a00:/src/msw/pen.cpp diff --git a/src/msw/pen.cpp b/src/msw/pen.cpp index e07b7a1e76..7f1103f09b 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!!] -#if defined(__WIN32__) && !defined(__WXMICROWIN__) +#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 && @@ -227,7 +219,7 @@ bool wxPen::RealizeResource() default: logb.lbStyle = BS_SOLID; #ifdef __WXDEBUG__ - // this should be unnecessary (it's unused) but suppresses the Purigy + // this should be unnecessary (it's unused) but suppresses the Purify // messages about uninitialized memory read logb.lbHatch = 0; #endif @@ -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(); } @@ -402,46 +394,29 @@ void wxPen::SetCap(int Cap) int wx2msPenStyle(int wx_style) { - int cstyle; +#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__) switch (wx_style) { -#if !defined(__WXMICROWIN__) - case wxDOT: - cstyle = PS_DOT; - break; - - case wxDOT_DASH: - cstyle = PS_DASHDOT; - break; - - case wxSHORT_DASH: - case wxLONG_DASH: - cstyle = PS_DASH; - break; - - case wxTRANSPARENT: - cstyle = PS_NULL; - break; -#endif + case wxDOT: + return PS_DOT; - case wxUSER_DASH: -#if !defined(__WXMICROWIN__) -#ifdef __WIN32__ - // Win32s doesn't have PS_USERSTYLE - if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95) - cstyle = PS_USERSTYLE; - else - cstyle = PS_DOT; // We must make a choice... This is mine! + case wxDOT_DASH: + return PS_DASHDOT; + + case wxSHORT_DASH: + case wxLONG_DASH: + return PS_DASH; + + case wxTRANSPARENT: + return PS_NULL; + + case wxUSER_DASH: + // if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95) + return PS_USERSTYLE; + } #else - cstyle = PS_DASH; -#endif + wxUnusedVar(wx_style); #endif - break; - case wxSOLID: - default: - cstyle = PS_SOLID; - break; - } - return cstyle; + return PS_SOLID; }