mingw32 compilation fix

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2000-03-15 08:09:17 +00:00
parent 9f303149a0
commit bbd41262ca

View File

@ -1,12 +1,12 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: pen.cpp // Name: msw/pen.cpp
// Purpose: wxPen // Purpose: wxPen
// Author: Julian Smart // Author: Julian Smart
// Modified by: // Modified by:
// Created: 04/01/98 // Created: 04/01/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem // Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows license // Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
@ -59,8 +59,8 @@ wxPenRefData::wxPenRefData(const wxPenRefData& data)
wxPenRefData::~wxPenRefData() wxPenRefData::~wxPenRefData()
{ {
if ( m_hPen ) if ( m_hPen )
::DeleteObject((HPEN) m_hPen); ::DeleteObject((HPEN) m_hPen);
} }
// Pens // Pens
@ -114,7 +114,7 @@ wxPen::wxPen(const wxColour& col, int Width, int Style)
(Style == wxUSER_DASH)) (Style == wxUSER_DASH))
M_PENDATA->m_width = 1; M_PENDATA->m_width = 1;
} }
#endif #endif
RealizeResource(); RealizeResource();
if ( wxThePenList ) if ( wxThePenList )
@ -162,18 +162,18 @@ bool wxPen::RealizeResource()
M_PENDATA->m_cap==wxCAP_ROUND && M_PENDATA->m_cap==wxCAP_ROUND &&
M_PENDATA->m_style!=wxUSER_DASH && M_PENDATA->m_style!=wxUSER_DASH &&
M_PENDATA->m_style!=wxSTIPPLE && M_PENDATA->m_style!=wxSTIPPLE &&
M_PENDATA->m_width <= 1) M_PENDATA->m_width <= 1)
{ {
M_PENDATA->m_hPen = M_PENDATA->m_hPen =
(WXHPEN) CreatePen( wx2msPenStyle(M_PENDATA->m_style), (WXHPEN) CreatePen( wx2msPenStyle(M_PENDATA->m_style),
M_PENDATA->m_width, M_PENDATA->m_width,
ms_colour ); ms_colour );
} }
else else
{ {
DWORD ms_style = PS_GEOMETRIC | wx2msPenStyle(M_PENDATA->m_style); DWORD ms_style = PS_GEOMETRIC | wx2msPenStyle(M_PENDATA->m_style);
switch(M_PENDATA->m_join) switch(M_PENDATA->m_join)
{ {
case wxJOIN_BEVEL: ms_style |= PS_JOIN_BEVEL; break; case wxJOIN_BEVEL: ms_style |= PS_JOIN_BEVEL; break;
case wxJOIN_MITER: ms_style |= PS_JOIN_MITER; break; case wxJOIN_MITER: ms_style |= PS_JOIN_MITER; break;
@ -189,9 +189,9 @@ bool wxPen::RealizeResource()
case wxCAP_ROUND: ms_style |= PS_ENDCAP_ROUND; break; case wxCAP_ROUND: ms_style |= PS_ENDCAP_ROUND; break;
} }
LOGBRUSH logb; LOGBRUSH logb;
switch(M_PENDATA->m_style) switch(M_PENDATA->m_style)
{ {
case wxSTIPPLE: case wxSTIPPLE:
logb.lbStyle = BS_PATTERN ; logb.lbStyle = BS_PATTERN ;
@ -201,72 +201,72 @@ bool wxPen::RealizeResource()
logb.lbHatch = (LONG)0; logb.lbHatch = (LONG)0;
break; break;
case wxBDIAGONAL_HATCH: case wxBDIAGONAL_HATCH:
logb.lbStyle = BS_HATCHED; logb.lbStyle = BS_HATCHED;
logb.lbHatch = HS_BDIAGONAL; logb.lbHatch = HS_BDIAGONAL;
break; break;
case wxCROSSDIAG_HATCH: case wxCROSSDIAG_HATCH:
logb.lbStyle = BS_HATCHED; logb.lbStyle = BS_HATCHED;
logb.lbHatch = HS_DIAGCROSS; logb.lbHatch = HS_DIAGCROSS;
break; break;
case wxFDIAGONAL_HATCH: case wxFDIAGONAL_HATCH:
logb.lbStyle = BS_HATCHED; logb.lbStyle = BS_HATCHED;
logb.lbHatch = HS_FDIAGONAL; logb.lbHatch = HS_FDIAGONAL;
break; break;
case wxCROSS_HATCH: case wxCROSS_HATCH:
logb.lbStyle = BS_HATCHED; logb.lbStyle = BS_HATCHED;
logb.lbHatch = HS_CROSS; logb.lbHatch = HS_CROSS;
break; break;
case wxHORIZONTAL_HATCH: case wxHORIZONTAL_HATCH:
logb.lbStyle = BS_HATCHED; logb.lbStyle = BS_HATCHED;
logb.lbHatch = HS_HORIZONTAL; logb.lbHatch = HS_HORIZONTAL;
break; break;
case wxVERTICAL_HATCH: case wxVERTICAL_HATCH:
logb.lbStyle = BS_HATCHED; logb.lbStyle = BS_HATCHED;
logb.lbHatch = HS_VERTICAL; logb.lbHatch = HS_VERTICAL;
break; break;
default: default:
logb.lbStyle = BS_SOLID; logb.lbStyle = BS_SOLID;
#ifdef __WXDEBUG__ #ifdef __WXDEBUG__
// this should be unnecessary (it's unused) but suppresses the Purigy // this should be unnecessary (it's unused) but suppresses the Purigy
// messages about uninitialized memory read // messages about uninitialized memory read
logb.lbHatch = 0; logb.lbHatch = 0;
#endif #endif
break; break;
} }
logb.lbColor = ms_colour; logb.lbColor = ms_colour;
wxMSWDash *real_dash; wxMSWDash *real_dash;
if (M_PENDATA->m_style==wxUSER_DASH && M_PENDATA->m_nbDash && M_PENDATA->m_dash) if (M_PENDATA->m_style==wxUSER_DASH && M_PENDATA->m_nbDash && M_PENDATA->m_dash)
{ {
real_dash = new wxMSWDash[M_PENDATA->m_nbDash]; real_dash = new wxMSWDash[M_PENDATA->m_nbDash];
int i; int i;
for (i=0; i<M_PENDATA->m_nbDash; 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 else
{ {
real_dash = (wxMSWDash*)NULL; real_dash = (wxMSWDash*)NULL;
} }
// Win32s doesn't have ExtCreatePen function... // Win32s doesn't have ExtCreatePen function...
if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95) if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95)
{
M_PENDATA->m_hPen =
(WXHPEN) ExtCreatePen( ms_style,
M_PENDATA->m_width,
&logb,
M_PENDATA->m_style==wxUSER_DASH
? M_PENDATA->m_nbDash
: 0,
real_dash );
}
else
{ {
M_PENDATA->m_hPen = M_PENDATA->m_hPen =
(WXHPEN) CreatePen( wx2msPenStyle(M_PENDATA->m_style), (WXHPEN) ExtCreatePen( ms_style,
M_PENDATA->m_width, M_PENDATA->m_width,
ms_colour ); &logb,
M_PENDATA->m_style == wxUSER_DASH
? M_PENDATA->m_nbDash
: 0,
(LPDWORD)real_dash );
}
else
{
M_PENDATA->m_hPen =
(WXHPEN) CreatePen( wx2msPenStyle(M_PENDATA->m_style),
M_PENDATA->m_width,
ms_colour );
} }
if (real_dash) if (real_dash)
@ -274,9 +274,9 @@ bool wxPen::RealizeResource()
} }
#else #else
M_PENDATA->m_hPen = M_PENDATA->m_hPen =
(WXHPEN) CreatePen( wx2msPenStyle(M_PENDATA->m_style), (WXHPEN) CreatePen( wx2msPenStyle(M_PENDATA->m_style),
M_PENDATA->m_width, M_PENDATA->m_width,
ms_colour ); ms_colour );
#endif #endif
#ifdef WXDEBUG_CREATE #ifdef WXDEBUG_CREATE
if (M_PENDATA->m_hPen==0) if (M_PENDATA->m_hPen==0)
@ -289,10 +289,10 @@ bool wxPen::RealizeResource()
WXHANDLE wxPen::GetResourceHandle() WXHANDLE wxPen::GetResourceHandle()
{ {
if ( !M_PENDATA ) if ( !M_PENDATA )
return 0; return 0;
else else
return (WXHANDLE)M_PENDATA->m_hPen; return (WXHANDLE)M_PENDATA->m_hPen;
} }
bool wxPen::FreeResource(bool force) bool wxPen::FreeResource(bool force)
@ -313,17 +313,17 @@ bool wxPen::IsFree() const
void wxPen::Unshare() void wxPen::Unshare()
{ {
// Don't change shared data // Don't change shared data
if (!m_refData) if (!m_refData)
{ {
m_refData = new wxPenRefData(); m_refData = new wxPenRefData();
} }
else else
{ {
wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
UnRef(); UnRef();
m_refData = ref; m_refData = ref;
} }
} }
void wxPen::SetColour(const wxColour& col) void wxPen::SetColour(const wxColour& col)
@ -331,7 +331,7 @@ void wxPen::SetColour(const wxColour& col)
Unshare(); Unshare();
M_PENDATA->m_colour = col; M_PENDATA->m_colour = col;
RealizeResource(); RealizeResource();
} }
@ -340,7 +340,7 @@ void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b)
Unshare(); Unshare();
M_PENDATA->m_colour.Set(r, g, b); M_PENDATA->m_colour.Set(r, g, b);
RealizeResource(); RealizeResource();
} }
@ -368,7 +368,7 @@ void wxPen::SetStipple(const wxBitmap& Stipple)
M_PENDATA->m_stipple = Stipple; M_PENDATA->m_stipple = Stipple;
M_PENDATA->m_style = wxSTIPPLE; M_PENDATA->m_style = wxSTIPPLE;
RealizeResource(); RealizeResource();
} }
@ -378,7 +378,7 @@ void wxPen::SetDashes(int nb_dashes, const wxDash *Dash)
M_PENDATA->m_nbDash = nb_dashes; M_PENDATA->m_nbDash = nb_dashes;
M_PENDATA->m_dash = (wxMSWDash *)Dash; M_PENDATA->m_dash = (wxMSWDash *)Dash;
RealizeResource(); RealizeResource();
} }
@ -404,30 +404,30 @@ int wx2msPenStyle(int wx_style)
{ {
int cstyle; int cstyle;
switch (wx_style) switch (wx_style)
{ {
case wxDOT: case wxDOT:
cstyle = PS_DOT; cstyle = PS_DOT;
break; break;
case wxDOT_DASH: case wxDOT_DASH:
cstyle = PS_DASHDOT; cstyle = PS_DASHDOT;
break; break;
case wxSHORT_DASH: case wxSHORT_DASH:
case wxLONG_DASH: case wxLONG_DASH:
cstyle = PS_DASH; cstyle = PS_DASH;
break; break;
case wxTRANSPARENT: case wxTRANSPARENT:
cstyle = PS_NULL; cstyle = PS_NULL;
break; break;
case wxUSER_DASH: case wxUSER_DASH:
#ifdef __WIN32__ #ifdef __WIN32__
// Win32s doesn't have PS_USERSTYLE // Win32s doesn't have PS_USERSTYLE
if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95) if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95)
cstyle = PS_USERSTYLE; cstyle = PS_USERSTYLE;
else else
cstyle = PS_DOT; // We must make a choice... This is mine! cstyle = PS_DOT; // We must make a choice... This is mine!
#else #else
cstyle = PS_DASH; cstyle = PS_DASH;