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:
@@ -216,7 +216,6 @@ protected:
|
|||||||
|
|
||||||
bool CreateFromImage(const wxImage& image, int depth);
|
bool CreateFromImage(const wxImage& image, int depth);
|
||||||
|
|
||||||
virtual wxGDIRefData *CreateGDIRefData() const;
|
|
||||||
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -343,7 +342,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
inline virtual bool Load( wxGDIImage* WXUNUSED(pImage)
|
inline virtual bool Load( wxGDIImage* WXUNUSED(pImage)
|
||||||
,const wxString& WXUNUSED(rName)
|
,const wxString& WXUNUSED(rName)
|
||||||
,HPS WXUNUSED(hPs)
|
,WXHANDLE WXUNUSED(hPs)
|
||||||
,long WXUNUSED(lFlags)
|
,long WXUNUSED(lFlags)
|
||||||
,int WXUNUSED(nDesiredWidth)
|
,int WXUNUSED(nDesiredWidth)
|
||||||
,int WXUNUSED(nDesiredHeight)
|
,int WXUNUSED(nDesiredHeight)
|
||||||
|
@@ -46,8 +46,6 @@ protected:
|
|||||||
// Brush
|
// Brush
|
||||||
class WXDLLEXPORT wxBrush: public wxBrushBase
|
class WXDLLEXPORT wxBrush: public wxBrushBase
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxBrush)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxBrush();
|
wxBrush();
|
||||||
wxBrush(const wxColour& rCol, int nStyle = wxSOLID);
|
wxBrush(const wxColour& rCol, int nStyle = wxSOLID);
|
||||||
@@ -79,7 +77,13 @@ public:
|
|||||||
virtual WXHANDLE GetResourceHandle(void) const;
|
virtual WXHANDLE GetResourceHandle(void) const;
|
||||||
bool FreeResource(bool bForce = false);
|
bool FreeResource(bool bForce = false);
|
||||||
bool IsFree(void) const;
|
bool IsFree(void) const;
|
||||||
void Unshare(void);
|
|
||||||
|
protected:
|
||||||
|
virtual wxGDIRefData *CreateGDIRefData() const;
|
||||||
|
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxBrush)
|
||||||
}; // end of CLASS wxBrush
|
}; // end of CLASS wxBrush
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -113,7 +113,9 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
virtual void DoSetNativeFontInfo(const wxNativeFontInfo& rInfo);
|
virtual void DoSetNativeFontInfo(const wxNativeFontInfo& rInfo);
|
||||||
|
|
||||||
void Unshare(void);
|
// implement wxObject virtuals which are used by AllocExclusive()
|
||||||
|
virtual wxGDIRefData *CreateGDIRefData() const;
|
||||||
|
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_DYNAMIC_CLASS(wxFont)
|
DECLARE_DYNAMIC_CLASS(wxFont)
|
||||||
|
@@ -74,7 +74,7 @@ public:
|
|||||||
WXHCURSOR m_hCursor;
|
WXHCURSOR m_hCursor;
|
||||||
};
|
};
|
||||||
|
|
||||||
UINT m_uId;
|
unsigned int m_uId;
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -204,7 +204,7 @@ public:
|
|||||||
}
|
}
|
||||||
void SetSize(const wxSize& rSize) { SetSize(rSize.x, rSize.y); }
|
void SetSize(const wxSize& rSize) { SetSize(rSize.x, rSize.y); }
|
||||||
|
|
||||||
UINT GetId(void) const
|
unsigned int GetId(void) const
|
||||||
{
|
{
|
||||||
wxGDIImageRefData* pData;
|
wxGDIImageRefData* pData;
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ public:
|
|||||||
else
|
else
|
||||||
return pData->m_uId;
|
return pData->m_uId;
|
||||||
} // end of WxWinGdi_CGDIImage::GetId
|
} // end of WxWinGdi_CGDIImage::GetId
|
||||||
void SetId(UINT uId)
|
void SetId(unsigned int uId)
|
||||||
{
|
{
|
||||||
wxGDIImageRefData* pData;
|
wxGDIImageRefData* pData;
|
||||||
|
|
||||||
@@ -231,6 +231,15 @@ protected:
|
|||||||
virtual wxGDIImageRefData* CreateData() const = 0;
|
virtual wxGDIImageRefData* CreateData() const = 0;
|
||||||
virtual wxGDIRefData *CreateGDIRefData() const { return CreateData(); }
|
virtual wxGDIRefData *CreateGDIRefData() const { return CreateData(); }
|
||||||
|
|
||||||
|
// we can't [efficiently] clone objects of this class
|
||||||
|
virtual wxGDIRefData *
|
||||||
|
CloneGDIRefData(const wxGDIRefData *WXUNUSED(data)) const
|
||||||
|
{
|
||||||
|
wxFAIL_MSG( _T("must be implemented if used") );
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static wxGDIImageHandlerList ms_handlers;
|
static wxGDIImageHandlerList ms_handlers;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include "wx/dc.h"
|
#include "wx/dc.h"
|
||||||
#include "wx/gdiobj.h"
|
#include "wx/gdiobj.h"
|
||||||
|
#include "wx/os2/dc.h"
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
#include "wx/dataobj.h"
|
#include "wx/dataobj.h"
|
||||||
@@ -66,53 +67,76 @@ public:
|
|||||||
void SetHMETAFILE(WXHANDLE mf) ;
|
void SetHMETAFILE(WXHANDLE mf) ;
|
||||||
inline int GetWindowsMappingMode(void) { return M_METAFILEDATA->m_windowsMappingMode; }
|
inline int GetWindowsMappingMode(void) { return M_METAFILEDATA->m_windowsMappingMode; }
|
||||||
void SetWindowsMappingMode(int mm);
|
void SetWindowsMappingMode(int mm);
|
||||||
};
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxMetafileDC: public wxDC
|
|
||||||
{
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxMetafileDC)
|
|
||||||
|
|
||||||
public:
|
|
||||||
// Don't supply origin and extent
|
|
||||||
// Supply them to wxMakeMetaFilePlaceable instead.
|
|
||||||
wxMetafileDC(const wxString& file = wxEmptyString);
|
|
||||||
|
|
||||||
// Supply origin and extent (recommended).
|
|
||||||
// Then don't need to supply them to wxMakeMetaFilePlaceable.
|
|
||||||
wxMetafileDC(const wxString& file, int xext, int yext, int xorg, int yorg);
|
|
||||||
|
|
||||||
virtual ~wxMetafileDC(void);
|
|
||||||
|
|
||||||
// Should be called at end of drawing
|
|
||||||
virtual wxMetafile *Close(void);
|
|
||||||
virtual void SetMapMode(int mode);
|
|
||||||
virtual void GetTextExtent(const wxString& string, long *x, long *y,
|
|
||||||
long *descent = NULL, long *externalLeading = NULL,
|
|
||||||
const wxFont *theFont = NULL, bool use16bit = false) const;
|
|
||||||
|
|
||||||
// Implementation
|
|
||||||
inline wxMetafile *GetMetaFile(void) const { return m_metaFile; }
|
|
||||||
inline void SetMetaFile(wxMetafile *mf) { m_metaFile = mf; }
|
|
||||||
inline int GetWindowsMappingMode(void) const { return m_windowsMappingMode; }
|
|
||||||
inline void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual wxGDIRefData *CreateGDIRefData() const;
|
||||||
|
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxMetafileDCImpl: public wxPMDCImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxMetafileDCImpl(wxDC *owner, const wxString& file = wxEmptyString);
|
||||||
|
wxMetafileDCImpl(wxDC *owner, const wxString& file,
|
||||||
|
int xext, int yext, int xorg, int yorg);
|
||||||
|
virtual ~wxMetafileDCImpl();
|
||||||
|
|
||||||
|
virtual wxMetafile *Close();
|
||||||
|
virtual void SetMapMode(int mode);
|
||||||
|
virtual void DoGetTextExtent(const wxString& string,
|
||||||
|
wxCoord *x, wxCoord *y,
|
||||||
|
wxCoord *descent = NULL,
|
||||||
|
wxCoord *externalLeading = NULL,
|
||||||
|
const wxFont *theFont = NULL) const;
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
wxMetafile *GetMetaFile() const { return m_metaFile; }
|
||||||
|
void SetMetaFile(wxMetafile *mf) { m_metaFile = mf; }
|
||||||
|
int GetWindowsMappingMode() const { return m_windowsMappingMode; }
|
||||||
|
void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void DoGetSize(int *width, int *height) const;
|
||||||
|
|
||||||
int m_windowsMappingMode;
|
int m_windowsMappingMode;
|
||||||
wxMetafile* m_metaFile;
|
wxMetafile* m_metaFile;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#ifndef __WATCOMC__
|
DECLARE_CLASS(wxMetafileDCImpl)
|
||||||
// function hiding warning supression
|
DECLARE_NO_COPY_CLASS(wxMetafileDCImpl)
|
||||||
// still required ??
|
};
|
||||||
inline virtual void GetTextExtent( const wxString& string
|
|
||||||
,long* width
|
class WXDLLEXPORT wxMetafileDC: public wxDC
|
||||||
,long* height
|
{
|
||||||
,long* descent = NULL
|
public:
|
||||||
,long* externalLeading = NULL
|
// Don't supply origin and extent
|
||||||
,wxFont* theFont = NULL
|
// Supply them to wxMakeMetaFilePlaceable instead.
|
||||||
) const
|
wxMetafileDC(const wxString& file = wxEmptyString)
|
||||||
{ GetTextExtent( string, width, height, descent, externalLeading, theFont, false);};
|
:wxDC(new wxMetafileDCImpl( this, file ))
|
||||||
#endif
|
{ }
|
||||||
|
|
||||||
|
// Supply origin and extent (recommended).
|
||||||
|
// Then don't need to supply them to wxMakeMetaFilePlaceable.
|
||||||
|
wxMetafileDC(const wxString& file, int xext, int yext, int xorg, int yorg)
|
||||||
|
: wxDC(new wxMetafileDCImpl( this, file, xext, yext, xorg, yorg ))
|
||||||
|
{ }
|
||||||
|
|
||||||
|
wxMetafile *GetMetafile() const
|
||||||
|
{ return ((wxMetafileDCImpl*)m_pimpl)->GetMetaFile(); }
|
||||||
|
|
||||||
|
virtual ~wxMetafileDC(void)
|
||||||
|
{ delete m_pimpl; }
|
||||||
|
|
||||||
|
// Should be called at end of drawing
|
||||||
|
virtual wxMetafile *Close(void)
|
||||||
|
{ return ((wxMetafileDCImpl*)m_pimpl)->Close(); }
|
||||||
|
|
||||||
|
inline void SetMetaFile(wxMetafile *mf)
|
||||||
|
{ ((wxMetafileDCImpl*)m_pimpl)->SetMetaFile(mf); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_CLASS(wxMetafileDC)
|
||||||
|
DECLARE_NO_COPY_CLASS(wxMetafileDC)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -32,8 +32,6 @@ public:
|
|||||||
|
|
||||||
class WXDLLEXPORT wxPalette: public wxPaletteBase
|
class WXDLLEXPORT wxPalette: public wxPaletteBase
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxPalette)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxPalette();
|
wxPalette();
|
||||||
|
|
||||||
@@ -64,6 +62,13 @@ public:
|
|||||||
inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
|
inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
|
||||||
void SetHPALETTE(WXHPALETTE hPalette);
|
void SetHPALETTE(WXHPALETTE hPalette);
|
||||||
void SetPS(HPS hPS);
|
void SetPS(HPS hPS);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual wxGDIRefData *CreateGDIRefData() const;
|
||||||
|
virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxPalette)
|
||||||
}; // end of CLASS wxPalette
|
}; // end of CLASS wxPalette
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -58,7 +58,6 @@ protected:
|
|||||||
// Pen
|
// Pen
|
||||||
class WXDLLEXPORT wxPen : public wxGDIObject
|
class WXDLLEXPORT wxPen : public wxGDIObject
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxPen)
|
|
||||||
public:
|
public:
|
||||||
wxPen();
|
wxPen();
|
||||||
wxPen( const wxColour& rColour
|
wxPen( const wxColour& rColour
|
||||||
@@ -124,11 +123,19 @@ public:
|
|||||||
bool FreeResource(bool bForce = false);
|
bool FreeResource(bool bForce = false);
|
||||||
virtual WXHANDLE GetResourceHandle(void) const;
|
virtual WXHANDLE GetResourceHandle(void) const;
|
||||||
bool IsFree(void) const;
|
bool IsFree(void) const;
|
||||||
void Unshare(void);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LINEBUNDLE m_vLineBundle;
|
LINEBUNDLE m_vLineBundle;
|
||||||
AREABUNDLE m_vAreaBundle;
|
AREABUNDLE m_vAreaBundle;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual wxGDIRefData* CreateGDIRefData() const;
|
||||||
|
virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* data) const;
|
||||||
|
|
||||||
|
// same as FreeResource() + RealizeResource()
|
||||||
|
bool Recreate();
|
||||||
|
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxPen)
|
||||||
}; // end of CLASS wxPen
|
}; // end of CLASS wxPen
|
||||||
|
|
||||||
extern int wx2os2PenStyle(int nWxStyle);
|
extern int wx2os2PenStyle(int nWxStyle);
|
||||||
|
@@ -64,8 +64,8 @@ public:
|
|||||||
void SetPS(HPS hPS);
|
void SetPS(HPS hPS);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual wxGDIRefData* CreateData(void) const;
|
virtual wxGDIRefData* CreateGDIRefData(void) const;
|
||||||
virtual wxGDIRefData* CloneData(const wxGDIRefData* pData) const;
|
virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* pData) const;
|
||||||
|
|
||||||
virtual bool DoIsEqual(const wxRegion& region) const;
|
virtual bool DoIsEqual(const wxRegion& region) const;
|
||||||
virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
|
virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
|
||||||
@@ -82,7 +82,6 @@ protected:
|
|||||||
|
|
||||||
class WXDLLEXPORT wxRegionIterator : public wxObject
|
class WXDLLEXPORT wxRegionIterator : public wxObject
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxRegionIterator);
|
|
||||||
public:
|
public:
|
||||||
wxRegionIterator();
|
wxRegionIterator();
|
||||||
wxRegionIterator(const wxRegion& rRegion);
|
wxRegionIterator(const wxRegion& rRegion);
|
||||||
@@ -110,6 +109,8 @@ private:
|
|||||||
long m_lNumRects;
|
long m_lNumRects;
|
||||||
wxRegion m_vRegion;
|
wxRegion m_vRegion;
|
||||||
wxRect* m_pRects;
|
wxRect* m_pRects;
|
||||||
|
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxRegionIterator)
|
||||||
}; // end of wxRegionIterator
|
}; // end of wxRegionIterator
|
||||||
|
|
||||||
#endif // _WX_OS2_REGION_H_
|
#endif // _WX_OS2_REGION_H_
|
||||||
|
@@ -94,11 +94,6 @@ void wxBitmapRefData::Free()
|
|||||||
// wxBitmap creation
|
// wxBitmap creation
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
wxGDIRefData* wxBitmap::CreateGDIRefData() const
|
|
||||||
{
|
|
||||||
return new wxBitmapRefData;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const
|
wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const
|
||||||
{
|
{
|
||||||
return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data));
|
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));
|
return (M_BRUSHDATA && (M_BRUSHDATA->m_hBrush == 0));
|
||||||
} // end of wxBrush::IsFree
|
} // 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 )
|
void wxBrush::SetColour( const wxColour& rColour )
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_BRUSHDATA->m_vColour = rColour;
|
M_BRUSHDATA->m_vColour = rColour;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxBrush::SetColour(unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
|
void wxBrush::SetColour(unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_BRUSHDATA->m_vColour.Set( cRed, cGreen, cBlue );
|
M_BRUSHDATA->m_vColour.Set( cRed, cGreen, cBlue );
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxBrush::SetColour
|
} // end of wxBrush::SetColour
|
||||||
|
|
||||||
void wxBrush::SetStyle(int nStyle)
|
void wxBrush::SetStyle(int nStyle)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_BRUSHDATA->m_nStyle = nStyle;
|
M_BRUSHDATA->m_nStyle = nStyle;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxBrush::SetStyle
|
} // end of wxBrush::SetStyle
|
||||||
@@ -276,7 +259,7 @@ void wxBrush::SetStipple(
|
|||||||
const wxBitmap& rStipple
|
const wxBitmap& rStipple
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_BRUSHDATA->m_vStipple = rStipple;
|
M_BRUSHDATA->m_vStipple = rStipple;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxBrush::SetStipple
|
} // end of wxBrush::SetStipple
|
||||||
@@ -285,7 +268,7 @@ void wxBrush::SetPS(
|
|||||||
HPS hPS
|
HPS hPS
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
if (M_BRUSHDATA->m_hBrush)
|
if (M_BRUSHDATA->m_hBrush)
|
||||||
::GpiDestroyPS(M_BRUSHDATA->m_hBrush);
|
::GpiDestroyPS(M_BRUSHDATA->m_hBrush);
|
||||||
M_BRUSHDATA->m_hBrush = hPS;
|
M_BRUSHDATA->m_hBrush = hPS;
|
||||||
@@ -304,3 +287,12 @@ bool wxBrush::operator == (
|
|||||||
return ( *(wxBrushRefData*)m_refData == *(wxBrushRefData*)brush.m_refData );
|
return ( *(wxBrushRefData*)m_refData == *(wxBrushRefData*)brush.m_refData );
|
||||||
} // end of wxBrush::operator ==
|
} // 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
|
// 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()
|
bool wxFont::RealizeResource()
|
||||||
{
|
{
|
||||||
if ( GetResourceHandle() )
|
if ( GetResourceHandle() )
|
||||||
@@ -965,21 +975,6 @@ bool wxFont::IsFree() const
|
|||||||
return M_FONTDATA && (M_FONTDATA->GetHFONT() == 0);
|
return M_FONTDATA && (M_FONTDATA->GetHFONT() == 0);
|
||||||
} // end of wxFont::IsFree
|
} // 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
|
// change font attribute: we recreate font when doing it
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -988,7 +983,7 @@ void wxFont::SetPointSize(
|
|||||||
int nPointSize
|
int nPointSize
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetPointSize(nPointSize);
|
M_FONTDATA->SetPointSize(nPointSize);
|
||||||
|
|
||||||
@@ -999,7 +994,7 @@ void wxFont::SetFamily(
|
|||||||
int nFamily
|
int nFamily
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetFamily(nFamily);
|
M_FONTDATA->SetFamily(nFamily);
|
||||||
|
|
||||||
@@ -1010,7 +1005,7 @@ void wxFont::SetStyle(
|
|||||||
int nStyle
|
int nStyle
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetStyle(nStyle);
|
M_FONTDATA->SetStyle(nStyle);
|
||||||
|
|
||||||
@@ -1021,7 +1016,7 @@ void wxFont::SetWeight(
|
|||||||
int nWeight
|
int nWeight
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetWeight(nWeight);
|
M_FONTDATA->SetWeight(nWeight);
|
||||||
|
|
||||||
@@ -1032,7 +1027,7 @@ bool wxFont::SetFaceName(
|
|||||||
const wxString& rsFaceName
|
const wxString& rsFaceName
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
bool refdataok = M_FONTDATA->SetFaceName(rsFaceName);
|
bool refdataok = M_FONTDATA->SetFaceName(rsFaceName);
|
||||||
|
|
||||||
@@ -1045,7 +1040,7 @@ void wxFont::SetUnderlined(
|
|||||||
bool bUnderlined
|
bool bUnderlined
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetUnderlined(bUnderlined);
|
M_FONTDATA->SetUnderlined(bUnderlined);
|
||||||
|
|
||||||
@@ -1056,7 +1051,7 @@ void wxFont::SetEncoding(
|
|||||||
wxFontEncoding vEncoding
|
wxFontEncoding vEncoding
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetEncoding(vEncoding);
|
M_FONTDATA->SetEncoding(vEncoding);
|
||||||
|
|
||||||
@@ -1067,7 +1062,7 @@ void wxFont::DoSetNativeFontInfo(
|
|||||||
const wxNativeFontInfo& rInfo
|
const wxNativeFontInfo& rInfo
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
FreeResource();
|
FreeResource();
|
||||||
|
|
||||||
@@ -1147,7 +1142,7 @@ void wxFont::SetFM( PFONTMETRICS pFM, int nNumFonts )
|
|||||||
|
|
||||||
void wxFont::SetPS( HPS hPS )
|
void wxFont::SetPS( HPS hPS )
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
|
|
||||||
M_FONTDATA->SetPS(hPS);
|
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)
|
bool wxMetafile::SetClipboard(int width, int height)
|
||||||
{
|
{
|
||||||
#if !wxUSE_CLIPBOARD
|
#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,
|
// Original constructor that does not takes origin and extent. If you use this,
|
||||||
// *DO* give origin/extent arguments to wxMakeMetafilePlaceable.
|
// *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_metaFile = NULL;
|
||||||
m_minX = 10000;
|
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
|
// New constructor that takes origin and extent. If you use this, don't
|
||||||
// give origin/extent arguments to wxMakeMetafilePlaceable.
|
// give origin/extent arguments to wxMakeMetafilePlaceable.
|
||||||
wxMetafileDC::wxMetafileDC( const wxString& file,
|
wxMetafileDCImpl::wxMetafileDCImpl( wxDC *owner, const wxString& file,
|
||||||
int WXUNUSED(xext),
|
int WXUNUSED(xext),
|
||||||
int WXUNUSED(yext),
|
int WXUNUSED(yext),
|
||||||
int WXUNUSED(xorg),
|
int WXUNUSED(xorg),
|
||||||
int WXUNUSED(yorg) )
|
int WXUNUSED(yorg) )
|
||||||
|
: wxPMDCImpl(owner)
|
||||||
{
|
{
|
||||||
m_minX = 10000;
|
m_minX = 10000;
|
||||||
m_minY = 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)
|
SetMapMode(wxMM_TEXT); // NOTE: does not set HDC mapmode (this is correct)
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMetafileDC::~wxMetafileDC(void)
|
wxMetafileDCImpl::~wxMetafileDCImpl(void)
|
||||||
{
|
{
|
||||||
m_hDC = 0;
|
m_hDC = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMetafileDC::GetTextExtent(const wxString& WXUNUSED(string),
|
void wxMetafileDCImpl::DoGetTextExtent(const wxString& WXUNUSED(string),
|
||||||
long *WXUNUSED(x),
|
wxCoord *WXUNUSED(x),
|
||||||
long *WXUNUSED(y),
|
wxCoord *WXUNUSED(y),
|
||||||
long *WXUNUSED(descent),
|
wxCoord *WXUNUSED(descent),
|
||||||
long *WXUNUSED(externalLeading),
|
wxCoord *WXUNUSED(externalLeading),
|
||||||
const wxFont *theFont,
|
const wxFont *theFont) const
|
||||||
bool WXUNUSED(use16bit) ) const
|
|
||||||
{
|
{
|
||||||
const wxFont *fontToUse = theFont;
|
const wxFont *fontToUse = theFont;
|
||||||
if (!fontToUse)
|
if (!fontToUse)
|
||||||
@@ -217,7 +228,7 @@ void wxMetafileDC::GetTextExtent(const wxString& WXUNUSED(string),
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMetafile *wxMetafileDC::Close(void)
|
wxMetafile *wxMetafileDCImpl::Close(void)
|
||||||
{
|
{
|
||||||
SelectOldObjects(m_hDC);
|
SelectOldObjects(m_hDC);
|
||||||
HANDLE mf = 0; // TODO: CloseMetaFile((HDC) m_hDC);
|
HANDLE mf = 0; // TODO: CloseMetaFile((HDC) m_hDC);
|
||||||
@@ -232,7 +243,7 @@ wxMetafile *wxMetafileDC::Close(void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMetafileDC::SetMapMode(int mode)
|
void wxMetafileDCImpl::SetMapMode(int mode)
|
||||||
{
|
{
|
||||||
m_mappingMode = mode;
|
m_mappingMode = mode;
|
||||||
|
|
||||||
|
@@ -104,6 +104,16 @@ bool wxPalette::Create( int n,
|
|||||||
return true;
|
return true;
|
||||||
} // end of wxPalette::Create
|
} // 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,
|
int wxPalette::GetPixel( unsigned char cRed,
|
||||||
unsigned char cGreen,
|
unsigned char cGreen,
|
||||||
unsigned char cBlue) const
|
unsigned char cBlue) const
|
||||||
|
@@ -327,38 +327,33 @@ bool wxPen::IsFree() const
|
|||||||
return (M_PENDATA && M_PENDATA->m_hPen == 0);
|
return (M_PENDATA && M_PENDATA->m_hPen == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxPen::Unshare()
|
wxGDIRefData* wxPen::CreateGDIRefData() const
|
||||||
{
|
{
|
||||||
// Don't change shared data
|
return new wxPenRefData;
|
||||||
if (!m_refData)
|
}
|
||||||
{
|
|
||||||
m_refData = new wxPenRefData();
|
wxGDIRefData* wxPen::CloneGDIRefData(const wxGDIRefData* data) const
|
||||||
}
|
{
|
||||||
else
|
return new wxPenRefData(*wx_static_cast(const wxPenRefData*, data));
|
||||||
{
|
}
|
||||||
wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData);
|
|
||||||
UnRef();
|
|
||||||
m_refData = ref;
|
|
||||||
}
|
|
||||||
} // end of wxPen::Unshare
|
|
||||||
|
|
||||||
void wxPen::SetColour( const wxColour& rColour )
|
void wxPen::SetColour( const wxColour& rColour )
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_vColour = rColour;
|
M_PENDATA->m_vColour = rColour;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxPen::SetColour
|
} // end of wxPen::SetColour
|
||||||
|
|
||||||
void wxPen::SetColour( unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
|
void wxPen::SetColour( unsigned char cRed, unsigned char cGreen, unsigned char cBlue)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_vColour.Set(cRed, cGreen, cBlue);
|
M_PENDATA->m_vColour.Set(cRed, cGreen, cBlue);
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxPen::SetColour
|
} // end of wxPen::SetColour
|
||||||
|
|
||||||
void wxPen::SetPS( HPS hPS )
|
void wxPen::SetPS( HPS hPS )
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
if (M_PENDATA->m_hPen)
|
if (M_PENDATA->m_hPen)
|
||||||
::GpiDestroyPS(M_PENDATA->m_hPen);
|
::GpiDestroyPS(M_PENDATA->m_hPen);
|
||||||
M_PENDATA->m_hPen = hPS;
|
M_PENDATA->m_hPen = hPS;
|
||||||
@@ -369,7 +364,7 @@ void wxPen::SetWidth(
|
|||||||
int nWidth
|
int nWidth
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_nWidth = nWidth;
|
M_PENDATA->m_nWidth = nWidth;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxPen::SetWidth
|
} // end of wxPen::SetWidth
|
||||||
@@ -378,7 +373,7 @@ void wxPen::SetStyle(
|
|||||||
int nStyle
|
int nStyle
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_nStyle = nStyle;
|
M_PENDATA->m_nStyle = nStyle;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxPen::SetStyle
|
} // end of wxPen::SetStyle
|
||||||
@@ -387,7 +382,7 @@ void wxPen::SetStipple(
|
|||||||
const wxBitmap& rStipple
|
const wxBitmap& rStipple
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_vStipple = rStipple;
|
M_PENDATA->m_vStipple = rStipple;
|
||||||
M_PENDATA->m_nStyle = wxSTIPPLE;
|
M_PENDATA->m_nStyle = wxSTIPPLE;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
@@ -405,7 +400,7 @@ void wxPen::SetJoin(
|
|||||||
int nJoin
|
int nJoin
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_nJoin = nJoin;
|
M_PENDATA->m_nJoin = nJoin;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxPen::SetJoin
|
} // end of wxPen::SetJoin
|
||||||
@@ -414,7 +409,7 @@ void wxPen::SetCap(
|
|||||||
int nCap
|
int nCap
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Unshare();
|
AllocExclusive();
|
||||||
M_PENDATA->m_nCap = nCap;
|
M_PENDATA->m_nCap = nCap;
|
||||||
RealizeResource();
|
RealizeResource();
|
||||||
} // end of wxPen::SetCap
|
} // end of wxPen::SetCap
|
||||||
|
@@ -233,12 +233,12 @@ wxRegion::~wxRegion()
|
|||||||
{
|
{
|
||||||
} // end of wxRegion::~wxRegion
|
} // end of wxRegion::~wxRegion
|
||||||
|
|
||||||
wxGDIRefData *wxRegion::CreateData() const
|
wxGDIRefData *wxRegion::CreateGDIRefData() const
|
||||||
{
|
{
|
||||||
return new wxRegionRefData;
|
return new wxRegionRefData;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGDIRefData *wxRegion::CloneData(const wxGDIRefData *data) const
|
wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
|
||||||
{
|
{
|
||||||
return new wxRegionRefData(*(wxRegionRefData *)data);
|
return new wxRegionRefData(*(wxRegionRefData *)data);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user