Implemented wxGDIObject::Create/CloneGDIRefData() for the relevant classes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -94,11 +94,6 @@ void wxBitmapRefData::Free()
|
||||
// wxBitmap creation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxGDIRefData* wxBitmap::CreateGDIRefData() const
|
||||
{
|
||||
return new wxBitmapRefData;
|
||||
}
|
||||
|
||||
wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const
|
||||
{
|
||||
return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data));
|
||||
|
@@ -234,40 +234,23 @@ bool wxBrush::IsFree() const
|
||||
return (M_BRUSHDATA && (M_BRUSHDATA->m_hBrush == 0));
|
||||
} // end of wxBrush::IsFree
|
||||
|
||||
void wxBrush::Unshare()
|
||||
{
|
||||
//
|
||||
// Don't change shared data
|
||||
//
|
||||
if (!m_refData)
|
||||
{
|
||||
m_refData = new wxBrushRefData();
|
||||
}
|
||||
else
|
||||
{
|
||||
wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData);
|
||||
UnRef();
|
||||
m_refData = ref;
|
||||
}
|
||||
} // end of wxBrush::Unshare
|
||||
|
||||
void wxBrush::SetColour( const wxColour& rColour )
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_BRUSHDATA->m_vColour = rColour;
|
||||
RealizeResource();
|
||||
}
|
||||
|
||||
void wxBrush::SetColour(unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_BRUSHDATA->m_vColour.Set( cRed, cGreen, cBlue );
|
||||
RealizeResource();
|
||||
} // end of wxBrush::SetColour
|
||||
|
||||
void wxBrush::SetStyle(int nStyle)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_BRUSHDATA->m_nStyle = nStyle;
|
||||
RealizeResource();
|
||||
} // end of wxBrush::SetStyle
|
||||
@@ -276,7 +259,7 @@ void wxBrush::SetStipple(
|
||||
const wxBitmap& rStipple
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_BRUSHDATA->m_vStipple = rStipple;
|
||||
RealizeResource();
|
||||
} // end of wxBrush::SetStipple
|
||||
@@ -285,7 +268,7 @@ void wxBrush::SetPS(
|
||||
HPS hPS
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
if (M_BRUSHDATA->m_hBrush)
|
||||
::GpiDestroyPS(M_BRUSHDATA->m_hBrush);
|
||||
M_BRUSHDATA->m_hBrush = hPS;
|
||||
@@ -304,3 +287,12 @@ bool wxBrush::operator == (
|
||||
return ( *(wxBrushRefData*)m_refData == *(wxBrushRefData*)brush.m_refData );
|
||||
} // end of wxBrush::operator ==
|
||||
|
||||
wxGDIRefData *wxBrush::CreateGDIRefData() const
|
||||
{
|
||||
return new wxBrushRefData;
|
||||
}
|
||||
|
||||
wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
|
||||
{
|
||||
return new wxBrushRefData(*(const wxBrushRefData *)data);
|
||||
}
|
||||
|
@@ -931,6 +931,16 @@ wxFont::~wxFont()
|
||||
// here, but we may check that font definition is true
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxGDIRefData *wxFont::CreateGDIRefData() const
|
||||
{
|
||||
return new wxFontRefData();
|
||||
}
|
||||
|
||||
wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
|
||||
{
|
||||
return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
|
||||
}
|
||||
|
||||
bool wxFont::RealizeResource()
|
||||
{
|
||||
if ( GetResourceHandle() )
|
||||
@@ -965,21 +975,6 @@ bool wxFont::IsFree() const
|
||||
return M_FONTDATA && (M_FONTDATA->GetHFONT() == 0);
|
||||
} // end of wxFont::IsFree
|
||||
|
||||
void wxFont::Unshare()
|
||||
{
|
||||
// Don't change shared data
|
||||
if ( !m_refData )
|
||||
{
|
||||
m_refData = new wxFontRefData();
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFontRefData* ref = new wxFontRefData(*M_FONTDATA);
|
||||
UnRef();
|
||||
m_refData = ref;
|
||||
}
|
||||
} // end of wxFont::Unshare
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// change font attribute: we recreate font when doing it
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -988,7 +983,7 @@ void wxFont::SetPointSize(
|
||||
int nPointSize
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetPointSize(nPointSize);
|
||||
|
||||
@@ -999,7 +994,7 @@ void wxFont::SetFamily(
|
||||
int nFamily
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetFamily(nFamily);
|
||||
|
||||
@@ -1010,7 +1005,7 @@ void wxFont::SetStyle(
|
||||
int nStyle
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetStyle(nStyle);
|
||||
|
||||
@@ -1021,7 +1016,7 @@ void wxFont::SetWeight(
|
||||
int nWeight
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetWeight(nWeight);
|
||||
|
||||
@@ -1032,7 +1027,7 @@ bool wxFont::SetFaceName(
|
||||
const wxString& rsFaceName
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
bool refdataok = M_FONTDATA->SetFaceName(rsFaceName);
|
||||
|
||||
@@ -1045,7 +1040,7 @@ void wxFont::SetUnderlined(
|
||||
bool bUnderlined
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetUnderlined(bUnderlined);
|
||||
|
||||
@@ -1056,7 +1051,7 @@ void wxFont::SetEncoding(
|
||||
wxFontEncoding vEncoding
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetEncoding(vEncoding);
|
||||
|
||||
@@ -1067,7 +1062,7 @@ void wxFont::DoSetNativeFontInfo(
|
||||
const wxNativeFontInfo& rInfo
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
FreeResource();
|
||||
|
||||
@@ -1147,7 +1142,7 @@ void wxFont::SetFM( PFONTMETRICS pFM, int nNumFonts )
|
||||
|
||||
void wxFont::SetPS( HPS hPS )
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->SetPS(hPS);
|
||||
|
||||
|
@@ -66,6 +66,16 @@ wxMetafile::~wxMetafile(void)
|
||||
{
|
||||
}
|
||||
|
||||
wxGDIRefData *wxMetafile::CreateGDIRefData() const
|
||||
{
|
||||
return new wxMetafileRefData;
|
||||
}
|
||||
|
||||
wxGDIRefData *wxMetafile::CloneGDIRefData(const wxGDIRefData *data) const
|
||||
{
|
||||
return new wxMetafileRefData(*wx_static_cast(const wxMetafileRefData *, data));
|
||||
}
|
||||
|
||||
bool wxMetafile::SetClipboard(int width, int height)
|
||||
{
|
||||
#if !wxUSE_CLIPBOARD
|
||||
@@ -122,7 +132,8 @@ void wxMetafile::SetWindowsMappingMode(int mm)
|
||||
|
||||
// Original constructor that does not takes origin and extent. If you use this,
|
||||
// *DO* give origin/extent arguments to wxMakeMetafilePlaceable.
|
||||
wxMetafileDC::wxMetafileDC(const wxString& file)
|
||||
wxMetafileDCImpl::wxMetafileDCImpl(wxDC *owner, const wxString& file)
|
||||
: wxPMDCImpl(owner)
|
||||
{
|
||||
m_metaFile = NULL;
|
||||
m_minX = 10000;
|
||||
@@ -152,11 +163,12 @@ wxMetafileDC::wxMetafileDC(const wxString& file)
|
||||
|
||||
// New constructor that takes origin and extent. If you use this, don't
|
||||
// give origin/extent arguments to wxMakeMetafilePlaceable.
|
||||
wxMetafileDC::wxMetafileDC( const wxString& file,
|
||||
int WXUNUSED(xext),
|
||||
int WXUNUSED(yext),
|
||||
int WXUNUSED(xorg),
|
||||
int WXUNUSED(yorg) )
|
||||
wxMetafileDCImpl::wxMetafileDCImpl( wxDC *owner, const wxString& file,
|
||||
int WXUNUSED(xext),
|
||||
int WXUNUSED(yext),
|
||||
int WXUNUSED(xorg),
|
||||
int WXUNUSED(yorg) )
|
||||
: wxPMDCImpl(owner)
|
||||
{
|
||||
m_minX = 10000;
|
||||
m_minY = 10000;
|
||||
@@ -178,18 +190,17 @@ wxMetafileDC::wxMetafileDC( const wxString& file,
|
||||
SetMapMode(wxMM_TEXT); // NOTE: does not set HDC mapmode (this is correct)
|
||||
}
|
||||
|
||||
wxMetafileDC::~wxMetafileDC(void)
|
||||
wxMetafileDCImpl::~wxMetafileDCImpl(void)
|
||||
{
|
||||
m_hDC = 0;
|
||||
}
|
||||
|
||||
void wxMetafileDC::GetTextExtent(const wxString& WXUNUSED(string),
|
||||
long *WXUNUSED(x),
|
||||
long *WXUNUSED(y),
|
||||
long *WXUNUSED(descent),
|
||||
long *WXUNUSED(externalLeading),
|
||||
const wxFont *theFont,
|
||||
bool WXUNUSED(use16bit) ) const
|
||||
void wxMetafileDCImpl::DoGetTextExtent(const wxString& WXUNUSED(string),
|
||||
wxCoord *WXUNUSED(x),
|
||||
wxCoord *WXUNUSED(y),
|
||||
wxCoord *WXUNUSED(descent),
|
||||
wxCoord *WXUNUSED(externalLeading),
|
||||
const wxFont *theFont) const
|
||||
{
|
||||
const wxFont *fontToUse = theFont;
|
||||
if (!fontToUse)
|
||||
@@ -217,7 +228,7 @@ void wxMetafileDC::GetTextExtent(const wxString& WXUNUSED(string),
|
||||
*/
|
||||
}
|
||||
|
||||
wxMetafile *wxMetafileDC::Close(void)
|
||||
wxMetafile *wxMetafileDCImpl::Close(void)
|
||||
{
|
||||
SelectOldObjects(m_hDC);
|
||||
HANDLE mf = 0; // TODO: CloseMetaFile((HDC) m_hDC);
|
||||
@@ -232,7 +243,7 @@ wxMetafile *wxMetafileDC::Close(void)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void wxMetafileDC::SetMapMode(int mode)
|
||||
void wxMetafileDCImpl::SetMapMode(int mode)
|
||||
{
|
||||
m_mappingMode = mode;
|
||||
|
||||
|
@@ -104,6 +104,16 @@ bool wxPalette::Create( int n,
|
||||
return true;
|
||||
} // end of wxPalette::Create
|
||||
|
||||
wxGDIRefData *wxPalette::CreateGDIRefData() const
|
||||
{
|
||||
return new wxPaletteRefData;
|
||||
}
|
||||
|
||||
wxGDIRefData *wxPalette::CloneGDIRefData(const wxGDIRefData *data) const
|
||||
{
|
||||
return new wxPaletteRefData(*wx_static_cast(const wxPaletteRefData *, data));
|
||||
}
|
||||
|
||||
int wxPalette::GetPixel( unsigned char cRed,
|
||||
unsigned char cGreen,
|
||||
unsigned char cBlue) const
|
||||
|
@@ -327,38 +327,33 @@ bool wxPen::IsFree() const
|
||||
return (M_PENDATA && M_PENDATA->m_hPen == 0);
|
||||
}
|
||||
|
||||
void wxPen::Unshare()
|
||||
wxGDIRefData* wxPen::CreateGDIRefData() const
|
||||
{
|
||||
// Don't change shared data
|
||||
if (!m_refData)
|
||||
{
|
||||
m_refData = new wxPenRefData();
|
||||
}
|
||||
else
|
||||
{
|
||||
wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
|
||||
UnRef();
|
||||
m_refData = ref;
|
||||
}
|
||||
} // end of wxPen::Unshare
|
||||
return new wxPenRefData;
|
||||
}
|
||||
|
||||
wxGDIRefData* wxPen::CloneGDIRefData(const wxGDIRefData* data) const
|
||||
{
|
||||
return new wxPenRefData(*wx_static_cast(const wxPenRefData*, data));
|
||||
}
|
||||
|
||||
void wxPen::SetColour( const wxColour& rColour )
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_vColour = rColour;
|
||||
RealizeResource();
|
||||
} // end of wxPen::SetColour
|
||||
|
||||
void wxPen::SetColour( unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_vColour.Set(cRed, cGreen, cBlue);
|
||||
RealizeResource();
|
||||
} // end of wxPen::SetColour
|
||||
|
||||
void wxPen::SetPS( HPS hPS )
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
if (M_PENDATA->m_hPen)
|
||||
::GpiDestroyPS(M_PENDATA->m_hPen);
|
||||
M_PENDATA->m_hPen = hPS;
|
||||
@@ -369,7 +364,7 @@ void wxPen::SetWidth(
|
||||
int nWidth
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_nWidth = nWidth;
|
||||
RealizeResource();
|
||||
} // end of wxPen::SetWidth
|
||||
@@ -378,7 +373,7 @@ void wxPen::SetStyle(
|
||||
int nStyle
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_nStyle = nStyle;
|
||||
RealizeResource();
|
||||
} // end of wxPen::SetStyle
|
||||
@@ -387,7 +382,7 @@ void wxPen::SetStipple(
|
||||
const wxBitmap& rStipple
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_vStipple = rStipple;
|
||||
M_PENDATA->m_nStyle = wxSTIPPLE;
|
||||
RealizeResource();
|
||||
@@ -405,7 +400,7 @@ void wxPen::SetJoin(
|
||||
int nJoin
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_nJoin = nJoin;
|
||||
RealizeResource();
|
||||
} // end of wxPen::SetJoin
|
||||
@@ -414,7 +409,7 @@ void wxPen::SetCap(
|
||||
int nCap
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
AllocExclusive();
|
||||
M_PENDATA->m_nCap = nCap;
|
||||
RealizeResource();
|
||||
} // end of wxPen::SetCap
|
||||
|
@@ -233,12 +233,12 @@ wxRegion::~wxRegion()
|
||||
{
|
||||
} // end of wxRegion::~wxRegion
|
||||
|
||||
wxGDIRefData *wxRegion::CreateData() const
|
||||
wxGDIRefData *wxRegion::CreateGDIRefData() const
|
||||
{
|
||||
return new wxRegionRefData;
|
||||
}
|
||||
|
||||
wxGDIRefData *wxRegion::CloneData(const wxGDIRefData *data) const
|
||||
wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
|
||||
{
|
||||
return new wxRegionRefData(*(wxRegionRefData *)data);
|
||||
}
|
||||
|
Reference in New Issue
Block a user