]> git.saurik.com Git - wxWidgets.git/commitdiff
Implemented wxGDIObject::Create/CloneGDIRefData() for the relevant classes.
authorStefan Neis <Stefan.Neis@t-online.de>
Sat, 12 Jan 2008 15:05:15 +0000 (15:05 +0000)
committerStefan Neis <Stefan.Neis@t-online.de>
Sat, 12 Jan 2008 15:05:15 +0000 (15:05 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

15 files changed:
include/wx/os2/bitmap.h
include/wx/os2/brush.h
include/wx/os2/font.h
include/wx/os2/gdiimage.h
include/wx/os2/metafile.h
include/wx/os2/palette.h
include/wx/os2/pen.h
include/wx/os2/region.h
src/os2/bitmap.cpp
src/os2/brush.cpp
src/os2/font.cpp
src/os2/metafile.cpp
src/os2/palette.cpp
src/os2/pen.cpp
src/os2/region.cpp

index ff7fccded8bb10125bfede8cdeae09c48ac12b2f..2431cd3360500a99aca65cfc6eacd4d82e55386a 100644 (file)
@@ -216,7 +216,6 @@ protected:
 
     bool CreateFromImage(const wxImage& image, int depth);
 
-    virtual wxGDIRefData *CreateGDIRefData() const;
     virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
@@ -343,7 +342,7 @@ public:
 private:
     inline virtual bool Load( wxGDIImage*     WXUNUSED(pImage)
                              ,const wxString& WXUNUSED(rName)
-                             ,HPS             WXUNUSED(hPs)
+                             ,WXHANDLE        WXUNUSED(hPs)
                              ,long            WXUNUSED(lFlags)
                              ,int             WXUNUSED(nDesiredWidth)
                              ,int             WXUNUSED(nDesiredHeight)
index 4d62415e98f70658f699237064d5660357ffca9b..cce9af579d507dde8f1e3527ce0ee43a2b095512 100644 (file)
@@ -46,8 +46,6 @@ protected:
 // Brush
 class WXDLLEXPORT wxBrush: public wxBrushBase
 {
-    DECLARE_DYNAMIC_CLASS(wxBrush)
-
 public:
     wxBrush();
     wxBrush(const wxColour& rCol, int nStyle = wxSOLID);
@@ -79,7 +77,13 @@ public:
     virtual WXHANDLE GetResourceHandle(void) const;
     bool     FreeResource(bool bForce = false);
     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
 
 #endif
index 92e0b22698ddc88578ecafb6cc2407ad5d7435b7..02da7104829dd43117d93d47b93fbadaed463870 100644 (file)
@@ -113,7 +113,9 @@ public:
 protected:
     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:
     DECLARE_DYNAMIC_CLASS(wxFont)
index de43fec73a7412fbdfa0e66670d009708b5eabf8..98422387cd5634592699ded2c55b7ba29e367d77 100644 (file)
@@ -74,7 +74,7 @@ public:
         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); }
 
-    UINT GetId(void) const
+    unsigned int GetId(void) const
     {
         wxGDIImageRefData*          pData;
 
@@ -214,7 +214,7 @@ public:
         else
             return pData->m_uId;
     } // end of WxWinGdi_CGDIImage::GetId
-    void SetId(UINT uId)
+    void SetId(unsigned int uId)
     {
         wxGDIImageRefData*          pData;
 
@@ -231,6 +231,15 @@ protected:
     virtual wxGDIImageRefData* CreateData() const = 0;
     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;
 };
 
index 6a79199a78eadbeb85c7e4e99eb1f6b79bd4e56a..03818f44b171d696ba177dce1631b1d86b438f8e 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "wx/dc.h"
 #include "wx/gdiobj.h"
+#include "wx/os2/dc.h"
 
 #if wxUSE_DRAG_AND_DROP
 #include "wx/dataobj.h"
@@ -66,53 +67,76 @@ public:
     void SetHMETAFILE(WXHANDLE mf) ;
     inline int GetWindowsMappingMode(void) { return M_METAFILEDATA->m_windowsMappingMode; }
     void SetWindowsMappingMode(int mm);
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 };
 
-class WXDLLEXPORT wxMetafileDC: public wxDC
+class WXDLLEXPORT wxMetafileDCImpl: public wxPMDCImpl
 {
-    DECLARE_DYNAMIC_CLASS(wxMetafileDC)
+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;
+    wxMetafile*   m_metaFile;
 
+private:
+    DECLARE_CLASS(wxMetafileDCImpl)
+    DECLARE_NO_COPY_CLASS(wxMetafileDCImpl)
+};
+
+class WXDLLEXPORT wxMetafileDC: public wxDC
+{
 public:
     // Don't supply origin and extent
     // Supply them to wxMakeMetaFilePlaceable instead.
-    wxMetafileDC(const wxString& file = wxEmptyString);
+    wxMetafileDC(const wxString& file = wxEmptyString)
+         :wxDC(new wxMetafileDCImpl( this, file ))
+         { }
 
     // 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);
+    wxMetafileDC(const wxString& file, int xext, int yext, int xorg, int yorg)
+        : wxDC(new wxMetafileDCImpl( this, file, xext, yext, xorg, yorg ))
+         { }
 
-    virtual ~wxMetafileDC(void);
+    wxMetafile *GetMetafile() const 
+        { return ((wxMetafileDCImpl*)m_pimpl)->GetMetaFile(); }
 
-    // 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;
+    virtual ~wxMetafileDC(void)
+        { delete m_pimpl; }
 
-    // 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; }
+    // Should be called at end of drawing
+    virtual wxMetafile *Close(void)
+        { return ((wxMetafileDCImpl*)m_pimpl)->Close(); }
 
-protected:
-    int           m_windowsMappingMode;
-    wxMetafile*   m_metaFile;
+    inline void SetMetaFile(wxMetafile *mf)
+        { ((wxMetafileDCImpl*)m_pimpl)->SetMetaFile(mf); }
 
 private:
-#ifndef __WATCOMC__
-    // function hiding warning supression
-    // still required ??
-    inline virtual void   GetTextExtent( const wxString& string
-                                        ,long*           width
-                                        ,long*           height
-                                        ,long*           descent = NULL
-                                        ,long*           externalLeading = NULL
-                                        ,wxFont*         theFont = NULL
-                                       ) const
-    { GetTextExtent( string, width, height, descent, externalLeading, theFont, false);};
-#endif
+    DECLARE_CLASS(wxMetafileDC)
+    DECLARE_NO_COPY_CLASS(wxMetafileDC)
 };
 
 /*
index ba3109be260e206ea64fc1e2f5d694a706b5257c..69a8ff18cbf9742e6b6c901d0c0bd4c8be90e5a1 100644 (file)
@@ -32,8 +32,6 @@ public:
 
 class WXDLLEXPORT wxPalette: public wxPaletteBase
 {
-    DECLARE_DYNAMIC_CLASS(wxPalette)
-
 public:
     wxPalette();
 
@@ -64,6 +62,13 @@ public:
     inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
     void              SetHPALETTE(WXHPALETTE hPalette);
     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
 
 #endif
index 86ce52baf8be406a0de79b30370057871519cc2d..30aed3bbe469497301109a6e46b45d15a9467bff 100644 (file)
@@ -58,7 +58,6 @@ protected:
 // Pen
 class WXDLLEXPORT wxPen : public wxGDIObject
 {
-    DECLARE_DYNAMIC_CLASS(wxPen)
 public:
     wxPen();
     wxPen( const wxColour& rColour
@@ -124,11 +123,19 @@ public:
     bool     FreeResource(bool bForce = false);
     virtual WXHANDLE GetResourceHandle(void) const;
     bool     IsFree(void) const;
-    void     Unshare(void);
 
 private:
     LINEBUNDLE                     m_vLineBundle;
     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
 
 extern int wx2os2PenStyle(int nWxStyle);
index 882315fcec4f64bba49bb4b76d30bbf4e97e1ecf..126deb0937deb21cee031d598e9df0e16f6943f8 100644 (file)
@@ -64,8 +64,8 @@ public:
     void   SetPS(HPS hPS);
 
 protected:
-    virtual wxGDIRefData* CreateData(void) const;
-    virtual wxGDIRefData* CloneData(const wxGDIRefData* pData) const;
+    virtual wxGDIRefData* CreateGDIRefData(void) const;
+    virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* pData) const;
 
     virtual bool DoIsEqual(const wxRegion& region) const;
     virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
@@ -82,7 +82,6 @@ protected:
 
 class WXDLLEXPORT wxRegionIterator : public wxObject
 {
-DECLARE_DYNAMIC_CLASS(wxRegionIterator);
 public:
     wxRegionIterator();
     wxRegionIterator(const wxRegion& rRegion);
@@ -110,6 +109,8 @@ private:
     long                            m_lNumRects;
     wxRegion                        m_vRegion;
     wxRect*                         m_pRects;
+
+    DECLARE_DYNAMIC_CLASS(wxRegionIterator)
 }; // end of wxRegionIterator
 
 #endif // _WX_OS2_REGION_H_
index 8b3dbb8feaa431b5b4d0e1657ca1d5172c45d5e0..8a599bea4d0b7d7b78d141ed3f14c949053a4846 100644 (file)
@@ -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));
index 91b77c959e55679c07f6a1aaa37df0ab100633c9..1fcccdab1642da810823ffe05dcedf40f16e2cc7 100644 (file)
@@ -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);
+}
index 4ed240007ce5cbb5e45fa9581e478c58cb9d1b74..4a97f97c285b7032bceca1508c3699976a205a36 100644 (file)
@@ -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);
 
index 82709b4ccb8f5eb9002ab4072282f3fb7ff81dd6..2938562b0320831e75ca7f42ddb95d2a27d4c118 100644 (file)
@@ -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;
 
index a579c53803122338fef80136aee09b46b0b5000f..42454c09e23b907dd44be00c3466560739a98b28 100644 (file)
@@ -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
index 24d89e39b2a1397e725dee7130e09f71d7f27f1a..318daf514d718b43a9a8d4605ee87acf4ee1e869 100644 (file)
@@ -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
index eff2107d6047c17fa375bf239305602976a0a7d9..4e6760d6d7ec2b6118b64cb5a2d61b91a490d911 100644 (file)
@@ -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);
 }