]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix Ok/IsOk() mess in wxGDIObject-derived classes; also added
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 15 Dec 2007 17:54:20 +0000 (17:54 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 15 Dec 2007 17:54:20 +0000 (17:54 +0000)
wxGDIObject::Create/CloneGDIRefData() and implemented them for (almost) all
ports

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50727 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

161 files changed:
include/wx/animate.h
include/wx/bitmap.h
include/wx/cocoa/bitmap.h
include/wx/cocoa/brush.h
include/wx/cocoa/colour.h
include/wx/cocoa/cursor.h
include/wx/cocoa/font.h
include/wx/cocoa/icon.h
include/wx/cocoa/pen.h
include/wx/colour.h
include/wx/dfb/bitmap.h
include/wx/dfb/brush.h
include/wx/dfb/cursor.h
include/wx/dfb/font.h
include/wx/dfb/pen.h
include/wx/dfb/region.h
include/wx/font.h
include/wx/gdiobj.h
include/wx/generic/colour.h
include/wx/generic/paletteg.h
include/wx/generic/region.h
include/wx/gtk/bitmap.h
include/wx/gtk/brush.h
include/wx/gtk/colour.h
include/wx/gtk/cursor.h
include/wx/gtk/font.h
include/wx/gtk/pen.h
include/wx/gtk/region.h
include/wx/gtk1/bitmap.h
include/wx/gtk1/brush.h
include/wx/gtk1/colour.h
include/wx/gtk1/cursor.h
include/wx/gtk1/font.h
include/wx/gtk1/pen.h
include/wx/gtk1/region.h
include/wx/iconbndl.h
include/wx/mac/carbon/bitmap.h
include/wx/mac/carbon/brush.h
include/wx/mac/carbon/colour.h
include/wx/mac/carbon/cursor.h
include/wx/mac/carbon/font.h
include/wx/mac/carbon/icon.h
include/wx/mac/carbon/metafile.h
include/wx/mac/carbon/palette.h
include/wx/mac/carbon/pen.h
include/wx/mac/carbon/region.h
include/wx/mgl/bitmap.h
include/wx/mgl/brush.h
include/wx/mgl/cursor.h
include/wx/mgl/font.h
include/wx/mgl/palette.h
include/wx/mgl/pen.h
include/wx/mgl/region.h
include/wx/motif/colour.h
include/wx/motif/cursor.h
include/wx/motif/font.h
include/wx/msw/bitmap.h
include/wx/msw/brush.h
include/wx/msw/colour.h
include/wx/msw/enhmeta.h
include/wx/msw/font.h
include/wx/msw/gdiimage.h
include/wx/msw/metafile.h
include/wx/msw/palette.h
include/wx/msw/pen.h
include/wx/msw/region.h
include/wx/os2/bitmap.h
include/wx/os2/brush.h
include/wx/os2/colour.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
include/wx/palette.h
include/wx/palmos/brush.h
include/wx/palmos/enhmeta.h
include/wx/palmos/gdiimage.h
include/wx/palmos/metafile.h
include/wx/palmos/palette.h
include/wx/palmos/pen.h
include/wx/palmos/region.h
include/wx/private/fontmgr.h
include/wx/region.h
include/wx/x11/bitmap.h
include/wx/x11/brush.h
include/wx/x11/colour.h
include/wx/x11/cursor.h
include/wx/x11/font.h
include/wx/x11/palette.h
include/wx/x11/pen.h
include/wx/x11/region.h
src/cocoa/bitmap.mm
src/cocoa/brush.mm
src/cocoa/font.mm
src/cocoa/icon.mm
src/cocoa/pen.mm
src/common/fontcmn.cpp
src/common/gdicmn.cpp
src/common/iconbndl.cpp
src/dfb/bitmap.cpp
src/dfb/brush.cpp
src/dfb/cursor.cpp
src/dfb/font.cpp
src/dfb/pen.cpp
src/dfb/region.cpp
src/generic/paletteg.cpp
src/generic/regiong.cpp
src/gtk/bitmap.cpp
src/gtk/brush.cpp
src/gtk/colour.cpp
src/gtk/cursor.cpp
src/gtk/font.cpp
src/gtk/pen.cpp
src/gtk/region.cpp
src/gtk1/bitmap.cpp
src/gtk1/brush.cpp
src/gtk1/colour.cpp
src/gtk1/cursor.cpp
src/gtk1/font.cpp
src/gtk1/pen.cpp
src/gtk1/region.cpp
src/mac/carbon/bitmap.cpp
src/mac/carbon/brush.cpp
src/mac/carbon/colour.cpp
src/mac/carbon/cursor.cpp
src/mac/carbon/font.cpp
src/mac/carbon/icon.cpp
src/mac/carbon/metafile.cpp
src/mac/carbon/palette.cpp
src/mac/carbon/pen.cpp
src/mac/carbon/region.cpp
src/mgl/bitmap.cpp
src/mgl/brush.cpp
src/mgl/cursor.cpp
src/mgl/font.cpp
src/mgl/palette.cpp
src/mgl/pen.cpp
src/mgl/region.cpp
src/motif/cursor.cpp
src/motif/font.cpp
src/msw/bitmap.cpp
src/msw/brush.cpp
src/msw/enhmeta.cpp
src/msw/font.cpp
src/msw/metafile.cpp
src/msw/palette.cpp
src/msw/pen.cpp
src/msw/region.cpp
src/os2/bitmap.cpp
src/os2/region.cpp
src/palmos/brush.cpp
src/palmos/region.cpp
src/x11/bitmap.cpp
src/x11/brush.cpp
src/x11/colour.cpp
src/x11/cursor.cpp
src/x11/font.cpp
src/x11/palette.cpp
src/x11/pen.cpp
src/x11/region.cpp

index 772266046988b051e3f8a027fb96e8043517d9b7..ff555336b813a4289b43819f5b8060500d0a9b4e 100644 (file)
@@ -31,7 +31,7 @@ extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxAnimationCtrlNameStr[];
 // wxAnimationBase
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_ADV wxAnimationBase : public wxGDIObject
+class WXDLLIMPEXP_ADV wxAnimationBase : public wxObject
 {
 public:
     wxAnimationBase() {}
index 1e39569846e8944e46fccd6b0a85b44fa165bb25..bd81349e3651a940ebbc240af33d7db3d5050319 100644 (file)
@@ -133,9 +133,6 @@ public:
     static void InitStandardHandlers();
     */
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const = 0;
-
     virtual int GetHeight() const = 0;
     virtual int GetWidth() const = 0;
     virtual int GetDepth() const = 0;
index 9fc1b1e937bd0aae229e3fa0697727612dc81bb0..79d0c6279d243a238033b530ec1ebc77a79f9791 100644 (file)
@@ -64,7 +64,6 @@ protected:
 // ========================================================================
 class WXDLLEXPORT wxBitmap: public wxGDIObject
 {
-    DECLARE_DYNAMIC_CLASS(wxBitmap)
 // ------------------------------------------------------------------------
 // initialization
 // ------------------------------------------------------------------------
@@ -116,8 +115,6 @@ public:
     // get the given part of bitmap
     wxBitmap GetSubBitmap( const wxRect& rect ) const;
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
     int GetWidth() const;
     int GetHeight() const;
     int GetDepth() const;
@@ -140,10 +137,6 @@ public:
 
     int GetBitmapType() const;
 
-    // wxObjectRefData
-    wxObjectRefData *CreateRefData() const;
-    wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
-
     // wxCocoa
     WX_NSBitmapImageRep GetNSBitmapImageRep();
     void SetNSBitmapImageRep(WX_NSBitmapImageRep bitmapImageRep);
@@ -151,6 +144,12 @@ public:
 
     static void InitStandardHandlers() { }
     static void CleanUpHandlers() { }
+
+protected:
+    wxGDIRefData *CreateGDIRefData() const;
+    wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
+    DECLARE_DYNAMIC_CLASS(wxBitmap)
 };
 
 class WXDLLIMPEXP_CORE wxBitmapHandler: public wxBitmapHandlerBase
@@ -158,5 +157,4 @@ class WXDLLIMPEXP_CORE wxBitmapHandler: public wxBitmapHandlerBase
     DECLARE_ABSTRACT_CLASS(wxBitmapHandler)
 };
 
-#endif
-    // __WX_COCOA_BITMAP_H__
+#endif // __WX_COCOA_BITMAP_H__
index 31db6fc5c45014517746bdf624e6f074ffdb0667..facbc7194d6281865ecf9dcb51b7eb85e40aadae 100644 (file)
@@ -52,16 +52,12 @@ public:
     virtual int GetStyle() const;
     wxBitmap *GetStipple() const;
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const
-    {   return (m_refData != NULL); }
-
-    // wxObjectRefData
-    wxObjectRefData *CreateRefData() const;
-    wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
-
     // wxCocoa
     WX_NSColor GetNSColor();
+
+protected:
+    wxGDIRefData *CreateGDIRefData() const;
+    wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 };
 
 #endif // __WX_COCOA_BRUSH_H__
index dbdc52ae6279cff3bf4027cbe2cd037578c5a707..f0d7af427148f5f11653e78909406252af5c796e 100644 (file)
@@ -50,7 +50,7 @@ public:
     virtual ~wxColour();
 
     // accessors
-    bool IsOk() const { return m_cocoaNSColor; }
+    virtual bool IsOk() const { return m_cocoaNSColor; }
     WX_NSColor GetNSColor() { return m_cocoaNSColor; }
 
     unsigned char Red() const { return m_red; }
index f7c5b65ab0abaafd124f5c60b23c363de17409fe..474d1b80620bbda5621994554e2aa19d94637e50 100644 (file)
 
 #include "wx/bitmap.h"
 
-class WXDLLEXPORT wxCursorRefData: public wxObjectRefData
+class WXDLLEXPORT wxCursorRefData : public wxGDIRefData
 {
-    DECLARE_NO_COPY_CLASS(wxCursorRefData)
-
-    friend class WXDLLIMPEXP_FWD_CORE wxBitmap;
-    friend class WXDLLIMPEXP_FWD_CORE wxCursor;
 public:
     wxCursorRefData();
     virtual ~wxCursorRefData();
@@ -27,6 +23,11 @@ public:
 protected:
     int m_width, m_height;
     WX_NSCursor m_hCursor;
+
+    friend class WXDLLIMPEXP_FWD_CORE wxBitmap;
+    friend class WXDLLIMPEXP_FWD_CORE wxCursor;
+
+    DECLARE_NO_COPY_CLASS(wxCursorRefData)
 };
 
 #define M_CURSORDATA ((wxCursorRefData *)m_refData)
@@ -35,31 +36,26 @@ protected:
 // Cursor
 class WXDLLEXPORT wxCursor: public wxBitmap
 {
-  DECLARE_DYNAMIC_CLASS(wxCursor)
-
 public:
-  wxCursor();
-
-  wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1,
-    const char maskBits[] = NULL);
+    wxCursor();
 
-  wxCursor(const wxString& name, long flags = 0,
-   int hotSpotX = 0, int hotSpotY = 0);
+    wxCursor(const char bits[], int width, int height,
+             int hotSpotX = -1, int hotSpotY = -1,
+             const char maskBits[] = NULL);
 
-  wxCursor(int cursor_type);
-  virtual ~wxCursor();
+    wxCursor(const wxString& name, long flags = 0,
+             int hotSpotX = 0, int hotSpotY = 0);
 
-  virtual bool Ok() const { return IsOk(); }
-  virtual bool IsOk() const { return m_refData ; }
+    wxCursor(int cursor_type);
+    virtual ~wxCursor();
 
-  inline bool operator == (const wxCursor& cursor) const { return m_refData == cursor.m_refData; }
-  inline bool operator != (const wxCursor& cursor) const { return m_refData != cursor.m_refData; }
+    // FIXME: operator==() is wrong!
+    bool operator==(const wxCursor& cursor) const { return m_refData == cursor.m_refData; }
+    bool operator!=(const wxCursor& cursor) const { return !(*this == cursor); }
 
-  inline WX_NSCursor GetNSCursor() const
-  {
-    return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0);
-  }
+    WX_NSCursor GetNSCursor() const { return M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0; }
 
+    DECLARE_DYNAMIC_CLASS(wxCursor)
 };
 
 extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor);
index 1b6698e89eff27126f2c6437786b62af5ac42a72..f19d666288a212b318380d21a563e09de2d4a3d1 100644 (file)
@@ -110,15 +110,6 @@ public:
     virtual bool RealizeResource();
 
 protected:
-    /*! @abstract   Helper method for COW.
-        @discussion
-        wxFont can be considered a mutable holder of an immutable opaque implementation object.
-        All methods that mutate the font should first call Unshare() to ensure that mutating
-        the implementation object does not cause another wxFont that happened to share the
-        same ref data to mutate.
-     */
-    void Unshare();
-
     /*! @abstract   Internal constructor with ref data
         @discussion
         Takes ownership of @a refData.  That is, it is assumed that refData has either just been
@@ -128,6 +119,10 @@ protected:
     explicit wxFont(wxFontRefData *refData)
     {   Create(refData); }
     bool Create(wxFontRefData *refData);
+
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxFont)
 };
index 8e4214f31d604a9b3921ce233e7989749f05a3de..478e2271b878f5f3e42b2199cfa5286b73810623 100644 (file)
@@ -18,9 +18,8 @@
 // ========================================================================
 // wxIcon
 // ========================================================================
-class WXDLLEXPORT wxIcon: public wxGDIObject
+class WXDLLEXPORT wxIcon : public wxGDIObject
 {
-    DECLARE_DYNAMIC_CLASS(wxIcon)
 public:
     wxIcon();
 
@@ -49,14 +48,18 @@ public:
     // ctors, assignment operators...), but it's ok to have such function
     void CopyFromBitmap(const wxBitmap& bmp);
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
     int GetWidth() const;
     int GetHeight() const;
 
     WX_NSImage GetNSImage() const;
     bool CreateFromXpm(const char **bits);
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxIcon)
 };
 
-#endif
-    // _WX_COCOA_ICON_H__
+#endif // _WX_COCOA_ICON_H__
index 7599f775a7aacc379790c6554b382ff79f2e974f..b6137473ee9d13dc0fca1cc78450a0016cbc7da2 100644 (file)
@@ -23,24 +23,15 @@ class WXDLLIMPEXP_FWD_CORE wxBitmap;
 // ========================================================================
 class WXDLLEXPORT wxPen: public wxGDIObject
 {
-    DECLARE_DYNAMIC_CLASS(wxPen)
 public:
     wxPen();
     wxPen(const wxColour& col, int width = 1, int style = wxSOLID);
     wxPen(const wxBitmap& stipple, int width);
     virtual ~wxPen();
 
-    // wxObjectRefData
-    wxObjectRefData *CreateRefData() const;
-    wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
-
-    inline bool operator == (const wxPen& pen) const
-    {   return m_refData == pen.m_refData; }
-    inline bool operator != (const wxPen& pen) const
-    {   return m_refData != pen.m_refData; }
-
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const { return (m_refData != NULL) ; }
+    // FIXME: operator==() is wrong
+    bool operator==(const wxPen& pen) const { return m_refData == pen.m_refData; }
+    bool operator!=(const wxPen& pen) const { return !(*this == pen); }
 
     void SetColour(const wxColour& col) ;
     void SetColour(unsigned char r, unsigned char g, unsigned char b)  ;
@@ -62,6 +53,12 @@ public:
 
     WX_NSColor GetNSColor();
     int GetCocoaLineDash(const CGFloat **pattern);
+
+protected:
+    wxGDIRefData *CreateGDIRefData() const;
+    wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
+    DECLARE_DYNAMIC_CLASS(wxPen)
 };
 
 #endif // __WX_COCOA_PEN_H__
index afe6371475551745b7588cf3d6b626e353ef4f6a..ee2c023f9086b9bef40e911c1b7b286e762663ff 100644 (file)
@@ -92,9 +92,6 @@ public:
     // accessors
     // ---------
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const = 0;
-
     virtual ChannelType Red() const = 0;
     virtual ChannelType Green() const = 0;
     virtual ChannelType Blue() const = 0;
@@ -119,6 +116,23 @@ protected:
     InitRGBA(ChannelType r, ChannelType g, ChannelType b, ChannelType a) = 0;
 
     virtual bool FromString(const wxString& s);
+
+    // wxColour doesn't use reference counted data (at least not in all ports)
+    // so provide stubs for the functions which need to be defined if we do use
+    // them
+    virtual wxGDIRefData *CreateGDIRefData() const
+    {
+        wxFAIL_MSG( "must be overridden if used" );
+
+        return NULL;
+    }
+
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *WXUNUSED(data)) const
+    {
+        wxFAIL_MSG( "must be overridden if used" );
+
+        return NULL;
+    }
 };
 
 
index 28bd0b0f280f918897cd61ac98b3ce2ceaee3d31..7ac7cf2b2eebcb503b9ed611f347fea9338e993c 100644 (file)
@@ -21,12 +21,12 @@ wxDFB_DECLARE_INTERFACE(IDirectFBSurface);
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBitmapHandler: public wxBitmapHandlerBase
+class WXDLLIMPEXP_CORE wxBitmapHandler : public wxBitmapHandlerBase
 {
     DECLARE_ABSTRACT_CLASS(wxBitmapHandler)
 };
 
-class WXDLLIMPEXP_CORE wxBitmap: public wxBitmapBase
+class WXDLLIMPEXP_CORE wxBitmap : public wxBitmapBase
 {
 public:
     wxBitmap() {}
@@ -39,9 +39,6 @@ public:
     wxBitmap(const wxImage& image, int depth = -1);
 #endif
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
-
     bool Create(const wxIDirectFBSurfacePtr& surface);
     bool Create(int width, int height, int depth = -1);
 
@@ -86,9 +83,8 @@ public:
     wxIDirectFBSurfacePtr GetDirectFBSurface() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     bool CreateWithFormat(int width, int height, int dfbFormat);
 
index 8398b46da4d4b687607fc1170679554b225a41e3..926df842998155f0cf2a5a158ab1a222b10a169b 100644 (file)
@@ -28,20 +28,18 @@ class WXDLLIMPEXP_FWD_CORE wxBrush;
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBrush: public wxBrushBase
+class WXDLLIMPEXP_CORE wxBrush : public wxBrushBase
 {
 public:
     wxBrush() {}
     wxBrush(const wxColour &colour, int style = wxSOLID);
     wxBrush(const wxBitmap &stippleBitmap);
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
     bool operator==(const wxBrush& brush) const;
     bool operator!=(const wxBrush& brush) const { return !(*this == brush); }
 
     virtual int GetStyle() const;
-    wxColour &GetColour() const;
+    wxColourGetColour() const;
     wxBitmap *GetStipple() const;
 
     void SetColour(const wxColour& col);
@@ -50,9 +48,8 @@ public:
     void SetStipple(const wxBitmap& stipple);
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxBrush)
 };
index a56b1f1afe8aab3ba6b3db506f3ec9a779d30adc..102fab41a99dba98748c13607a944ecbec696266 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef _WX_DFB_CURSOR_H_
 #define _WX_DFB_CURSOR_H_
 
-#include "wx/object.h"
+#include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
 class WXDLLIMPEXP_FWD_CORE wxBitmap;
@@ -20,7 +20,7 @@ class WXDLLIMPEXP_FWD_CORE wxBitmap;
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxCursor: public wxObject
+class WXDLLIMPEXP_CORE wxCursor : public wxGDIObject
 {
 public:
     wxCursor() {}
@@ -32,16 +32,13 @@ public:
              long flags = wxBITMAP_TYPE_CUR_RESOURCE,
              int hotSpotX = 0, int hotSpotY = 0);
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
-
     // implementation
     wxBitmap GetBitmap() const;
 
 protected:
     // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxCursor)
 };
index d408ea043b9bd922898a76baa57cba14ae81d6cd..a3441e48cccf4dac91ac456c2c5b96ebe44d5d2a 100644 (file)
@@ -71,9 +71,8 @@ public:
     wxIDirectFBFontPtr GetDirectFBFont(bool antialiased) const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxFont)
index 9648f98e851683cf7f2724002c4654dc24e585e5..965b2afcbf3a8e0c27e85f1b49d0d3c7471e8b32 100644 (file)
@@ -57,13 +57,9 @@ public:
     wxDash* GetDash() const;
     wxBitmap *GetStipple() const;
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
-
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxPen)
 };
index 591cb4394f2596d6bb70bbb6ee539e6bdb2cf59f..3d96a7e718500e80ceab7cccd3c885322ddbf5a7 100644 (file)
@@ -40,9 +40,8 @@ public:
     wxRect AsRect() const { return GetBox(); }
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // wxRegionBase pure virtuals
     virtual bool DoIsEqual(const wxRegion& region) const;
index 9b87cafd11ec76dfc830a52c283ae3f8a5f824bf..3b808ac2bd2309e6d2b33d498d9c20ab11f47179 100644 (file)
@@ -155,13 +155,9 @@ public:
     // from the string representation of wxNativeFontInfo
     static wxFont *New(const wxString& strNativeFontDesc);
 
-    // was the font successfully created?
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
     // comparison
-    bool operator == (const wxFont& font) const;
-    bool operator != (const wxFont& font) const;
+    bool operator==(const wxFont& font) const;
+    bool operator!=(const wxFont& font) const { return !(*this == font); }
 
     // accessors: get the font characteristics
     virtual int GetPointSize() const = 0;
index ebe33197534f3fa0c014912dbb6a9895432ca182..fc2e0756d7f2b2b5ba27e7be247e5bc35c3c1570 100644 (file)
 // the same native GDI object
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_FWD_CORE wxGDIRefData: public wxObjectRefData { };
+class WXDLLIMPEXP_FWD_CORE wxGDIRefData : public wxObjectRefData
+{
+public:
+    // override this in the derived classes to check if this data object is
+    // really fully initialized
+    virtual bool IsOk() const { return true; }
+};
 
 // ----------------------------------------------------------------------------
-// wxGDIObject
+// wxGDIObject: base class for bitmaps, pens, brushes, ...
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxGDIObject: public wxObject
+class WXDLLIMPEXP_CORE wxGDIObject : public wxObject
 {
 public:
+    // checks if the object can be used
+    bool IsOk() const
+    {
+        // the cast here is safe because the derived classes always create
+        // wxGDIRefData objects
+        return m_refData && wx_static_cast(wxGDIRefData *, m_refData)->IsOk();
+    }
+
+    // don't use in the new code, use IsOk() instead
     bool IsNull() const { return m_refData == NULL; }
 
-    // older version, for backwards compat
+    // older version, for backwards compatibility only (but not deprecated
+    // because it's still widely used)
     bool Ok() const { return IsOk(); }
-    
-    virtual bool IsOk() const { return (m_refData != NULL) ; }
 
 #if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXPALMOS__)
     // Creates the resource
@@ -49,8 +63,24 @@ public:
     virtual WXHANDLE GetResourceHandle() const { return 0; }
 #endif // defined(__WXMSW__) || defined(__WXPM__)
 
+protected:
+    // replace base class functions using wxObjectRefData with our own which
+    // use wxGDIRefData to ensure that we always work with data objects of the
+    // correct type (i.e. derived from wxGDIRefData)
+    virtual wxObjectRefData *CreateRefData() const
+    {
+        return CreateGDIRefData();
+    }
+
+    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const
+    {
+        return CloneGDIRefData(wx_static_cast(const wxGDIRefData *, data));
+    }
+
+    virtual wxGDIRefData *CreateGDIRefData() const = 0;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const = 0;
+
     DECLARE_DYNAMIC_CLASS(wxGDIObject)
 };
 
-#endif
-    // _WX_GDIOBJ_H_BASE_
+#endif // _WX_GDIOBJ_H_BASE_
index feb49285500ffe697e131d1afaf4408e58bff6b8..c0d26dad039ba7e93a69f65c637b66a6e36158bd 100644 (file)
@@ -33,7 +33,7 @@ public:
     virtual ~wxColour();
 
     // accessors
-    bool IsOk() const { return m_isInit; }
+    virtual bool IsOk() const { return m_isInit; }
 
     unsigned char Red() const { return m_red; }
     unsigned char Green() const { return m_green; }
index a8ecde718531fbfd922181baa202a48d07ad83d9..4d3ccc308dcef607cb3e5b7896101bafb8d4541f 100644 (file)
@@ -33,8 +33,6 @@ public:
     wxPalette();
     wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue );
     virtual ~wxPalette();
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const;
 
     bool Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
     int GetPixel( unsigned char red, unsigned char green, unsigned char blue ) const;
@@ -42,6 +40,10 @@ public:
 
     virtual int GetColoursCount() const;
 
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxPalette)
 };
index e82714abcd3f03029bf1df9bf9d557d4c77e081e..7a6dc2473f8bcc2bd036ba6021721027bee7a288 100644 (file)
@@ -26,8 +26,8 @@ public:
     virtual bool IsEmpty() const;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // wxRegionBase pure virtuals
     virtual bool DoIsEqual(const wxRegion& region) const;
index 98bc4a8beea942192afda6193e56a176f3049182..5cc7ed1c1c6aba9546a4ffb12a8e7ca014b2f635 100644 (file)
@@ -66,14 +66,12 @@ public:
     wxBitmap( const wxImage& image, int depth = -1 ) { (void)CreateFromImage(image, depth); }
 #endif // wxUSE_IMAGE
     virtual ~wxBitmap();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     bool Create(int width, int height, int depth = -1);
 
-    int GetHeight() const;
-    int GetWidth() const;
-    int GetDepth() const;
+    virtual int GetHeight() const;
+    virtual int GetWidth() const;
+    virtual int GetDepth() const;
 
 #if wxUSE_IMAGE
     wxImage ConvertToImage() const;
@@ -127,8 +125,8 @@ protected:
     bool CreateFromImage(const wxImage& image, int depth);
 #endif // wxUSE_IMAGE
 
-    virtual wxObjectRefData* CreateRefData() const;
-    virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const;
+    virtual wxGDIRefData* CreateGDIRefData() const;
+    virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* data) const;
 
 private:
 #if wxUSE_IMAGE
index e0bfc9ff5d0752c765a07a37b91fb9794ecc2b64..f733ecea5fa9c9c06e45c469f0b622938f4c04a8 100644 (file)
@@ -26,11 +26,8 @@ public:
     wxBrush( const wxBitmap &stippleBitmap );
     virtual ~wxBrush();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxBrush& brush ) const;
-    bool operator != (const wxBrush& brush) const { return !(*this == brush); }
+    bool operator==(const wxBrush& brush) const;
+    bool operator!=(const wxBrush& brush) const { return !(*this == brush); }
 
     virtual int GetStyle() const;
     wxColour &GetColour() const;
@@ -42,9 +39,8 @@ public:
     void SetStipple( const wxBitmap& stipple );
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxBrush)
 };
index 4c98208518e14add2e06a3f285170079e36521eb..07121726d6d7869e5e47e2b44e33db13e54c0187 100644 (file)
@@ -27,10 +27,8 @@ public:
 
     virtual ~wxColour();
 
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxColour& col ) const;
-    bool operator != ( const wxColour& col ) const { return !(*this == col); }
+    bool operator==(const wxColour& col) const;
+    bool operator!=(const wxColour& col) const { return !(*this == col); }
 
     unsigned char Red() const;
     unsigned char Green() const;
index d940c1f204273238414e6fed67d44e79be05431d..8269c070484990036f6a79db795ed52fecf92115 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef _WX_GTK_CURSOR_H_
 #define _WX_GTK_CURSOR_H_
 
-#include "wx/object.h"
+#include "wx/gdiobj.h"
 
 class WXDLLIMPEXP_FWD_CORE wxColour;
 class WXDLLIMPEXP_FWD_CORE wxImage;
@@ -19,10 +19,9 @@ class WXDLLIMPEXP_FWD_CORE wxImage;
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxCursor: public wxObject
+class WXDLLIMPEXP_CORE wxCursor : public wxGDIObject
 {
 public:
-
     wxCursor();
     wxCursor( int cursorId );
 #if wxUSE_IMAGE
@@ -30,15 +29,18 @@ public:
 #endif
     wxCursor( const char bits[], int width, int  height,
               int hotSpotX=-1, int hotSpotY=-1,
-              const char maskBits[] = NULL, const wxColour *fg = NULL, const wxColour *bg = NULL );
+              const char maskBits[] = NULL,
+              const wxColour *fg = NULL, const wxColour *bg = NULL );
     virtual ~wxCursor();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     // implementation
 
     GdkCursor *GetCursor() const;
 
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxCursor)
 };
index 11ceb4335fa6895ad1bd350f9b5cafd35e0260a4..253c5cf11f5f96581fb0f04dc07c00814610f216 100644 (file)
@@ -84,8 +84,8 @@ protected:
     // common part of all ctors
     void Init();
 
-    virtual wxObjectRefData* CreateRefData() const;
-    virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const;
+    virtual wxGDIRefData* CreateGDIRefData() const;
+    virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxFont)
index b273d2c6df89a1e41ba1e57ff1311eb0c2fb20dd..f4ccb5f9abba71bd999dfafb38750055c6690cdb 100644 (file)
@@ -27,11 +27,8 @@ public:
     wxPen( const wxColour &colour, int width = 1, int style = wxSOLID );
     virtual ~wxPen();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxPen& pen ) const;
-    bool operator != (const wxPen& pen) const { return !(*this == pen); }
+    bool operator==(const wxPen& pen) const;
+    bool operator!=(const wxPen& pen) const { return !(*this == pen); }
 
     void SetColour( const wxColour &colour );
     void SetColour( unsigned char red, unsigned char green, unsigned char blue );
@@ -51,9 +48,8 @@ public:
     wxDash* GetDash() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxPen)
 };
index 26caf77531d10873046460a30227ae4030bfd05b..846f1946cff755585b9f92c84977ce613f161a8c 100644 (file)
@@ -63,9 +63,8 @@ public:
     GdkRegion *GetRegion() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // wxRegionBase pure virtuals
     virtual bool DoIsEqual(const wxRegion& region) const;
index e41dbc4b61d8a2ca5495630d435bc698baf92937..090b72e73cdea41fc51525124a1541d8ab258c34 100644 (file)
@@ -78,14 +78,12 @@ public:
     wxBitmap( const wxString &filename, wxBitmapType type = wxBITMAP_TYPE_XPM );
     wxBitmap( const wxImage& image, int depth = -1 ) { (void)CreateFromImage(image, depth); }
     virtual ~wxBitmap();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     bool Create(int width, int height, int depth = -1);
 
-    int GetHeight() const;
-    int GetWidth() const;
-    int GetDepth() const;
+    virtual int GetHeight() const;
+    virtual int GetWidth() const;
+    virtual int GetDepth() const;
 
     wxImage ConvertToImage() const;
 
@@ -134,8 +132,8 @@ public:
 protected:
     bool CreateFromImage(const wxImage& image, int depth);
 
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     // to be called from CreateFromImage only!
index 64bf2802f3abf525a96c34478061e1b76dabb327..2f7def88077763afac2e4a7dcf4330b86b9af4f8 100644 (file)
@@ -36,11 +36,8 @@ public:
     wxBrush( const wxBitmap &stippleBitmap );
     virtual ~wxBrush();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxBrush& brush ) const;
-    bool operator != (const wxBrush& brush) const { return !(*this == brush); }
+    bool operator==(const wxBrush& brush) const;
+    bool operator!=(const wxBrush& brush) const { return !(*this == brush); }
 
     virtual int GetStyle() const;
     wxColour &GetColour() const;
@@ -52,9 +49,8 @@ public:
     void SetStipple( const wxBitmap& stipple );
 
 private:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxBrush)
 };
index ae9e22fdcd2844b2ec981deb1fefe0bf2eb5a7a0..4d4950fbba535baff77208c516aa33de131d1eaa 100644 (file)
@@ -45,10 +45,8 @@ public:
 
     virtual bool FromString(const wxString& str);
 
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxColour& col ) const;
-    bool operator != ( const wxColour& col ) const { return !(*this == col); }
+    bool operator==(const wxColour& col) const;
+    bool operator!=(const wxColour& col) const { return !(*this == col); }
 
     unsigned char Red() const;
     unsigned char Green() const;
@@ -62,8 +60,8 @@ public:
 
 protected:
     // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     virtual void
     InitRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
index eba3d24b1b7559f4ec059ccc332c51ba2bfd11fe..2612a6c8d2f46e42d4c61f0abb39ea253f90f4ad 100644 (file)
@@ -10,8 +10,7 @@
 #ifndef __GTKCURSORH__
 #define __GTKCURSORH__
 
-#include "wx/defs.h"
-#include "wx/object.h"
+#include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
 #if wxUSE_IMAGE
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxCursor: public wxObject
+class WXDLLIMPEXP_CORE wxCursor : public wxGDIObject
 {
 public:
-
     wxCursor();
     wxCursor( int cursorId );
 #if wxUSE_IMAGE
@@ -35,13 +33,15 @@ public:
               int hotSpotX=-1, int hotSpotY=-1,
               const char maskBits[] = NULL, const wxColour *fg = NULL, const wxColour *bg = NULL );
     virtual ~wxCursor();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     // implementation
 
     GdkCursor *GetCursor() const;
 
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxCursor)
 };
index 6936e530f3415f161730e168ce9cbf5a58255aa6..62250ef33b97ea30d9bf5d774d83e1b58b3d997d 100644 (file)
@@ -91,9 +91,10 @@ public:
 
     GdkFont* GetInternalFont(float scale = 1.0) const;
 
-    // no data :-)
-
 protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
     virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info );
 
 private:
index f196a8165da002f776c13fbec3ac23ac3e489883..877e31f6358ddc8c395787ceb58fdcc403fe897b 100644 (file)
@@ -40,11 +40,8 @@ public:
     wxPen( const wxColour &colour, int width = 1, int style = wxSOLID );
     virtual ~wxPen();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxPen& pen ) const;
-    bool operator != (const wxPen& pen) const { return !(*this == pen); }
+    bool operator==(const wxPen& pen) const;
+    bool operator!=(const wxPen& pen) const { return !(*this == pen); }
 
     void SetColour( const wxColour &colour );
     void SetColour( unsigned char red, unsigned char green, unsigned char blue );
@@ -64,9 +61,8 @@ public:
     wxDash* GetDash() const;
 
 private:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxPen)
 };
index 17166be6bfadb719b9bb0387c81acfa247ff7536..6704c3e4c80ba863da74883603901139ff08705f 100644 (file)
@@ -63,9 +63,8 @@ public:
     GdkRegion *GetRegion() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // wxRegionBase pure virtuals
     virtual bool DoIsEqual(const wxRegion& region) const;
index d7e037b23ba20bbb0067815a85ceb93b88924c11..1892c30a1c289e923b484e858002b17c297dfe81 100644 (file)
@@ -46,8 +46,6 @@ public:
     wxIconBundle& operator=(const wxIconBundle& ic)
         { if ( this != &ic) Ref(ic); return *this; }
 
-    virtual bool IsOk() const;
-
 
     // adds all the icons contained in the file to the collection,
     // if the collection already contains icons with the same
@@ -87,8 +85,8 @@ public:
     bool IsEmpty() const { return GetIconCount() == 0; }
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     // delete all icons
index 588cf8285b0af501363e0f1326dfb98d1a85e8d2..96664c212916f0898959293460728e1690fbb561 100644 (file)
@@ -47,7 +47,7 @@ public:
 
     // Construct a mask from a mono bitmap (black meaning show pixels, white meaning transparent)
     wxMask(const wxBitmap& bitmap);
-    
+
     // implementation helper only : construct a mask from a 32 bit memory buffer
     wxMask(const wxMemoryBuffer& buf, int width , int height , int bytesPerRow ) ;
 
@@ -61,10 +61,10 @@ public:
 
     void Init() ;
 
-    // a 8 bit depth mask 
+    // a 8 bit depth mask
     void* GetRawAccess() const;
     int GetBytesPerRow() const { return m_bytesPerRow ; }
-    // renders/updates native representation when necessary 
+    // renders/updates native representation when necessary
     void RealizeNative() ;
 
     WXHBITMAP GetHBITMAP() const ;
@@ -134,8 +134,6 @@ public:
     // copies the contents and mask of the given (colour) icon to the bitmap
     virtual bool CopyFromIcon(const wxIcon& icon);
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
     int GetWidth() const;
     int GetHeight() const;
     int GetDepth() const;
@@ -163,7 +161,7 @@ public:
     bool HasAlpha() const;
     void UseAlpha();
 
-    // returns the 'native' implementation, a GWorldPtr for the content and one for the mask 
+    // returns the 'native' implementation, a GWorldPtr for the content and one for the mask
     WXHBITMAP GetHBITMAP( WXHBITMAP * mask = NULL ) const;
 
     // returns a CGImageRef which must released after usage with CGImageRelease
@@ -181,9 +179,8 @@ public:
     void EndRawAccess() ;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 };
-#endif
-  // _WX_BITMAP_H_
+
+#endif // _WX_BITMAP_H_
index 424bcf603e967fbf65211cc6b929e8c70509dadd..e66a86f8d6216d1b74b7c6aa888ca74c6e77ab98 100644 (file)
@@ -21,7 +21,7 @@ class WXDLLIMPEXP_FWD_CORE wxBrush;
 // Brush
 class WXDLLEXPORT wxBrush: public wxBrushBase
 {
- public:
+public:
     wxBrush();
     wxBrush(const wxColour& col, int style = wxSOLID);
     wxBrush(const wxBitmap& stipple);
@@ -32,20 +32,19 @@ class WXDLLEXPORT wxBrush: public wxBrushBase
     virtual void SetStyle(int style)  ;
     virtual void SetStipple(const wxBitmap& stipple)  ;
 
-    bool operator == (const wxBrush& brush) const;
-    bool operator != (const wxBrush& brush) const
-        { return !(*this == brush); }
+    bool operator==(const wxBrush& brush) const;
+    bool operator!=(const wxBrush& brush) const { return !(*this == brush); }
 
     const wxColour& GetColour() const ;
     virtual int GetStyle() const ;
     wxBitmap *GetStipple() const ;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
-    DECLARE_DYNAMIC_CLASS(wxBrush)    
+    DECLARE_DYNAMIC_CLASS(wxBrush)
 };
 
-#endif
-    // _WX_BRUSH_H_
+#endif // _WX_BRUSH_H_
index 7dbf36376454c1b929ecea884647d06e08a95a5d..b98d292dfdbfc8c0418ca899791b42c3b3fc9751 100644 (file)
@@ -34,7 +34,7 @@ public:
     virtual ~wxColour();
 
     // accessors
-    bool IsOk() const;
+    virtual bool IsOk() const { return m_cgColour; }
 
     ChannelType Red() const { return m_red; }
     ChannelType Green() const { return m_green; }
index 7cbe319bc63465f96809433731ffa71aa56d13f3..9e1d4e0a557ffac111d9cddd9dd0b804118accf4 100644 (file)
 #include "wx/bitmap.h"
 
 // Cursor
-class WXDLLEXPORT wxCursor: public wxGDIObject
+class WXDLLEXPORT wxCursor : public wxGDIObject
 {
-  DECLARE_DYNAMIC_CLASS(wxCursor)
-
 public:
-  wxCursor();
+    wxCursor();
 
-  wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1,
-    const char maskBits[] = NULL);
+    wxCursor(const char bits[], int width, int height,
+             int hotSpotX = -1, int hotSpotY = -1,
+             const char maskBits[] = NULL);
 
     wxCursor(const wxImage & image) ;
     wxCursor(const char **bits) ;
     wxCursor(char **bits) ;
     wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_MACCURSOR_RESOURCE,
-        int hotSpotX = 0, int hotSpotY = 0);
+             int hotSpotX = 0, int hotSpotY = 0);
 
-  wxCursor(int cursor_type);
-  virtual ~wxCursor();
+    wxCursor(int cursor_type);
+    virtual ~wxCursor();
 
-  bool CreateFromXpm(const char **bits) ;
-  virtual bool Ok() const { return IsOk(); }
-  virtual bool IsOk() const ;
+    bool CreateFromXpm(const char **bits) ;
 
     void MacInstall() const ;
 
-  void SetHCURSOR(WXHCURSOR cursor);
-  inline WXHCURSOR GetHCURSOR() const ;
-private :
+    void SetHCURSOR(WXHCURSOR cursor);
+    WXHCURSOR GetHCURSOR() const;
+
+private:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
     void CreateFromImage(const wxImage & image) ;
+
+    DECLARE_DYNAMIC_CLASS(wxCursor)
 };
 
 extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor);
 
-#endif
-    // _WX_CURSOR_H_
+#endif // _WX_CURSOR_H_
index 9863e0325de4e298d2265e73607dd0cebd1a03e0..6266ea102c97a3e85e11952082a08b45ceec5c90 100644 (file)
@@ -52,11 +52,11 @@ public:
 
     bool MacCreateFromThemeFont( wxUint16 themeFontID ) ;
 #if wxMAC_USE_CORE_TEXT
-       bool MacCreateFromUIFont( wxUint32 coreTextFontType );
+    bool MacCreateFromUIFont( wxUint32 coreTextFontType );
     bool MacCreateFromCTFontDescriptor( const void * ctFontDescriptor, int pointSize = 0 );
     bool MacCreateFromCTFont( const void * ctFont );
 #endif
-    
+
     virtual ~wxFont();
 
     // implement base class pure virtuals
@@ -88,13 +88,13 @@ public:
     virtual bool GetNoAntiAliasing() const  ;
 
     // Mac-specific, risks to change, don't use in portable code
-    
+
 #if wxMAC_USE_ATSU_TEXT
     // 'old' Quickdraw accessors
     short MacGetFontNum() const;
     short MacGetFontSize() const;
     wxByte  MacGetFontStyle() const;
-    
+
     // 'new' ATSUI accessors
     wxUint32 MacGetATSUFontID() const;
     wxUint32 MacGetATSUAdditionalQDStyles() const;
@@ -107,14 +107,17 @@ public:
     const void * MacGetCTFontDescriptor() const;
 #endif
 #if wxMAC_USE_CORE_TEXT || wxMAC_USE_ATSU_TEXT
-    void* MacGetATSUStyle() const ; 
+    void* MacGetATSUStyle() const ;
 #endif
-    
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     void Unshare();
 
     DECLARE_DYNAMIC_CLASS(wxFont)
 };
 
-#endif
-    // _WX_FONT_H_
+#endif // _WX_FONT_H_
index 5e786bca58beec03f2c780ccc6272b88cd55c094..ead16ba56bea2799a7d6d5e8c8e7c7d1da5c2d0f 100644 (file)
@@ -15,7 +15,7 @@
 #include "wx/bitmap.h"
 
 // Icon
-class WXDLLEXPORT wxIcon: public wxGDIObject
+class WXDLLEXPORT wxIcon : public wxGDIObject
 {
 public:
     wxIcon();
@@ -45,8 +45,6 @@ public:
     // ctors, assignment operators...), but it's ok to have such function
     void CopyFromBitmap(const wxBitmap& bmp);
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
     int GetWidth() const;
     int GetHeight() const;
     int GetDepth() const;
@@ -57,6 +55,11 @@ public:
 
     WXHICON GetHICON() const ;
 
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
+private:
     DECLARE_DYNAMIC_CLASS(wxIcon)
 };
 
index 4188807b8a3c6326866c7557a18d7d6d6ac9c9ab..694e45fb28b9aee8568c939d042897d10e3a87e6 100644 (file)
@@ -37,9 +37,8 @@ class wxMetafileRefData ;
 
 #define M_METAFILEDATA ((wxMetafileRefData *)m_refData)
 
-class WXDLLEXPORT wxMetafile: public wxGDIObject
+class WXDLLEXPORT wxMetafile : public wxGDIObject
 {
-    DECLARE_DYNAMIC_CLASS(wxMetafile)
 public:
     wxMetafile(const wxString& file = wxEmptyString);
     virtual ~wxMetafile(void);
@@ -49,8 +48,6 @@ public:
     virtual bool SetClipboard(int width = 0, int height = 0);
 
     virtual bool Play(wxDC *dc);
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const ;
 
     wxSize GetSize() const;
     int GetWidth() const { return GetSize().x; }
@@ -65,6 +62,12 @@ public:
     // backwards compatibility
     void SetPICT(void* pictHandle) ;
 #endif
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
+    DECLARE_DYNAMIC_CLASS(wxMetafile)
 };
 
 
@@ -89,7 +92,7 @@ protected:
     virtual void DoGetSize(int *width, int *height) const;
 
     wxMetafile*   m_metaFile;
-  
+
 private:
     DECLARE_CLASS(wxMetafileDCImpl)
     DECLARE_NO_COPY_CLASS(wxMetafileDCImpl)
@@ -105,19 +108,19 @@ class WXDLLEXPORT wxMetafileDC: public wxDC
                     const wxString& description = wxEmptyString ) :
       wxDC( new wxMetafileDCImpl( this, filename, width, height, description) )
     { }
-                    
-    wxMetafile *GetMetafile() const 
+
+    wxMetafile *GetMetafile() const
        { return ((wxMetafileDCImpl*)m_pimpl)->GetMetaFile(); }
-       
+
     wxMetafile *Close()
        { return ((wxMetafileDCImpl*)m_pimpl)->Close(); }
-       
+
 private:
     DECLARE_CLASS(wxMetafileDC)
     DECLARE_NO_COPY_CLASS(wxMetafileDC)
 };
-                    
-          
+
+
 /*
  * Pass filename of existing non-placeable metafile, and bounding box.
  * Adds a placeable metafile header, sets the mapping mode to anisotropic,
@@ -141,7 +144,7 @@ class WXDLLEXPORT wxMetafileDataObject : public wxDataObjectSimple
 {
 public:
   // ctors
-  wxMetafileDataObject() 
+  wxMetafileDataObject()
     : wxDataObjectSimple(wxDF_METAFILE) {  };
   wxMetafileDataObject(const wxMetafile& metafile)
     : wxDataObjectSimple(wxDF_METAFILE), m_metafile(metafile) { }
index 0532aed4e14c83aabc838e19c771c7e99a0bdb87..b7429d92002d32c7ace3f36c30736df3c4662e9e 100644 (file)
 #ifndef _WX_PALETTE_H_
 #define _WX_PALETTE_H_
 
-#include "wx/colour.h"
 #include "wx/gdiobj.h"
 
-class WXDLLIMPEXP_FWD_CORE wxPalette;
-
-class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
-{
-    DECLARE_NO_COPY_CLASS(wxPaletteRefData)
-
-    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
-public:
-    wxPaletteRefData();
-    virtual ~wxPaletteRefData();
-protected:
-    wxColour* m_palette;
-    wxInt32   m_count ;
-};
-
 #define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
 
-class WXDLLEXPORT wxPalette: public wxPaletteBase
+class WXDLLEXPORT wxPalette : public wxPaletteBase
 {
 public:
     wxPalette();
@@ -40,18 +24,18 @@ public:
     wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
     virtual ~wxPalette();
     bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
-    
+
     int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
     bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const { return (m_refData != NULL) ; }
-
     virtual int GetColoursCount() const;
-    
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxPalette)
 };
 
-#endif
-    // _WX_PALETTE_H_
+#endif // _WX_PALETTE_H_
index 69eae585d340d1b0a3b7994e09df1d509cec7628..ee28813e408101c4286a81722a1f7b0ffe81dd58 100644 (file)
 #include "wx/colour.h"
 #include "wx/bitmap.h"
 
-class WXDLLIMPEXP_FWD_CORE wxPen;
-
 // Pen
-class WXDLLEXPORT wxPen: public wxGDIObject
+class WXDLLEXPORT wxPen : public wxGDIObject
 {
-  DECLARE_DYNAMIC_CLASS(wxPen)
 public:
-  wxPen();
-  wxPen(const wxColour& col, int width = 1, int style = wxSOLID);
-  wxPen(const wxBitmap& stipple, int width);
-  virtual ~wxPen();
+    wxPen();
+    wxPen(const wxColour& col, int width = 1, int style = wxSOLID);
+    wxPen(const wxBitmap& stipple, int width);
+    virtual ~wxPen();
+
+    bool operator==(const wxPen& pen) const;
+    bool operator!=(const wxPen& pen) const { return !(*this == pen); }
 
-  bool operator == (const wxPen& pen) const;
-  bool operator != (const wxPen& pen) const { return !(*this == pen); }
+    // Override in order to recreate the pen
+    void SetColour(const wxColour& col) ;
+    void SetColour(unsigned char r, unsigned char g, unsigned char b) ;
 
-  // Override in order to recreate the pen
-  void SetColour(const wxColour& col) ;
-  void SetColour(unsigned char r, unsigned char g, unsigned char b) ;
+    void SetWidth(int width)  ;
+    void SetStyle(int style)  ;
+    void SetStipple(const wxBitmap& stipple)  ;
+    void SetDashes(int nb_dashes, const wxDash *dash)  ;
+    void SetJoin(int join)  ;
+    void SetCap(int cap)  ;
 
-  void SetWidth(int width)  ;
-  void SetStyle(int style)  ;
-  void SetStipple(const wxBitmap& stipple)  ;
-  void SetDashes(int nb_dashes, const wxDash *dash)  ;
-  void SetJoin(int join)  ;
-  void SetCap(int cap)  ;
+    wxColour& GetColour() const ;
+    int GetWidth() const;
+    int GetStyle() const;
+    int GetJoin() const;
+    int GetCap() const;
+    int GetDashes(wxDash **ptr) const;
 
-  wxColour& GetColour() const ;
-  int GetWidth() const;
-  int GetStyle() const;
-  int GetJoin() const;
-  int GetCap() const;
-  int GetDashes(wxDash **ptr) const;
+    wxBitmap *GetStipple() const ;
 
-  wxBitmap *GetStipple() const ;
+    // Implementation
 
-// Implementation
+    // Useful helper: create the brush resource
+    bool RealizeResource();
 
-  // Useful helper: create the brush resource
-  bool RealizeResource();
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     void Unshare();
+
+    DECLARE_DYNAMIC_CLASS(wxPen)
 };
 
 #endif
index ba2a0ae5d03e8419a06d535eae39f8e78e6b056a..f04cdef8d9c66ebe8977bbbdb69e5e6d318b8d2a 100644 (file)
@@ -43,6 +43,9 @@ public:
     const WXHRGN GetWXHRGN() const ;
 
 protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
     virtual bool DoIsEqual(const wxRegion& region) const;
     virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
     virtual wxRegionContain DoContainsPoint(wxCoord x, wxCoord y) const;
index ab6806b3e912d56c375da0fe9c652fb5598396b8..60bfc1c3357a40c044d326f2179359b2ed3380c8 100644 (file)
@@ -38,8 +38,6 @@ public:
     wxBitmap(const wxString &filename, wxBitmapType type = wxBITMAP_TYPE_RESOURCE);
     wxBitmap(const wxImage& image, int depth = -1);
     virtual ~wxBitmap() {}
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     bool Create(int width, int height, int depth = -1);
 
index 97fccfdd1a2006e5986d5757b4abd8154f47e3db..afb78bafa54f4873513cf5640071610aaea5477c 100644 (file)
@@ -27,17 +27,15 @@ class WXDLLIMPEXP_FWD_CORE wxBrush;
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxBrush: public wxBrushBase
+class WXDLLEXPORT wxBrush : public wxBrushBase
 {
 public:
     wxBrush() {}
     wxBrush(const wxColour &colour, int style = wxSOLID);
     wxBrush(const wxBitmap &stippleBitmap);
-    virtual ~wxBrush() {}
-    bool operator == (const wxBrush& brush) const;
-    bool operator != (const wxBrush& brush) const;
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
+
+    bool operator==(const wxBrush& brush) const;
+    bool operator!=(const wxBrush& brush) const;
 
     virtual int GetStyle() const;
     wxColour &GetColour() const;
@@ -54,9 +52,8 @@ public:
     void* GetPixPattern() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxBrush)
index 1b3f118b3f5da244eaacd6713285786613dc69e3..7e2ebb3c518218ccc5e6a19eb1e15060d094064a 100644 (file)
@@ -10,8 +10,7 @@
 #ifndef __WX_CURSOR_H__
 #define __WX_CURSOR_H__
 
-#include "wx/defs.h"
-#include "wx/object.h"
+#include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
 class MGLCursor;
@@ -20,7 +19,7 @@ class MGLCursor;
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxCursor: public wxObject
+class WXDLLEXPORT wxCursor : public wxGDIObject
 {
 public:
 
@@ -33,8 +32,6 @@ public:
              long flags = wxBITMAP_TYPE_CUR_RESOURCE,
              int hotSpotX = 0, int hotSpotY = 0);
     virtual ~wxCursor();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     // implementation
     MGLCursor *GetMGLCursor() const;
index a8f9a25fbe208a2963fce6142b2cbd0afe6615aa..7d9c9ba172dac38c52f42fe94772341b73268227 100644 (file)
@@ -87,8 +87,8 @@ public:
 
 protected:
     // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxFont)
index 459403fc40a41dfd74160d0ba31a21abdb65f507..72fb6178caa6376c2ffaffc96e46c4bba60eebae 100644 (file)
@@ -27,16 +27,12 @@ struct palette_t;
 // wxPalette
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxPalette: public wxPaletteBase
+class WXDLLEXPORT wxPalette : public wxPaletteBase
 {
-    DECLARE_DYNAMIC_CLASS(wxPalette)
-
 public:
     wxPalette();
     wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
     virtual ~wxPalette();
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const;
 
     bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
     int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
@@ -46,6 +42,8 @@ public:
     virtual int GetColoursCount() const;
 
     palette_t *GetMGLpalette_t() const;
+
+    DECLARE_DYNAMIC_CLASS(wxPalette)
 };
 
 #endif // __WX_PALETTE_H__
index 6dd307ae0c20ea23aa00e4e4b22159f2e6bc1cea..c8dfd2b533b2d4ab996c6da69f27c195ca751d63 100644 (file)
@@ -27,7 +27,7 @@ class WXDLLIMPEXP_FWD_CORE wxPen;
 // wxPen
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxPen: public wxGDIObject
+class WXDLLEXPORT wxPen : public wxGDIObject
 {
 public:
     wxPen() {}
@@ -56,16 +56,12 @@ public:
     wxDash* GetDash() const;
     wxBitmap *GetStipple() const;
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
-
     // implementation:
     void* GetPixPattern() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxPen)
index f1ae0e3e463af5f16cf886194e7eee918ec6cf7b..838ba5e118fa41a49db63a4799383bc0c550767a 100644 (file)
@@ -44,9 +44,8 @@ public:
     const MGLRegion& GetMGLRegion() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // wxRegionBase pure virtuals
     virtual bool DoIsEqual(const wxRegion& region) const;
index 9c8bb43a4275db193796b9e5c1a7bd121a870f9b..a74c97321f3d8c352d988d7ff26a00a2627e7cc3 100644 (file)
@@ -36,7 +36,7 @@ public:
 
 
     // accessors
-    bool IsOk() const {return m_isInit; }
+    virtual bool IsOk() const {return m_isInit; }
     unsigned char Red() const { return m_red; }
     unsigned char Green() const { return m_green; }
     unsigned char Blue() const { return m_blue; }
index 11a68c53641ccfde218098f5dcaa41d73f222a94..ccb7837598f5fb63d806befce4ec4f2a01b30f9e 100644 (file)
 #ifndef _WX_CURSOR_H_
 #define _WX_CURSOR_H_
 
-#include "wx/object.h"
+#include "wx/gdiobj.h"
 #include "wx/gdicmn.h"
 
 class WXDLLIMPEXP_FWD_CORE wxImage;
 
 // Cursor
-class WXDLLEXPORT wxCursor: public wxObject
+class WXDLLEXPORT wxCursor : public wxGDIObject
 {
-    DECLARE_DYNAMIC_CLASS(wxCursor)
-
 public:
     wxCursor();
 
@@ -39,12 +37,14 @@ public:
     wxCursor(wxStockCursor id);
     virtual ~wxCursor();
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const;
-
     // Motif-specific.
     // Create/get a cursor for the current display
     WXCursor GetXCursor(WXDisplay* display) const;
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     void Create(const char bits[], int width, int height,
                 int hotSpotX = -1, int hotSpotY = -1,
@@ -53,6 +53,8 @@ private:
 
     // Make a cursor from standard id
     WXCursor MakeCursor(WXDisplay* display, wxStockCursor id) const;
+
+    DECLARE_DYNAMIC_CLASS(wxCursor)
 };
 
 extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor);
index 69f0a5cea80abe04302cf212b74c8099a28f236b..bd8eff6b268ca800c6d878bfd276efa4ecdf382c 100644 (file)
@@ -107,7 +107,11 @@ public:
     // like the function above but does a copy for XmFontList
     WXFontType GetFontTypeC(WXDisplay* display) const;
     static WXString GetFontTag();
+
 protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
     virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info );
 
     void Unshare();
@@ -116,5 +120,4 @@ private:
     DECLARE_DYNAMIC_CLASS(wxFont)
 };
 
-#endif
-// _WX_FONT_H_
+#endif // _WX_FONT_H_
index 8c239785afd8444e11ad0a35b334fbe8fbf37c09..176eb45edb0a4b1f5332932085a5f1025b4ecc80 100644 (file)
@@ -176,7 +176,7 @@ public:
 
 protected:
     virtual wxGDIImageRefData *CreateData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // creates an uninitialized bitmap, called from Create()s above
     bool DoCreate(int w, int h, int depth, WXHDC hdc);
index 6e21585ad1fc1d8ef4aaf38ac1d18214a0861eee..5cac035628d10fc037fb8f3cf13ba3f0afa40800 100644 (file)
@@ -42,19 +42,15 @@ public:
     virtual int GetStyle() const;
     wxBitmap *GetStipple() const;
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
     // return the HBRUSH for this brush
     virtual WXHANDLE GetResourceHandle() const;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxBrush)
 };
 
-#endif
-    // _WX_BRUSH_H_
+#endif // _WX_BRUSH_H_
index 64adfe9c3fbe07c81553f6253188e7ef2d5ed899..14760092270976b49c0bd87f85c192a5a854d0f6 100644 (file)
@@ -36,7 +36,7 @@ public:
     // accessors
     // ---------
 
-    bool IsOk() const { return m_isInit; }
+    virtual bool IsOk() const { return m_isInit; }
 
     unsigned char Red() const { return m_red; }
     unsigned char Green() const { return m_green; }
index f03827e52b8ab8ebfba76cccca195ce1fc42d22b..2e894bbbb55e58dec16adb0ba0d94298d6d94317 100644 (file)
@@ -13,6 +13,7 @@
 #define _WX_MSW_ENHMETA_H_
 
 #include "wx/dc.h"
+#include "wx/gdiobj.h"
 
 #if wxUSE_DRAG_AND_DROP
     #include "wx/dataobj.h"
 // wxEnhMetaFile: encapsulation of Win32 HENHMETAFILE
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEnhMetaFile : public wxObject
+class WXDLLEXPORT wxEnhMetaFile : public wxGDIObject
 {
 public:
     wxEnhMetaFile(const wxString& file = wxEmptyString) : m_filename(file)
         { Init(); }
-    wxEnhMetaFile(const wxEnhMetaFile& metafile) : wxObject()
+    wxEnhMetaFile(const wxEnhMetaFile& metafile) : wxGDIObject()
         { Init(); Assign(metafile); }
     wxEnhMetaFile& operator=(const wxEnhMetaFile& metafile)
         { Free(); Assign(metafile); return *this; }
@@ -39,8 +40,7 @@ public:
     bool Play(wxDC *dc, wxRect *rectBound = (wxRect *)NULL);
 
     // accessors
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_hMF != 0; }
+    virtual bool IsOk() const { return m_hMF != 0; }
 
     wxSize GetSize() const;
     int GetWidth() const { return GetSize().x; }
@@ -62,6 +62,11 @@ protected:
     void Free();
     void Assign(const wxEnhMetaFile& mf);
 
+    // we don't use these functions (but probably should) but have to implement
+    // them as they're pure virtual in the base class
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     wxString m_filename;
     WXHANDLE m_hMF;
index 2437e22f4a8bea916d910b549f34eb5da6576337..206f2ba65abdd115b8c86140e02868068db4b7a8 100644 (file)
@@ -135,8 +135,8 @@ protected:
     virtual void DoSetNativeFontInfo(const wxNativeFontInfo& info);
 
     // implement wxObject virtuals which are used by AllocExclusive()
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxFont)
index b22ff3ceaad37d6d4033a202759780316497333b..2a085f319fa462d971e6ae8d6e210e2c91d96835 100644 (file)
@@ -51,7 +51,7 @@ public:
     }
 
     // accessors
-    bool IsOk() const { return m_handle != 0; }
+    virtual bool IsOk() const { return m_handle != 0; }
 
     void SetSize(int w, int h) { m_width = w; m_height = h; }
 
@@ -154,9 +154,6 @@ public:
     void SetHandle(WXHANDLE handle)
         { AllocExclusive(); GetGDIImageData()->m_handle = handle; }
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return GetHandle() != 0; }
-
     int GetWidth() const { return IsNull() ? 0 : GetGDIImageData()->m_width; }
     int GetHeight() const { return IsNull() ? 0 : GetGDIImageData()->m_height; }
     int GetDepth() const { return IsNull() ? 0 : GetGDIImageData()->m_depth; }
@@ -180,8 +177,17 @@ protected:
     // create the data for the derived class here
     virtual wxGDIImageRefData *CreateData() const = 0;
 
-    // implement the wxObject method in terms of our, more specific, one
-    virtual wxObjectRefData *CreateRefData() const { return CreateData(); }
+    // implement the wxGDIObject method in terms of our, more specific, one
+    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 8ac8a37734c9e954909fc375bf08c5936a66a594..a74416887e0c4dd18aa2fa9bf4b226ac5e037305 100644 (file)
@@ -27,15 +27,18 @@ class WXDLLIMPEXP_FWD_CORE wxMetafile;
 
 class WXDLLEXPORT wxMetafileRefData: public wxGDIRefData
 {
-    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 public:
     wxMetafileRefData();
     virtual ~wxMetafileRefData();
 
+    virtual bool IsOk() const { return m_metafile != 0; }
+
 public:
     WXHANDLE m_metafile;
     int m_windowsMappingMode;
     int m_width, m_height;
+
+    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 };
 
 #define M_METAFILEDATA ((wxMetafileRefData *)m_refData)
@@ -51,8 +54,6 @@ public:
     virtual bool SetClipboard(int width = 0, int height = 0);
 
     virtual bool Play(wxDC *dc);
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return (M_METAFILEDATA && (M_METAFILEDATA->m_metafile != 0)); };
 
     // set/get the size of metafile for clipboard operations
     wxSize GetSize() const { return wxSize(GetWidth(), GetHeight()); }
@@ -96,6 +97,9 @@ public:
 protected:
     virtual void DoGetSize(int *width, int *height) const;
 
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
     int           m_windowsMappingMode;
     wxMetafile*   m_metaFile;
 
index bbeab7e7ddf3f04e4f0edf06d934383f22b14192..ee404a18816a2ba2b2b34fff804795e32f65e5f9 100644 (file)
 
 #include "wx/gdiobj.h"
 
-class WXDLLIMPEXP_FWD_CORE wxPalette;
-
-class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
+class WXDLLEXPORT wxPalette : public wxPaletteBase
 {
-    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
 public:
-    wxPaletteRefData(void);
-    virtual ~wxPaletteRefData(void);
-protected:
- WXHPALETTE m_hPalette;
-};
+    wxPalette() { }
+    wxPalette(int n,
+              unsigned char *red, unsigned char *green, unsigned char *blue)
+    {
+        Create(n, red, green, blue);
+    }
 
-#define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
-
-class WXDLLEXPORT wxPalette: public wxPaletteBase
-{
-public:
-    wxPalette();
-    wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
-    virtual ~wxPalette(void);
-    bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue);
-    
-    int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
-    bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
+    bool Create(int n,
+                unsigned char *red, unsigned char *green, unsigned char *blue);
 
     virtual int GetColoursCount() const;
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk(void) const { return (m_refData != NULL) ; }
+    int
+    GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
 
-    virtual bool FreeResource(bool force = false);
+    bool
+    GetRGB(int pixel,
+           unsigned char *red, unsigned char *green, unsigned char *blue) const;
 
     // implemetation
-    inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
+    WXHPALETTE GetHPALETTE() const;
     void SetHPALETTE(WXHPALETTE pal);
-  
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxPalette)
 };
 
-#endif
-    // _WX_PALETTE_H_
+#endif // _WX_PALETTE_H_
index 95c50c06ab00924dfbfc0cf9699d335ebeeffdb1..448c58e69e040d34d0a4fd19123e0946749bd9e1 100644 (file)
@@ -30,9 +30,6 @@ public:
     bool operator==(const wxPen& pen) const;
     bool operator!=(const wxPen& pen) const { return !(*this == pen); }
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const { return (m_refData != NULL); }
-
     // Override in order to recreate the pen
     void SetColour(const wxColour& col);
     void SetColour(unsigned char r, unsigned char g, unsigned char b);
@@ -61,8 +58,8 @@ public:
     virtual bool IsFree() const;
 
 protected:
-    virtual wxObjectRefData* CreateRefData() const;
-    virtual wxObjectRefData* CloneRefData(const wxObjectRefData* data) const;
+    virtual wxGDIRefData* CreateGDIRefData() const;
+    virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* data) const;
 
     // same as FreeResource() + RealizeResource()
     bool Recreate();
index 97203acb3f772625c8c7169533e1e98c723fb0ae..a52b9f15d452c32bc91a498473afe14287c9a30e 100644 (file)
@@ -43,8 +43,8 @@ public:
     WXHRGN GetHRGN() const;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     virtual bool DoIsEqual(const wxRegion& region) const;
     virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
index ef7f919bb89e59667c7a1de42858ddbe864b9079..ff7fccded8bb10125bfede8cdeae09c48ac12b2f 100644 (file)
@@ -216,9 +216,8 @@ protected:
 
     bool CreateFromImage(const wxImage& image, int depth);
 
-   // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     bool CopyFromIconOrCursor(const wxGDIImage& rIcon);
index 9743686938fd7c6619d05f02924fd376656f55cb..4d62415e98f70658f699237064d5660357ffca9b 100644 (file)
@@ -68,9 +68,6 @@ public:
     inline wxBitmap* GetStipple(void) const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_vStipple : 0); };
     inline int       GetPS(void) const { return (M_BRUSHDATA ? M_BRUSHDATA->m_hBrush : 0); };
 
-    inline virtual bool Ok() const { return IsOk(); }
-    inline virtual bool IsOk(void) const { return (m_refData != NULL) ; }
-
     //
     // Implementation
     //
index 02b7fc00df0bedae5cd40ab6605c2aab470c262f..90e1fe0290c903f601f1ff2d47197e9562164b2c 100644 (file)
@@ -34,7 +34,7 @@ public:
     virtual ~wxColour();
 
     // Accessors
-    bool IsOk(void) const {return m_bIsInit; }
+    virtual bool IsOk(void) const { return m_bIsInit; }
 
     unsigned char Red(void) const { return m_cRed; }
     unsigned char Green(void) const { return m_cGreen; }
index 7269022b2b9a6d24b42aae3300d1af18d0d7e536..de43fec73a7412fbdfa0e66670d009708b5eabf8 100644 (file)
@@ -41,7 +41,7 @@ public:
     }
 
     // accessors
-    bool IsOk() const
+    virtual bool IsOk() const
     {
         if (m_hHandle == 0)
             return false;
@@ -187,9 +187,6 @@ public:
         pData->m_hHandle = hHandle;
     }
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return GetHandle() != 0; }
-
     int GetWidth() const { return IsNull() ? 0 : GetGDIImageData()->m_nWidth; }
     int GetHeight() const { return IsNull() ? 0 : GetGDIImageData()->m_nHeight; }
     int GetDepth() const { return IsNull() ? 0 : GetGDIImageData()->m_nDepth; }
@@ -232,6 +229,7 @@ public:
 protected:
     // create the data for the derived class here
     virtual wxGDIImageRefData* CreateData() const = 0;
+    virtual wxGDIRefData *CreateGDIRefData() const { return CreateData(); }
 
     static wxGDIImageHandlerList    ms_handlers;
 };
index 55cf236972eeb66682f38e541bd3e766c7be9630..6a79199a78eadbeb85c7e4e99eb1f6b79bd4e56a 100644 (file)
@@ -39,6 +39,8 @@ public:
     wxMetafileRefData(void);
     virtual ~wxMetafileRefData(void);
 
+    virtual bool IsOk() const { return m_metafile != 0; }
+
 public:
     WXHANDLE m_metafile;
     int m_windowsMappingMode;
@@ -58,8 +60,6 @@ public:
     virtual bool SetClipboard(int width = 0, int height = 0);
 
     virtual bool Play(wxDC *dc);
-    inline bool Ok() const { return IsOk(); }
-    inline bool IsOk(void) const { return (M_METAFILEDATA && (M_METAFILEDATA->m_metafile != 0)); };
 
     // Implementation
     inline WXHANDLE GetHMETAFILE(void) { return M_METAFILEDATA->m_metafile; }
index 3f094805f2689ce91b92382f9a9c70eba36b73a8..ba3109be260e206ea64fc1e2f5d694a706b5257c 100644 (file)
@@ -59,9 +59,6 @@ public:
                 ,unsigned char* pBlue
                ) const;
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk(void) const { return (m_refData != NULL) ; }
-
     virtual bool FreeResource(bool bForce = false);
 
     inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
index a036a152a0c946fb0757d803cc507dbe0cd26b93..86ce52baf8be406a0de79b30370057871519cc2d 100644 (file)
@@ -81,9 +81,6 @@ public:
     inline bool   operator != (const wxPen& rPen) const
         { return !(*this == rPen); }
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk(void) const { return (m_refData != NULL); }
-
     //
     // Override in order to recreate the pen
     //
index 22a48dc1885fc4f2f2429d9b9e95beb230f4dc61..882315fcec4f64bba49bb4b76d30bbf4e97e1ecf 100644 (file)
@@ -64,8 +64,8 @@ public:
     void   SetPS(HPS hPS);
 
 protected:
-    virtual wxObjectRefData* CreateData(void) const;
-    virtual wxObjectRefData* CloneData(const wxObjectRefData* pData) const;
+    virtual wxGDIRefData* CreateData(void) const;
+    virtual wxGDIRefData* CloneData(const wxGDIRefData* pData) const;
 
     virtual bool DoIsEqual(const wxRegion& region) const;
     virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
index 8f2e85363dbb07e5f875a370eb8ff1bedd64bc12..491838d3cddc8d377955a31518271073ae46c250 100644 (file)
@@ -25,8 +25,6 @@ class WXDLLEXPORT wxPaletteBase: public wxGDIObject
 public:
     virtual ~wxPaletteBase() { }
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const = 0;
     virtual int GetColoursCount() const { wxFAIL_MSG( _T("not implemented") ); return 0; }
 };
 
index 6d45ab02989ff78cfa4fb19d828b60c80a05f1fd..495ea2e6490c301e53924bbceb17ebb293889daa 100644 (file)
@@ -42,19 +42,15 @@ public:
     virtual int GetStyle() const;
     wxBitmap *GetStipple() const;
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
     // return the HBRUSH for this brush
     virtual WXHANDLE GetResourceHandle() const;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxBrush)
 };
 
-#endif
-    // _WX_BRUSH_H_
+#endif // _WX_BRUSH_H_
index c7cd75147729567f205e26c33cdf3b255875a0db..1501435442e26fd611d6b8b9b737a090f5809159 100644 (file)
@@ -13,6 +13,7 @@
 #define _WX_PALMOS_ENHMETA_H_
 
 #include "wx/dc.h"
+#include "wx/gdiobj.h"
 
 #if wxUSE_DRAG_AND_DROP
     #include "wx/dataobj.h"
@@ -22,7 +23,7 @@
 // wxEnhMetaFile: encapsulation of Win32 HENHMETAFILE
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEnhMetaFile : public wxObject
+class WXDLLEXPORT wxEnhMetaFile : public wxGDIObject
 {
 public:
     wxEnhMetaFile(const wxString& file = wxEmptyString) : m_filename(file)
@@ -39,8 +40,7 @@ public:
     bool Play(wxDC *dc, wxRect *rectBound = (wxRect *)NULL);
 
     // accessors
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_hMF != 0; }
+    virtual bool IsOk() const { return m_hMF != 0; }
 
     wxSize GetSize() const;
     int GetWidth() const { return GetSize().x; }
index 5c2bfcdebae2ea39ee1f2d9868466e056580f25d..3d5253328b8a27614925c51ddba1230be9aa3f80 100644 (file)
@@ -41,7 +41,7 @@ public:
     }
 
     // accessors
-    bool IsOk() const { return m_handle != 0; }
+    virtual bool IsOk() const { return m_handle != 0; }
 
     void SetSize(int w, int h) { m_width = w; m_height = h; }
 
@@ -147,9 +147,6 @@ public:
     void SetHandle(WXHANDLE handle)
         { EnsureHasData(); GetGDIImageData()->m_handle = handle; }
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return GetHandle() != 0; }
-
     int GetWidth() const { return IsNull() ? 0 : GetGDIImageData()->m_width; }
     int GetHeight() const { return IsNull() ? 0 : GetGDIImageData()->m_height; }
     int GetDepth() const { return IsNull() ? 0 : GetGDIImageData()->m_depth; }
@@ -172,6 +169,7 @@ public:
 protected:
     // create the data for the derived class here
     virtual wxGDIImageRefData *CreateData() const = 0;
+    virtual wxGDIRefData *CreateGDIRefData() const { return CreateData(); }
 
     static wxGDIImageHandlerList ms_handlers;
 };
index ccbb807c26ec135eb6921aa0c01908efd510ae88..3a0c60eb8af91917e9666ea00fc8b07714ae16aa 100644 (file)
@@ -27,15 +27,18 @@ class WXDLLIMPEXP_FWD_CORE wxMetafile;
 
 class WXDLLEXPORT wxMetafileRefData: public wxGDIRefData
 {
-    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 public:
     wxMetafileRefData();
     virtual ~wxMetafileRefData();
 
+    virtual bool IsOk() const { return m_metafile != 0; }
+
 public:
     WXHANDLE m_metafile;
     int m_windowsMappingMode;
     int m_width, m_height;
+
+    friend class WXDLLIMPEXP_FWD_CORE wxMetafile;
 };
 
 #define M_METAFILEDATA ((wxMetafileRefData *)m_refData)
@@ -51,8 +54,6 @@ public:
     virtual bool SetClipboard(int width = 0, int height = 0);
 
     virtual bool Play(wxDC *dc);
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return (M_METAFILEDATA && (M_METAFILEDATA->m_metafile != 0)); };
 
     // set/get the size of metafile for clipboard operations
     wxSize GetSize() const { return wxSize(GetWidth(), GetHeight()); }
index 668e05116fe9c8393219b346de14edab212e1c7e..86c6a6970f812011390f54f98b35e296084a8961 100644 (file)
@@ -41,9 +41,6 @@ public:
   int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
   bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
 
-  virtual bool Ok() const { return IsOk(); }
-  virtual bool IsOk(void) const { return (m_refData != NULL) ; }
-
   virtual bool FreeResource(bool force = false);
 
   inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }
index 41a7146509614d13781cd1681bbde066a3f99eeb..91731fcf51849f41d282b505bbd1759386e3cdc4 100644 (file)
@@ -89,9 +89,6 @@ public:
 
     bool operator!=(const wxPen& pen) const { return !(*this == pen); }
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const { return (m_refData != NULL); }
-
     // Override in order to recreate the pen
     void SetColour(const wxColour& col);
     void SetColour(unsigned char r, unsigned char g, unsigned char b);
index 5e973f80732ba48af35b8ff9598c9a7a476e9435..ce0586c21b285efb141c46f5145c6970401cb8f0 100644 (file)
@@ -44,8 +44,8 @@ public:
     WXHRGN GetHRGN() const;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     virtual bool DoIsEqual(const wxRegion& region) const;
     virtual bool DoGetBox(wxCoord& x, wxCoord& y, wxCoord& w, wxCoord& h) const;
index f01604dd1e2c708ea0ebabe13a05e78c00092cbd..78ab862ae3291e052ad67e938525478748d17a71 100644 (file)
@@ -201,7 +201,7 @@ protected:
 
 
 /// wxFontMgrFontRefData implementation using wxFontsManager classes
-class wxFontMgrFontRefData : public wxObjectRefData
+class wxFontMgrFontRefData : public wxGDIRefData
 {
 public:
     wxFontMgrFontRefData(int size = wxDEFAULT,
index eede02e6174dec282ba79ebeb709fc18a5e546f7..e2c82500b4d6f0ec7285291513ab2d216142a113 100644 (file)
@@ -82,9 +82,6 @@ public:
     // accessors
     // ---------
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
     // Is region empty?
     virtual bool IsEmpty() const = 0;
     bool Empty() const { return IsEmpty(); }
index 6c404b6a8e22a224bd44a9441a0e675715c49aa7..29572c48707d0a6deea5b71b8f6c86bce7b47878 100644 (file)
@@ -84,9 +84,6 @@ public:
     wxBitmap( const wxString &filename, wxBitmapType type = wxBITMAP_TYPE_XPM );
     virtual ~wxBitmap();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
-
     static void InitStandardHandlers();
 
     bool Create(int width, int height, int depth = -1);
@@ -138,8 +135,8 @@ public:
     WXDisplay *GetDisplay() const;
 
 protected:
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxBitmap)
index ce581ab06d726ccadc5ef68879cf5e65e34ab9e3..93ec215aca9714308f4b956e711b7faf6daa0ad9 100644 (file)
@@ -26,7 +26,7 @@ class WXDLLIMPEXP_FWD_CORE wxBitmap;
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxBrush: public wxBrushBase
+class WXDLLIMPEXP_CORE wxBrush : public wxBrushBase
 {
 public:
     wxBrush() { }
@@ -35,11 +35,8 @@ public:
     wxBrush( const wxBitmap &stippleBitmap );
     virtual ~wxBrush();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxBrush& brush ) const;
-    bool operator != (const wxBrush& brush) const { return !(*this == brush); }
+    bool operator==(const wxBrush& brush) const;
+    bool operator!=(const wxBrush& brush) const { return !(*this == brush); }
 
     virtual int GetStyle() const;
     wxColour &GetColour() const;
@@ -51,12 +48,10 @@ public:
     void SetStipple( const wxBitmap& stipple );
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxBrush)
 };
 
-#endif
-// _WX_BRUSH_H_
+#endif // _WX_BRUSH_H_
index 249520c8e448a77945f92eefed9f4cb3cde47798..411665e88eef6c68741dc0feee982dfc8997cc68 100644 (file)
@@ -44,10 +44,8 @@ public:
 
     virtual ~wxColour();
 
-    bool IsOk() const { return m_refData != NULL; }
-
-    bool operator == ( const wxColour& col ) const;
-    bool operator != ( const wxColour& col ) const { return !(*this == col); }
+    bool operator==(const wxColour& col) const;
+    bool operator!=(const wxColour& col) const { return !(*this == col); }
 
     unsigned char Red() const;
     unsigned char Green() const;
@@ -60,9 +58,8 @@ public:
     WXColor *GetColor() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     virtual void
     InitRGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
@@ -73,6 +70,4 @@ private:
     DECLARE_DYNAMIC_CLASS(wxColour)
 };
 
-#endif
-
-// _WX_COLOUR_H_
+#endif // _WX_COLOUR_H_
index 3a22621bd1f49ba5deda9fae166b6508ca07fe5d..51e6c60a5f9ec2328f04901dcea463ec2fbe14e2 100644 (file)
 #ifndef _WX_CURSOR_H_
 #define _WX_CURSOR_H_
 
-#include "wx/bitmap.h"
+#include "wx/gdiobj.h"
 
-#if wxUSE_IMAGE
-#include "wx/image.h"
-#endif
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 //-----------------------------------------------------------------------------
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxCursor: public wxObject
+class WXDLLIMPEXP_CORE wxCursor : public wxGDIObject
 {
 public:
-
     wxCursor();
     wxCursor( int cursorId );
 #if wxUSE_IMAGE
     wxCursor( const wxImage & image );
 #endif
+
     wxCursor( const char bits[], int width, int  height,
               int hotSpotX=-1, int hotSpotY=-1,
               const char maskBits[]=0, wxColour *fg=0, wxColour *bg=0 );
     virtual ~wxCursor();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const;
 
     // implementation
 
     WXCursor GetCursor() const;
 
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
 private:
     DECLARE_DYNAMIC_CLASS(wxCursor)
 };
 
-
-#endif
-    // _WX_CURSOR_H_
+#endif // _WX_CURSOR_H_
index 09152d540db36d84c1c5cab402e18cbb0e1b3173..6a2db7f31056c4b66788a7e4a5d2f41919d15205 100644 (file)
@@ -101,6 +101,9 @@ public:
 #endif
 
 protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
+
     virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info );
 
     void Unshare();
index bb33a74b9b06328be28ff3e2f5fcfccb49636ee0..60d43c87b75811aa1635af6225369bc5a03243c6 100644 (file)
@@ -12,7 +12,6 @@
 #ifndef _WX_PALETTE_H_
 #define _WX_PALETTE_H_
 
-#include "wx/gdiobj.h"
 #include "wx/list.h"
 
 class WXDLLIMPEXP_FWD_CORE wxPalette;
@@ -45,7 +44,7 @@ protected:
 
 #define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
 
-class WXDLLEXPORT wxPalette: public wxPaletteBase
+class WXDLLEXPORT wxPalette : public wxPaletteBase
 {
     DECLARE_DYNAMIC_CLASS(wxPalette)
 
@@ -58,16 +57,16 @@ public:
     int GetPixel(unsigned char red, unsigned char green, unsigned char blue) const;
     bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const;
 
-    virtual bool Ok() const { return IsOk(); }
-    virtual bool IsOk() const { return (m_refData != NULL) ; }
-
     // X-specific
     WXColormap GetXColormap(WXDisplay* display = NULL) const;
     bool TransferBitmap(void *data, int depth, int size);
     bool TransferBitmap8(unsigned char *data, unsigned long size, void *dest, unsigned int bpp);
     unsigned long *GetXPixArray(WXDisplay* display, int *pix_array_n);
     void PutXColormap(WXDisplay* display, WXColormap cmap, bool destroyable);
+
+protected:
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 };
 
-#endif
-// _WX_PALETTE_H_
+#endif // _WX_PALETTE_H_
index ccb6310eb552db6eb74bde9a1d7fb53034cb306d..e7d259bc9dab24ba1c9284b1873ecb3abfd65f44 100644 (file)
@@ -38,9 +38,6 @@ public:
     wxPen( const wxBitmap &stipple, int width );
     virtual ~wxPen();
 
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_refData != NULL; }
-
     bool operator == ( const wxPen& pen ) const;
     bool operator != (const wxPen& pen) const { return !(*this == pen); }
 
@@ -64,12 +61,10 @@ public:
     wxBitmap* GetStipple() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     DECLARE_DYNAMIC_CLASS(wxPen)
 };
 
-#endif
-// _WX_PEN_H_
+#endif // _WX_PEN_H_
index ec257864a131dd64ff08b5781271e1aacedabea3..1ba0e898a16e01863e72d76eecb08ff6ef603096 100644 (file)
@@ -61,9 +61,8 @@ public:
     WXRegion *GetX11Region() const;
 
 protected:
-    // ref counting code
-    virtual wxObjectRefData *CreateRefData() const;
-    virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
+    virtual wxGDIRefData *CreateGDIRefData() const;
+    virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
     // wxRegionBase pure virtuals
     virtual bool DoIsEqual(const wxRegion& region) const;
index 05553108c4e74ac6f088606683719e3be445c99f..7d04461049f6904dac96b838cbd7aa1de4d04f31 100644 (file)
@@ -46,6 +46,8 @@ public:
     wxBitmapRefData( const wxBitmapRefData& data );
     virtual ~wxBitmapRefData();
 
+    virtual bool IsOk() const { return m_ok; }
+
 protected:
     int                 m_width;
     int                 m_height;
@@ -145,12 +147,12 @@ wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type)
     LoadFile(filename, type);
 }
 
-wxObjectRefData *wxBitmap::CreateRefData() const
+wxGDIRefData *wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBitmapRefData(*(wxBitmapRefData*)data);
 }
@@ -254,11 +256,6 @@ void wxBitmap::SetMask(wxMask *mask)
     M_BITMAPDATA->m_bitmapMask = mask ;
 }
 
-bool wxBitmap::IsOk() const
-{
-    return m_refData && M_BITMAPDATA->m_ok;
-}
-
 wxPalette* wxBitmap::GetPalette() const
 {
     if(!m_refData)
index eef0553a907b6d0cdc6268155fba953d96f83e90..6a1bce5e7f87fc286e91944d2cfc195eece29a83 100644 (file)
@@ -159,12 +159,12 @@ wxBrush::wxBrush(const wxBitmap& stipple)
     m_refData = new wxBrushRefData(stipple);
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(wxBrushRefData *)data);
 }
index e18a4768b3b95bbddf50e36812d268eced210c21..bac3a57df9cd30c53743662740cfff37c0ea34c5 100644 (file)
@@ -319,7 +319,7 @@ bool wxFont::Create(wxFontRefData *refData)
 {
     UnRef();
     m_refData = refData;
-    
+
     return m_refData != NULL;
 }
 
@@ -327,10 +327,20 @@ bool wxFont::Create(const wxNativeFontInfo& nativeFontInfo)
 {
     UnRef();
     m_refData = new wxFontRefData(nativeFontInfo);
-    
+
     return true;
 }
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData;
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 void wxFont::SetEncoding(wxFontEncoding)
 {
 }
@@ -398,24 +408,9 @@ bool wxFont::RealizeResource()
     return false;
 }
 
-void wxFont::Unshare()
-{
-    // Don't change shared data
-    if (!m_refData)
-    {
-        m_refData = new wxFontRefData();
-    }
-    else
-    {
-        wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData);
-        UnRef();
-        m_refData = ref;
-    }
-}
-
 void wxFont::SetPointSize(int pointSize)
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->m_info.pointSize = pointSize;
 
@@ -424,7 +419,7 @@ void wxFont::SetPointSize(int pointSize)
 
 void wxFont::SetFamily(int family)
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->m_info.family = static_cast<wxFontFamily>(family);
 
@@ -433,7 +428,7 @@ void wxFont::SetFamily(int family)
 
 void wxFont::SetStyle(int style)
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->m_info.style = static_cast<wxFontStyle>(style);
 
@@ -442,7 +437,7 @@ void wxFont::SetStyle(int style)
 
 void wxFont::SetWeight(int weight)
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->m_info.weight = static_cast<wxFontWeight>(weight);
 
@@ -451,7 +446,7 @@ void wxFont::SetWeight(int weight)
 
 bool wxFont::SetFaceName(const wxString& faceName)
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->m_info.faceName = faceName;
 
@@ -462,7 +457,7 @@ bool wxFont::SetFaceName(const wxString& faceName)
 
 void wxFont::SetUnderlined(bool underlined)
 {
-    Unshare();
+    AllocExclusive();
 
     M_FONTDATA->m_info.underlined = underlined;
 
index 91b059ba596f601f1781b26d7924e6b9762b875e..cfc23d3cd7379737c3d647786d3f4b88f72d5e55 100644 (file)
@@ -32,6 +32,8 @@ public:
     wxIconRefData( const wxIconRefData& data );
     virtual ~wxIconRefData();
 
+    virtual bool IsOk() const { return m_ok; }
+
 protected:
     int                 m_width;
     int                 m_height;
@@ -98,6 +100,16 @@ wxIcon::~wxIcon()
 {
 }
 
+wxGDIRefData *wxIcon::CreateGDIRefData() const
+{
+    return new wxIconRefData;
+}
+
+wxGDIRefData *wxIcon::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxIconRefData(*wx_static_cast(const wxIconRefData *, data));
+}
+
 bool wxIcon::CreateFromXpm(const char **xpm)
 {
     wxBitmap bitmap(xpm);
@@ -126,11 +138,6 @@ void wxIcon::CopyFromBitmap(const wxBitmap& bitmap)
     M_ICONDATA->m_quality = 0;
 }
 
-bool wxIcon::IsOk() const
-{
-    return m_refData && M_ICONDATA->m_ok;
-}
-
 int wxIcon::GetWidth() const
 {
     if(!m_refData)
index b5e6e36065644ff2db5c46c1d90954d61211d0cf..5920dc035a78f0f5a0095bf999e9bb5e35689d3c 100644 (file)
@@ -266,12 +266,12 @@ wxPen::wxPen(const wxBitmap& stipple, int width)
     m_refData = new wxPenRefData(wxNullColour,width,wxSTIPPLE,stipple);
 }
 
-wxObjectRefData *wxPen::CreateRefData() const
+wxGDIRefData *wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxPenRefData(*(wxPenRefData *)data);
 }
index 8a9063f5b344ea3714fd4a1441adfb2d9a8609ba..5ac8cce15e6eb60094e002b139301d9b847b2525 100644 (file)
@@ -341,11 +341,6 @@ bool wxFontBase::operator==(const wxFont& font) const
            );
 }
 
-bool wxFontBase::operator!=(const wxFont& font) const
-{
-    return !(*this == font);
-}
-
 wxString wxFontBase::GetFamilyString() const
 {
     wxCHECK_MSG( Ok(), wxT("wxDEFAULT"), wxT("invalid font") );
index fb3f055d0e3e50908496f9ecedf89fa764ab37e6..fa208d6fa27fb519308ee1b3d9c61cd32aa06655 100644 (file)
@@ -34,7 +34,7 @@
 #endif
 
 
-IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject)
+IMPLEMENT_ABSTRACT_CLASS(wxGDIObject, wxObject)
 
 
 WXDLLIMPEXP_DATA_CORE(wxBrushList*) wxTheBrushList;
index 2d3074716b0c6923847004573ee1a7dcf8e493a7..11b113004febe500cf47d35057e2c92b4ba7522e 100644 (file)
@@ -51,6 +51,8 @@ class WXDLLEXPORT wxIconBundleRefData : public wxGDIRefData
 public:
     // default and copy ctors and assignment operators are ok
 
+    virtual bool IsOk() const { return !m_icons.empty(); }
+
 protected:
     wxIconArray m_icons;
 
@@ -84,12 +86,12 @@ wxIconBundle::wxIconBundle(const wxIcon& icon)
     AddIcon(icon);
 }
 
-wxObjectRefData *wxIconBundle::CreateRefData() const
+wxGDIRefData *wxIconBundle::CreateGDIRefData() const
 {
     return new wxIconBundleRefData;
 }
 
-wxObjectRefData *wxIconBundle::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxIconBundle::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxIconBundleRefData(*wx_static_cast(const wxIconBundleRefData *, data));
 }
@@ -99,11 +101,6 @@ void wxIconBundle::DeleteIcons()
     UnRef();
 }
 
-bool wxIconBundle::IsOk() const
-{
-    return M_ICONBUNDLEDATA && !M_ICONBUNDLEDATA->m_icons.IsEmpty();
-}
-
 void wxIconBundle::AddIcon(const wxString& file, long type)
 {
 #ifdef __WXMAC__
index 0c245df509ce2db061cff161e81292c0ab9f417f..26b3ada0987e59222e51de9ecbe99e67eff88b6c 100644 (file)
@@ -246,7 +246,7 @@ static DFBSurfacePixelFormat DepthToFormat(int depth)
 // wxBitmapRefData
 //-----------------------------------------------------------------------------
 
-class wxBitmapRefData: public wxObjectRefData
+class wxBitmapRefData: public wxGDIRefData
 {
 public:
     wxBitmapRefData()
@@ -275,6 +275,8 @@ public:
 #endif
     }
 
+    virtual bool IsOk() const { return m_surface; }
+
     wxIDirectFBSurfacePtr m_surface;
     wxMask               *m_mask;
 #if wxUSE_PALETTE
@@ -458,11 +460,6 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
     wxFAIL_MSG( "not implemented" );
 }
 
-bool wxBitmap::IsOk() const
-{
-    return (m_refData != NULL && M_BITMAP->m_surface);
-}
-
 int wxBitmap::GetHeight() const
 {
     wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") );
@@ -644,12 +641,12 @@ wxIDirectFBSurfacePtr wxBitmap::GetDirectFBSurface() const
     return M_BITMAP->m_surface;
 }
 
-wxObjectRefData *wxBitmap::CreateRefData() const
+wxGDIRefData *wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBitmapRefData(*(wxBitmapRefData *)data);
 }
index 93209e3362ec4f1a649bb335b00afc0025b26a48..6d310fc0bd2c24e7e553c3c67ec2f5ce05fb9bfc 100644 (file)
@@ -26,7 +26,7 @@
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class wxBrushRefData: public wxObjectRefData
+class wxBrushRefData : public wxGDIRefData
 {
 public:
     wxBrushRefData(const wxColour& clr = wxNullColour, int style = wxSOLID)
@@ -41,6 +41,8 @@ public:
         m_style = data.m_style;
     }
 
+    virtual bool IsOk() const { return m_colour.IsOk(); }
+
     void SetStyle(int style)
     {
         if ( style != wxSOLID && style != wxTRANSPARENT )
@@ -80,11 +82,6 @@ bool wxBrush::operator==(const wxBrush& brush) const
     return m_refData == brush.m_refData;
 }
 
-bool wxBrush::IsOk() const
-{
-    return ((m_refData) && M_BRUSHDATA->m_colour.Ok());
-}
-
 int wxBrush::GetStyle() const
 {
     if (m_refData == NULL)
@@ -136,12 +133,12 @@ void wxBrush::SetStipple(const wxBitmap& WXUNUSED(stipple))
     wxFAIL_MSG( wxT("brushes with stipple bitmaps not implemented") );
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(wxBrushRefData *)data);
 }
index c5465f52fceac5dcf6e7f07be06a6f309e851a8f..0751f9ae4e131c07e0f558685095e538c9f79a00 100644 (file)
 // wxCursorRefData
 //-----------------------------------------------------------------------------
 
-class wxCursorRefData: public wxObjectRefData
+class wxCursorRefData : public wxGDIRefData
 {
 public:
     wxCursorRefData(const wxBitmap& bmp = wxNullBitmap, int id = -1)
         : m_id(id), m_bitmap(bmp) {}
 
+    virtual bool IsOk() const { return m_bitmap.IsOk(); }
+
     int      m_id;
     wxBitmap m_bitmap;
 };
@@ -63,17 +65,12 @@ wxCursor::wxCursor(const wxString& cursor_file,
 #warning "FIXME"
 }
 
-bool wxCursor::IsOk() const
-{
-    return m_refData && M_CURSOR->m_bitmap.Ok();
-}
-
-wxObjectRefData *wxCursor::CreateRefData() const
+wxGDIRefData *wxCursor::CreateGDIRefData() const
 {
     return new wxCursorRefData;
 }
 
-wxObjectRefData *wxCursor::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxCursorRefData(*(wxCursorRefData *)data);
 }
index 4bf8087c5b58b5f5bc2f9de89d67ec11dda872d4..206c11b14d600f09f1b2edb14007f34fe62031d0 100644 (file)
@@ -60,12 +60,12 @@ bool wxFont::Create(int pointSize,
     return true;
 }
 
-wxObjectRefData *wxFont::CreateRefData() const
+wxGDIRefData *wxFont::CreateGDIRefData() const
 {
     return new wxFontRefData;
 }
 
-wxObjectRefData *wxFont::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxFontRefData(*(wxFontRefData *)data);
 }
index 799f99cf0ca99b0d82b5e83eed0411166c83e4b3..21d36f623ea4f78b155ea7e0cec135aed34a0de3 100644 (file)
@@ -26,7 +26,7 @@
 // wxPen
 //-----------------------------------------------------------------------------
 
-class wxPenRefData: public wxObjectRefData
+class wxPenRefData : public wxGDIRefData
 {
 public:
     wxPenRefData(const wxColour& clr = wxNullColour, int style = wxSOLID)
@@ -38,6 +38,8 @@ public:
     wxPenRefData(const wxPenRefData& data)
         : m_style(data.m_style), m_colour(data.m_colour) {}
 
+    virtual bool IsOk() const { return m_colour.IsOk(); }
+
     void SetStyle(int style)
     {
         if ( style != wxSOLID && style != wxTRANSPARENT )
@@ -189,17 +191,12 @@ wxBitmap *wxPen::GetStipple() const
     return NULL;
 }
 
-bool wxPen::IsOk() const
-{
-    return ((m_refData) && M_PENDATA->m_colour.Ok());
-}
-
-wxObjectRefData *wxPen::CreateRefData() const
+wxGDIRefData *wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxPenRefData(*(wxPenRefData *)data);
 }
index f4bc68dcf98081a8c7358a58f0b8884bc1fcfbc4..f49cf3c88bde02fa86b538e29758371514854bcd 100644 (file)
@@ -45,12 +45,12 @@ public:
 // wxRegion
 //-----------------------------------------------------------------------------
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
index ac8cd8a83bf522d9b2f473c5b9ac44cb4d1cf214..760e6039f586b5114f5403a5f61ee44491e90662 100644 (file)
@@ -28,12 +28,12 @@ struct wxPaletteEntry
     unsigned char red, green, blue;
 };
 
-class wxPaletteRefData: public wxObjectRefData
+class wxPaletteRefData : public wxGDIRefData
 {
-  public:
-
-    wxPaletteRefData(void);
-    virtual ~wxPaletteRefData(void);
+public:
+    wxPaletteRefData();
+    wxPaletteRefData(const wxPaletteRefData& palette);
+    virtual ~wxPaletteRefData();
 
     int m_count;
     wxPaletteEntry *m_entries;
@@ -45,6 +45,14 @@ wxPaletteRefData::wxPaletteRefData()
     m_entries = NULL;
 }
 
+wxPaletteRefData::wxPaletteRefData(const wxPaletteRefData& palette)
+{
+    m_count = palette.m_count;
+    m_entries = new wxPaletteEntry[m_count];
+    for ( int i = 0; i < m_count; i++ )
+        m_entries[i] = palette.m_entries[i];
+}
+
 wxPaletteRefData::~wxPaletteRefData()
 {
     delete[] m_entries;
@@ -70,11 +78,6 @@ wxPalette::~wxPalette()
 {
 }
 
-bool wxPalette::IsOk() const
-{
-    return (m_refData != NULL);
-}
-
 int wxPalette::GetColoursCount() const
 {
     if (m_refData)
@@ -142,4 +145,14 @@ bool wxPalette::GetRGB(int pixel,
     return true;
 }
 
+wxGDIRefData *wxPalette::CreateGDIRefData() const
+{
+    return new wxPaletteRefData;
+}
+
+wxGDIRefData *wxPalette::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxPaletteRefData(*wx_static_cast(const wxPaletteRefData *, data));
+}
+
 #endif // wxUSE_PALETTE
index 845df56ce07041a924712cbe9f8a97a8a38fba28..9511c83df2fb8c8dca41a8c52895676503dbc76e 100644 (file)
@@ -176,12 +176,12 @@ protected:
 // wxRegionRefData
 // ========================================================================
 
-class wxRegionRefData : public wxObjectRefData,
+class wxRegionRefData : public wxGDIRefData,
                         public REGION
 {
 public:
     wxRegionRefData()
-        : wxObjectRefData(),
+        : wxGDIRefData(),
           REGION()
     {
         size = 1;
@@ -194,7 +194,7 @@ public:
     }
 
     wxRegionRefData(const wxPoint& topLeft, const wxPoint& bottomRight)
-        : wxObjectRefData(),
+        : wxGDIRefData(),
           REGION()
     {
         rects = (BOX*)malloc(sizeof(BOX));
@@ -208,7 +208,7 @@ public:
     }
 
     wxRegionRefData(const wxRect& rect)
-        : wxObjectRefData(),
+        : wxGDIRefData(),
           REGION(rect)
     {
         rects = (BOX*)malloc(sizeof(BOX));
@@ -216,7 +216,7 @@ public:
     }
 
     wxRegionRefData(const wxRegionRefData& refData)
-        : wxObjectRefData(),
+        : wxGDIRefData(),
           REGION()
     {
         size = refData.size;
@@ -276,12 +276,12 @@ void wxRegionGeneric::Clear()
     UnRef();
 }
 
-wxObjectRefData *wxRegionGeneric::CreateRefData() const
+wxGDIRefData *wxRegionGeneric::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegionGeneric::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegionGeneric::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
index 663c9ec721a9bc1f6304409c6ca1db8e4f693f61..91aa96accfebdb7dab45dbea12ffd7d4ceca71b2 100644 (file)
@@ -181,12 +181,14 @@ GdkBitmap *wxMask::GetBitmap() const
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-class wxBitmapRefData: public wxObjectRefData
+class wxBitmapRefData: public wxGDIRefData
 {
 public:
     wxBitmapRefData();
     virtual ~wxBitmapRefData();
 
+    virtual bool IsOk() const { return m_pixmap || m_pixbuf; }
+
     GdkPixmap      *m_pixmap;
     GdkPixbuf      *m_pixbuf;
     wxMask         *m_mask;
@@ -597,15 +599,6 @@ wxImage wxBitmap::ConvertToImage() const
 
 #endif // wxUSE_IMAGE
 
-bool wxBitmap::IsOk() const
-{
-    return (m_refData != NULL) &&
-           (
-              M_BMPDATA->m_pixbuf ||
-              M_BMPDATA->m_pixmap
-           );
-}
-
 int wxBitmap::GetHeight() const
 {
     wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") );
@@ -930,12 +923,12 @@ bool wxBitmap::HasAlpha() const
         gdk_pixbuf_get_has_alpha(M_BMPDATA->m_pixbuf);
 }
 
-wxObjectRefData* wxBitmap::CreateRefData() const
+wxGDIRefData* wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData* wxBitmap::CloneRefData(const wxObjectRefData* data) const
+wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const
 {
     const wxBitmapRefData* oldRef = wx_static_cast(const wxBitmapRefData*, data);
     wxBitmapRefData* newRef = new wxBitmapRefData;
index 4c54c10897509213764cbf43167b00c63eb20ff8..0106125d9a4da55272915133473a7045f9c97089 100644 (file)
@@ -21,7 +21,7 @@
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class wxBrushRefData: public wxObjectRefData
+class wxBrushRefData: public wxGDIRefData
 {
 public:
     wxBrushRefData()
@@ -30,7 +30,7 @@ public:
     }
 
     wxBrushRefData( const wxBrushRefData& data )
-        : wxObjectRefData()
+        : wxGDIRefData()
     {
         m_style = data.m_style;
         m_stipple = data.m_stipple;
@@ -80,17 +80,17 @@ wxBrush::~wxBrush()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(wxBrushRefData *)data);
 }
 
-bool wxBrush::operator == ( const wxBrush& brush ) const
+bool wxBrush::operator==(const wxBrush& brush) const
 {
     if (m_refData == brush.m_refData) return true;
 
index b08a6b4ab4cb87be92c34394f78ab010868dcfbf..b2bb1b993a194809351ea0b9e40ccd354981252f 100644 (file)
@@ -20,7 +20,7 @@
 // wxColour
 //-----------------------------------------------------------------------------
 
-class wxColourRefData: public wxObjectRefData
+class wxColourRefData : public wxGDIRefData
 {
 public:
     wxColourRefData(guint16 red, guint16 green, guint16 blue, guint16 alpha)
index 265b98cd3b6f8266afc66e914a18d6c7ab71eaf0..0e778d1f8cafa26321de49733f62583014e0013b 100644 (file)
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class wxCursorRefData: public wxObjectRefData
+class wxCursorRefData: public wxGDIRefData
 {
-  public:
-
+public:
     wxCursorRefData();
     virtual ~wxCursorRefData();
 
+    virtual bool IsOk() const { return m_cursor != NULL; }
+
     GdkCursor *m_cursor;
 };
 
@@ -360,14 +361,19 @@ wxCursor::~wxCursor()
 {
 }
 
-bool wxCursor::IsOk() const
+GdkCursor *wxCursor::GetCursor() const
 {
-    return (m_refData != NULL);
+    return M_CURSORDATA->m_cursor;
 }
 
-GdkCursor *wxCursor::GetCursor() const
+wxGDIRefData *wxCursor::CreateGDIRefData() const
 {
-    return M_CURSORDATA->m_cursor;
+    return new wxCursorRefData;
+}
+
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxCursorRefData(*wx_static_cast(const wxCursorRefData *, data));
 }
 
 //-----------------------------------------------------------------------------
index 94cc8e66d5f6e10f0bd29d7444f2d11ae0429448..77e2511b41dced20878487d1ce872f467f089154 100644 (file)
@@ -51,7 +51,7 @@ WX_DECLARE_HASH_MAP(int, GdkFont *, wxIntegerHash, wxIntegerEqual,
 // wxFontRefData
 // ----------------------------------------------------------------------------
 
-class wxFontRefData : public wxObjectRefData
+class wxFontRefData : public wxGDIRefData
 {
 public:
     // from broken down font parameters, also default ctor
@@ -239,7 +239,7 @@ void wxFontRefData::InitFromNative()
 }
 
 wxFontRefData::wxFontRefData( const wxFontRefData& data )
-             : wxObjectRefData()
+             : wxGDIRefData()
 {
     m_pointSize = data.m_pointSize;
     m_family = data.m_family;
@@ -551,12 +551,12 @@ void wxFont::SetNoAntiAliasing( bool no )
     M_FONTDATA->SetNoAntiAliasing( no );
 }
 
-wxObjectRefData* wxFont::CreateRefData() const
+wxGDIRefData* wxFont::CreateGDIRefData() const
 {
     return new wxFontRefData;
 }
 
-wxObjectRefData* wxFont::CloneRefData(const wxObjectRefData* data) const
+wxGDIRefData* wxFont::CloneGDIRefData(const wxGDIRefData* data) const
 {
     return new wxFontRefData(*wx_static_cast(const wxFontRefData*, data));
 }
index 498f38025d824acafccfcd34be884bb0dc8f3a7e..917abb974c42ce46e5f2c6338408457e1ae1960a 100644 (file)
@@ -22,7 +22,7 @@
 // wxPen
 //-----------------------------------------------------------------------------
 
-class wxPenRefData: public wxObjectRefData
+class wxPenRefData: public wxGDIRefData
 {
 public:
     wxPenRefData()
@@ -36,7 +36,7 @@ public:
     }
 
     wxPenRefData( const wxPenRefData& data )
-        : wxObjectRefData()
+        : wxGDIRefData()
     {
         m_style = data.m_style;
         m_width = data.m_width;
@@ -101,12 +101,12 @@ wxPen::~wxPen()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxPen::CreateRefData() const
+wxGDIRefData *wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxPenRefData(*(wxPenRefData *)data);
 }
index 964ae16316061c75ddcd15dfedc6c28218a8f810..a18c324df82bc376540be61d8253f716e5ace9f7 100644 (file)
@@ -32,7 +32,7 @@
 // wxRegionRefData: private class containing the information about the region
 // ----------------------------------------------------------------------------
 
-class wxRegionRefData : public wxObjectRefData
+class wxRegionRefData : public wxGDIRefData
 {
 public:
     wxRegionRefData()
@@ -41,7 +41,7 @@ public:
     }
 
     wxRegionRefData(const wxRegionRefData& refData)
-        : wxObjectRefData()
+        : wxGDIRefData()
     {
         m_region = gdk_region_copy(refData.m_region);
     }
@@ -119,12 +119,12 @@ wxRegion::~wxRegion()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
index e0ceb53c45674675964c76df4cc7152c5124d789..daa51e4dc566f88f42f43a6d8d4b8273cc2f1879 100644 (file)
@@ -224,7 +224,7 @@ GdkBitmap *wxMask::GetBitmap() const
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-class wxBitmapRefData: public wxObjectRefData
+class wxBitmapRefData : public wxGDIRefData
 {
 public:
     wxBitmapRefData();
@@ -232,6 +232,8 @@ public:
     bool Create(int width, int height, int bpp);
     virtual ~wxBitmapRefData();
 
+    virtual bool IsOk() const { return m_pixmap || m_bitmap; }
+
     GdkPixmap      *m_pixmap;
     GdkBitmap      *m_bitmap;
     wxMask         *m_mask;
@@ -360,12 +362,12 @@ wxBitmap::wxBitmap( int width, int height, int depth )
     Create( width, height, depth );
 }
 
-wxObjectRefData *wxBitmap::CreateRefData() const
+wxGDIRefData *wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data));
 }
@@ -1137,12 +1139,6 @@ wxBitmap::~wxBitmap()
 {
 }
 
-bool wxBitmap::IsOk() const
-{
-    return (m_refData != NULL) &&
-           (M_BMPDATA->m_bitmap || M_BMPDATA->m_pixmap);
-}
-
 int wxBitmap::GetHeight() const
 {
     wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") );
index 3b9330bb1a42ded7ae74d126376f56db9b75a064..b07c208e2fd1a62083e84268c1e4b2c1f8143ba1 100644 (file)
@@ -22,7 +22,7 @@
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class wxBrushRefData: public wxObjectRefData
+class wxBrushRefData: public wxGDIRefData
 {
 public:
     wxBrushRefData()
@@ -31,7 +31,7 @@ public:
     }
 
     wxBrushRefData( const wxBrushRefData& data )
-        : wxObjectRefData()
+        : wxGDIRefData()
     {
         m_style = data.m_style;
         m_stipple = data.m_stipple;
@@ -81,12 +81,12 @@ wxBrush::~wxBrush()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(wxBrushRefData *)data);
 }
index e5234be3d45a63a4e2423b6e4e476c2f3a9e3e20..60d6b17e668f5c2082a347a9c2110dc55597853a 100644 (file)
@@ -26,7 +26,7 @@
 // wxColour
 //-----------------------------------------------------------------------------
 
-class wxColourRefData: public wxObjectRefData
+class wxColourRefData : public wxGDIRefData
 {
 public:
     wxColourRefData()
@@ -40,7 +40,6 @@ public:
     }
 
     wxColourRefData(const wxColourRefData& data)
-        : wxObjectRefData()
     {
         m_color = data.m_color;
         m_colormap = data.m_colormap;
@@ -159,12 +158,12 @@ bool wxColour::operator == ( const wxColour& col ) const
                      own->green == other->green;
 }
 
-wxObjectRefData *wxColour::CreateRefData() const
+wxGDIRefData *wxColour::CreateGDIRefData() const
 {
     return new wxColourRefData;
 }
 
-wxObjectRefData *wxColour::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxColour::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxColourRefData(*(wxColourRefData *)data);
 }
index bd1e6ca2bd6535d3f8820d88c665900fc46870e7..3b14510edbbe134402f11879372c9c67a798e749 100644 (file)
@@ -31,10 +31,9 @@ extern bool g_isIdle;
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class wxCursorRefData: public wxObjectRefData
+class wxCursorRefData : public wxGDIRefData
 {
-  public:
-
+public:
     wxCursorRefData();
     virtual ~wxCursorRefData();
 
@@ -316,14 +315,19 @@ wxCursor::~wxCursor()
 {
 }
 
-bool wxCursor::IsOk() const
+GdkCursor *wxCursor::GetCursor() const
 {
-    return (m_refData != NULL);
+    return M_CURSORDATA->m_cursor;
 }
 
-GdkCursor *wxCursor::GetCursor() const
+wxGDIRefData *wxCursor::CreateGDIRefData() const
 {
-    return M_CURSORDATA->m_cursor;
+    return new wxCursorRefData;
+}
+
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxCursorRefData(*wx_static_cast(const wxCursorRefData *, data));
 }
 
 //-----------------------------------------------------------------------------
index a8524ccd8b7322a03fc29b7f92f314cb614c4def..097519952e5b0b6d2acfcc2db1f18751dc669261 100644 (file)
@@ -54,7 +54,7 @@ WX_DECLARE_HASH_MAP(int, GdkFont *, wxIntegerHash, wxIntegerEqual,
 // wxFontRefData
 // ----------------------------------------------------------------------------
 
-class wxFontRefData : public wxObjectRefData
+class wxFontRefData : public wxGDIRefData
 {
 public:
     // from broken down font parameters, also default ctor
@@ -291,7 +291,7 @@ void wxFontRefData::InitFromNative()
 }
 
 wxFontRefData::wxFontRefData( const wxFontRefData& data )
-             : wxObjectRefData()
+             : wxGDIRefData()
 {
     m_pointSize = data.m_pointSize;
     m_family = data.m_family;
@@ -536,6 +536,16 @@ wxFont::~wxFont()
 {
 }
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData;
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 // ----------------------------------------------------------------------------
 // accessors
 // ----------------------------------------------------------------------------
index 53464758d119455e813ac6bb52824eefebeb1f56..0b93bea8c196338d06ca6919475639480c6ab6a9 100644 (file)
@@ -101,12 +101,12 @@ wxPen::~wxPen()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxPen::CreateRefData() const
+wxGDIRefData *wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxPenRefData(*(wxPenRefData *)data);
 }
index acad6e5f64bc112960366c008621daf6f6939959..b8f140cb72ffd8c9db625032d01dc28e61dea6ff 100644 (file)
@@ -49,7 +49,7 @@ private:
 // wxRegionRefData: private class containing the information about the region
 // ----------------------------------------------------------------------------
 
-class wxRegionRefData : public wxObjectRefData
+class wxRegionRefData : public wxGDIRefData
 {
 public:
     wxRegionRefData()
@@ -58,7 +58,7 @@ public:
     }
 
     wxRegionRefData(const wxRegionRefData& refData)
-        : wxObjectRefData()
+        : wxGDIRefData()
     {
         m_region = gdk_regions_union(wxGdkRegion(), refData.m_region);
     }
@@ -136,12 +136,12 @@ wxRegion::~wxRegion()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
@@ -380,7 +380,7 @@ struct _XRegion {
 };
 
 
-class wxRIRefData: public wxObjectRefData
+class wxRIRefData : public wxGDIRefData
 {
 public:
     wxRIRefData() { Init(); }
index 3304fdacec1bf4dd1119891e506574a5fbd3c5c5..22ed227e5e082afb5c4e1826bc8b1820b81b228f 100644 (file)
@@ -51,58 +51,58 @@ public:
     wxBitmapRefData(int width , int height , int depth);
     wxBitmapRefData();
     wxBitmapRefData(const wxBitmapRefData &tocopy);
-    
+
     virtual ~wxBitmapRefData();
-    
+
+    virtual bool IsOk() const { return m_ok; }
+
     void Free();
-    bool Ok() const { return IsOk(); }
-    bool IsOk() const { return m_ok; }
     void SetOk( bool isOk) { m_ok = isOk; }
-    
+
     void SetWidth( int width ) { m_width = width; }
     void SetHeight( int height ) { m_height = height; }
     void SetDepth( int depth ) { m_depth = depth; }
-    
+
     int GetWidth() const { return m_width; }
     int GetHeight() const { return m_height; }
     int GetDepth() const { return m_depth; }
-    
+
     void *GetRawAccess() const;
     void *BeginRawAccess();
     void EndRawAccess();
-    
+
     bool HasAlpha() const { return m_hasAlpha; }
     void UseAlpha( bool useAlpha );
-    
+
 public:
 #if wxUSE_PALETTE
     wxPalette     m_bitmapPalette;
 #endif // wxUSE_PALETTE
-    
+
     wxMask *      m_bitmapMask; // Optional mask
     CGImageRef    CreateCGImage() const;
-    
+
     // returns true if the bitmap has a size that
     // can be natively transferred into a true icon
     // if no is returned GetIconRef will still produce
     // an icon but it will be generated via a PICT and
     // rescaled to 16 x 16
     bool          HasNativeSize();
-    
+
     // caller should increase ref count if needed longer
     // than the bitmap exists
     IconRef       GetIconRef();
-    
+
     // returns a Pict from the bitmap content
     PicHandle     GetPictHandle();
-    
+
     CGContextRef  GetBitmapContext() const;
-    
+
     int           GetBytesPerRow() const { return m_bytesPerRow; }
     private :
     bool Create(int width , int height , int depth);
     void Init();
-    
+
     int           m_width;
     int           m_height;
     int           m_bytesPerRow;
@@ -112,10 +112,10 @@ public:
     int           m_rawAccessCount;
     bool          m_ok;
     mutable CGImageRef    m_cgImageRef;
-    
+
     IconRef       m_iconRef;
     PicHandle     m_pictHandle;
-    
+
     CGContextRef  m_hBitmap;
 };
 
@@ -243,8 +243,8 @@ void wxBitmapRefData::Init()
 wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData &tocopy)
 {
     Init();
-    Create(tocopy.m_width, tocopy.m_height, tocopy.m_depth); 
-    
+    Create(tocopy.m_width, tocopy.m_height, tocopy.m_depth);
+
     if (tocopy.m_bitmapMask)
         m_bitmapMask = new wxMask(*tocopy.m_bitmapMask);
     else if (tocopy.m_hasAlpha)
@@ -306,13 +306,13 @@ void wxBitmapRefData::UseAlpha( bool use )
 
 void *wxBitmapRefData::GetRawAccess() const
 {
-    wxCHECK_MSG( Ok(), NULL , wxT("invalid bitmap") ) ;
+    wxCHECK_MSG( IsOk(), NULL , wxT("invalid bitmap") ) ;
     return m_memBuf.GetData() ;
 }
 
 void *wxBitmapRefData::BeginRawAccess()
 {
-    wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ) ;
+    wxCHECK_MSG( IsOk(), NULL, wxT("invalid bitmap") ) ;
     wxASSERT( m_rawAccessCount == 0 ) ;
     wxASSERT_MSG( m_pictHandle == NULL && m_iconRef == NULL ,
         wxT("Currently, modifing bitmaps that are used in controls already is not supported") ) ;
@@ -332,7 +332,7 @@ void *wxBitmapRefData::BeginRawAccess()
 
 void wxBitmapRefData::EndRawAccess()
 {
-    wxCHECK_RET( Ok() , wxT("invalid bitmap") ) ;
+    wxCHECK_RET( IsOk() , wxT("invalid bitmap") ) ;
     wxASSERT( m_rawAccessCount == 1 ) ;
 
     --m_rawAccessCount ;
@@ -487,30 +487,30 @@ IconRef wxBitmapRefData::GetIconRef()
 #endif
             {
                 // setup the header properly
-                
+
                 Handle data = NULL ;
                 Handle maskdata = NULL ;
                 unsigned char * maskptr = NULL ;
                 unsigned char * ptr = NULL ;
                 size_t datasize, masksize ;
-                
+
                 datasize = sz * sz * 4 ;
                 data = NewHandle( datasize ) ;
                 HLock( data ) ;
                 ptr = (unsigned char*) *data ;
                 memset( ptr , 0, datasize ) ;
-                
+
                 masksize = sz * sz ;
                 maskdata = NewHandle( masksize ) ;
                 HLock( maskdata ) ;
                 maskptr = (unsigned char*) *maskdata ;
                 memset( maskptr , 0 , masksize ) ;
-                
+
                 bool hasAlpha = HasAlpha() ;
                 wxMask *mask = m_bitmapMask ;
                 unsigned char * sourcePtr = (unsigned char*) GetRawAccess() ;
                 unsigned char * masksourcePtr = mask ? (unsigned char*) mask->GetRawAccess() : NULL ;
-                
+
                 for ( int y = 0 ; y < h ; ++y, sourcePtr += m_bytesPerRow , masksourcePtr += mask ? mask->GetBytesPerRow() : 0 )
                 {
                     unsigned char * source = sourcePtr;
@@ -518,19 +518,19 @@ IconRef wxBitmapRefData::GetIconRef()
                     unsigned char * dest = ptr + y * sz * 4 ;
                     unsigned char * maskdest = maskptr + y * sz ;
                     unsigned char a, r, g, b;
-                    
+
                     for ( int x = 0 ; x < w ; ++x )
                     {
                         a = *source ++ ;
                         r = *source ++ ;
                         g = *source ++ ;
                         b = *source ++ ;
-                        
+
                         *dest++ = 0 ;
                         *dest++ = r ;
                         *dest++ = g ;
                         *dest++ = b ;
-                        
+
                         if ( mask )
                             *maskdest++ = 0xFF - *masksource++ ;
                         else if ( hasAlpha )
@@ -539,13 +539,13 @@ IconRef wxBitmapRefData::GetIconRef()
                             *maskdest++ = 0xFF ;
                     }
                 }
-                
+
                 OSStatus err = SetIconFamilyData( iconFamily, dataType , data ) ;
                 wxASSERT_MSG( err == noErr , wxT("Error when adding bitmap") ) ;
-                
+
                 err = SetIconFamilyData( iconFamily, maskType , maskdata ) ;
                 wxASSERT_MSG( err == noErr , wxT("Error when adding mask") ) ;
-                
+
                 HUnlock( data ) ;
                 HUnlock( maskdata ) ;
                 DisposeHandle( data ) ;
@@ -634,7 +634,7 @@ CGImageRef wxBitmapRefData::CreateCGImage() const
             int h = m_height ;
             CGImageAlphaInfo alphaInfo = kCGImageAlphaNoneSkipFirst ;
             wxMemoryBuffer membuf;
-            
+
             if ( m_bitmapMask )
             {
                 alphaInfo = kCGImageAlphaFirst ;
@@ -663,10 +663,10 @@ CGImageRef wxBitmapRefData::CreateCGImage() const
                     alphaInfo = kCGImageAlphaFirst ;
 #endif
                 }
-                
+
                 membuf = m_memBuf;
             }
-            
+
             CGDataProviderRef dataProvider = NULL ;
             if ( m_depth == 1 )
             {
@@ -685,10 +685,10 @@ CGImageRef wxBitmapRefData::CreateCGImage() const
                     }
                 }
                 maskBuf.UngetWriteBuf( m_width * m_height );
-                
+
                 dataProvider =
                     wxMacCGDataProviderCreateWithMemoryBuffer( maskBuf );
-                
+
                 image = ::CGImageMaskCreate( w, h, 8, 8, m_width , dataProvider, NULL, false );
             }
             else
@@ -843,7 +843,7 @@ bool wxBitmap::CopyFromIcon(const wxIcon& icon)
                     *destination++ = ( (*source++) * a + 127 ) / 255;
                     *destination++ = ( (*source++) * a + 127 ) / 255;
                     *destination++ = ( (*source++) * a + 127 ) / 255;
-#else                    
+#else
                     *destination++ = *source++ ;
                     *destination++ = *source++ ;
                     *destination++ = *source++ ;
@@ -943,12 +943,12 @@ wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type)
     LoadFile(filename, type);
 }
 
-wxObjectRefData* wxBitmap::CreateRefData() const
+wxGDIRefData* wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData* wxBitmap::CloneRefData(const wxObjectRefData* data) const
+wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const
 {
     return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data));
 }
@@ -984,7 +984,7 @@ CGImageRef wxBitmap::CreateCGImage() const
 IconRef wxBitmap::GetIconRef() const
 {
     wxCHECK_MSG( Ok(), NULL , wxT("invalid bitmap") ) ;
-    
+
     return M_BITMAPDATA->GetIconRef() ;
 }
 
@@ -1066,7 +1066,7 @@ bool wxBitmap::Create(int w, int h, int d)
 
     m_refData = new wxBitmapRefData( w , h , d );
 
-    return M_BITMAPDATA->Ok() ;
+    return M_BITMAPDATA->IsOk() ;
 }
 
 bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
@@ -1122,17 +1122,17 @@ bool wxBitmap::Create(const void* data, wxBitmapType type, int width, int height
 wxBitmap::wxBitmap(const wxImage& image, int depth)
 {
     wxCHECK_RET( image.Ok(), wxT("invalid image") );
-    
+
     // width and height of the device-dependent bitmap
     int width = image.GetWidth();
     int height = image.GetHeight();
-    
+
     m_refData = new wxBitmapRefData( width , height , depth ) ;
-    
+
     // Create picture
-    
+
     bool hasAlpha = false ;
-    
+
     if ( image.HasMask() )
     {
         // takes precedence, don't mix with alpha info
@@ -1141,10 +1141,10 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
     {
         hasAlpha = image.HasAlpha() ;
     }
-    
+
     if ( hasAlpha )
         UseAlpha() ;
-    
+
     unsigned char* destinationstart = (unsigned char*) BeginRawAccess() ;
     register unsigned char* data = image.GetData();
     if ( destinationstart != NULL && data != NULL )
@@ -1159,7 +1159,7 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
                 {
                     const unsigned char a = *alpha++;
                     *destination++ = a ;
-                    
+
 #if wxMAC_USE_PREMULTIPLIED_ALPHA
                     *destination++ = ((*data++) * a + 127) / 255 ;
                     *destination++ = ((*data++) * a + 127) / 255 ;
@@ -1179,7 +1179,7 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
                 }
             }
         }
-        
+
         EndRawAccess() ;
     }
     if ( image.HasMask() )
@@ -1320,11 +1320,6 @@ bool wxBitmap::SaveFile( const wxString& filename,
     return success;
 }
 
-bool wxBitmap::IsOk() const
-{
-   return (M_BITMAPDATA && M_BITMAPDATA->Ok());
-}
-
 int wxBitmap::GetHeight() const
 {
    wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") );
@@ -1496,10 +1491,10 @@ void wxMask::RealizeNative()
 
     CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
     // from MouseTracking sample :
-    // Ironically, due to a bug in CGImageCreateWithMask, you cannot use 
+    // Ironically, due to a bug in CGImageCreateWithMask, you cannot use
     // CGColorSpaceCreateWithName(kCGColorSpaceGenericGray) at this point!
-    
-    m_maskBitmap = CGBitmapContextCreate((char*) m_memBuf.GetData(), m_width, m_height, 8, m_bytesPerRow, colorspace, 
+
+    m_maskBitmap = CGBitmapContextCreate((char*) m_memBuf.GetData(), m_width, m_height, 8, m_bytesPerRow, colorspace,
         kCGImageAlphaNone );
     CGColorSpaceRelease( colorspace );
     wxASSERT_MSG( m_maskBitmap , wxT("Unable to create CGBitmapContext context") ) ;
index 876415261fd619c204aef2ed365b78d8223638fd..f571682680f0a3457e381efa9bcd321e2236d4d9 100644 (file)
@@ -117,12 +117,12 @@ bool wxBrush::operator==(const wxBrush& brush) const
     return m_refData ? (brushData && *M_BRUSHDATA == *brushData) : !brushData;
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(const wxBrushRefData *)data);
 }
index 225e31e1793ab13e0d995de8c897f0bff425c6d6..137ff6c36dcfda91e23ace9b71c1ded2c3f53e6a 100644 (file)
@@ -54,11 +54,6 @@ wxColour& wxColour::operator=(CGColorRef col)
     return *this;
 }
 
-bool wxColour::IsOk() const 
-{
-    return m_cgColour; 
-}
-
 void wxColour::InitRGBA (ChannelType r, ChannelType g, ChannelType b, ChannelType a)
 {
     m_red = r;
index e8f64259474e6b51c9d6be7c30cd9f6b1bd6c799..7326c9ca8a07fc41cd990337f366ff323df0a674 100644 (file)
@@ -29,14 +29,23 @@ IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxGDIObject)
 
 class WXDLLEXPORT wxCursorRefData: public wxGDIRefData
 {
-    friend class wxCursor;
-
-    DECLARE_NO_COPY_CLASS(wxCursorRefData)
-
 public:
     wxCursorRefData();
+    wxCursorRefData(const wxCursorRefData& cursor);
     virtual ~wxCursorRefData();
 
+    virtual bool IsOk() const
+    {
+        if ( m_hCursor != NULL )
+            return true;
+#if !wxMAC_USE_COCOA
+        if ( m_themeCursor != -1 )
+            return true;
+#endif
+
+        return false;
+    }
+
 protected:
 #if wxMAC_USE_COCOA
     WX_NSCursor m_hCursor;
@@ -47,6 +56,10 @@ protected:
     bool        m_isColorCursor;
     long        m_themeCursor;
 #endif
+
+    friend class wxCursor;
+
+    DECLARE_NO_ASSIGN_CLASS(wxCursorRefData)
 };
 
 #define M_CURSORDATA wx_static_cast(wxCursorRefData*, m_refData)
@@ -208,6 +221,21 @@ wxCursorRefData::wxCursorRefData()
 #endif
 }
 
+wxCursorRefData::wxCursorRefData(const wxCursorRefData& cursor)
+{
+    // FIXME: need to copy the cursor
+    m_hCursor = NULL;
+
+#if wxMAC_USE_COCOA
+    wxUnusedVar(cursor);
+#else
+    m_disposeHandle = false;
+    m_releaseHandle = false;
+    m_isColorCursor = cursor.m_isColorCursor;
+    m_themeCursor = cursor.m_themeCursor;
+#endif
+}
+
 wxCursorRefData::~wxCursorRefData()
 {
 #if wxMAC_USE_COCOA
@@ -258,6 +286,16 @@ wxCursor::wxCursor(char **bits)
     (void) CreateFromXpm((const char **)bits);
 }
 
+wxGDIRefData *wxCursor::CreateGDIRefData() const
+{
+    return new wxCursorRefData;
+}
+
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxCursorRefData(*wx_static_cast(const wxCursorRefData *, data));
+}
+
 bool wxCursor::CreateFromXpm(const char **bits)
 {
 #if wxUSE_IMAGE
@@ -277,15 +315,6 @@ WXHCURSOR wxCursor::GetHCURSOR() const
     return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0);
 }
 
-bool wxCursor::IsOk() const
-{
-#if wxMAC_USE_COCOA
-    return GetHCURSOR() != NULL;
-#else
-    return (m_refData != NULL && ( M_CURSORDATA->m_hCursor != NULL || M_CURSORDATA->m_themeCursor != -1 ) ) ;
-#endif
-}
-
 #if !wxMAC_USE_COCOA
 short GetCTabIndex( CTabHandle colors , RGBColor *col )
 {
index 4df05442ea462b44322213d7b742081081c894de..0f06f3d96d657c8bdfe89fa3aaef9bf7b51f0fce 100644 (file)
@@ -59,7 +59,7 @@ public:
     {
         Init(size, family, style, weight, underlined, faceName, encoding);
     }
-    
+
 #if wxMAC_USE_CORE_TEXT
     wxFontRefData( wxUint32 coreTextFontType );
     wxFontRefData( CTFontRef font );
@@ -72,69 +72,69 @@ public:
 
     bool GetNoAntiAliasing() const { return m_noAA; }
 
-    void SetPointSize( int size ) 
+    void SetPointSize( int size )
     {
         m_pointSize = size;
         MacInvalidateNativeFont();
     }
-    
+
     int GetPointSize() const { return m_pointSize; }
-    
-    void SetFamily( int family ) 
+
+    void SetFamily( int family )
     {
         m_family = family;
         MacInvalidateNativeFont();
     }
-    
-    
+
+
     int GetFamily() const { return m_family; }
-    
-    void SetStyle( int style ) 
+
+    void SetStyle( int style )
     {
         m_style = style;
         MacInvalidateNativeFont();
     }
-    
-    
+
+
     int GetStyle() const { return m_style; }
-    
-    void SetWeight( int weight ) 
+
+    void SetWeight( int weight )
     {
         m_weight = weight;
         MacInvalidateNativeFont();
     }
-    
-    
+
+
     int GetWeight() const { return m_weight; }
-    
-    void SetUnderlined( bool u ) 
+
+    void SetUnderlined( bool u )
     {
         m_underlined = u;
         MacInvalidateNativeFont();
     }
-    
+
     bool GetUnderlined() const { return m_underlined; }
-    
-    void SetFaceName( const wxString& facename ) 
+
+    void SetFaceName( const wxString& facename )
     {
         m_faceName = facename;
         MacInvalidateNativeFont();
     }
-    
+
     const wxString& GetFaceName() const { return m_faceName; }
-    
-    void SetEncoding( wxFontEncoding encoding )  
+
+    void SetEncoding( wxFontEncoding encoding )
     {
         m_encoding = encoding;
         MacInvalidateNativeFont();
-    }    
-    
-    wxFontEncoding GetEncoding() const { return m_encoding; }    
-    
+    }
+
+    wxFontEncoding GetEncoding() const { return m_encoding; }
+
     void MacInvalidateNativeFont();
-    
+
     void MacFindFont();
-    
+
 protected:
     // common part of all ctors
     void Init(int size,
@@ -147,7 +147,7 @@ protected:
 
 #if wxMAC_USE_CORE_TEXT
     void Init( CTFontRef font );
-#endif    
+#endif
     // font characterstics
     int             m_pointSize;
     int             m_family;
@@ -256,24 +256,24 @@ void wxFontRefData::MacInvalidateNativeFont()
 
 #if wxMAC_USE_CORE_TEXT
 
-/* from Core Text Manual Common Operations */ 
+/* from Core Text Manual Common Operations */
 
 static CTFontDescriptorRef wxMacCreateCTFontDescriptor(CFStringRef iFamilyName, CTFontSymbolicTraits iTraits )
 {
     CTFontDescriptorRef descriptor = NULL;
     CFMutableDictionaryRef attributes;
-    
+
     assert(iFamilyName != NULL);
     // Create a mutable dictionary to hold our attributes.
     attributes = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
                                            &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
     check(attributes != NULL);
-    
-    if (attributes != NULL) {        
+
+    if (attributes != NULL) {
         // Add a family name to our attributes.
         CFDictionaryAddValue(attributes, kCTFontFamilyNameAttribute, iFamilyName);
-        
-        
+
+
         if ( iTraits ) {
             CFMutableDictionaryRef traits;
             CFNumberRef symTraits;
@@ -282,17 +282,17 @@ static CTFontDescriptorRef wxMacCreateCTFontDescriptor(CFStringRef iFamilyName,
             symTraits = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type,
                                        &iTraits);
             check(symTraits != NULL);
-            
+
             if (symTraits != NULL) {
                 // Create a dictionary to hold our traits values.
                 traits = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
                                                    &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
                 check(traits != NULL);
-                
+
                 if (traits != NULL) {
                     // Add the symbolic traits value to the traits dictionary.
                     CFDictionaryAddValue(traits, kCTFontSymbolicTrait, symTraits);
-                    
+
                     // Add the traits attribute to our attributes.
                     CFDictionaryAddValue(attributes, kCTFontTraitsAttribute, traits);
                     CFRelease(traits);
@@ -303,7 +303,7 @@ static CTFontDescriptorRef wxMacCreateCTFontDescriptor(CFStringRef iFamilyName,
         // Create the font descriptor with our attributes and input size.
         descriptor = CTFontDescriptorCreateWithAttributes(attributes);
         check(descriptor != NULL);
-        
+
         CFRelease(attributes);
     }
     // Return our font descriptor.
@@ -331,7 +331,7 @@ wxFontRefData::wxFontRefData( CTFontDescriptorRef fontdescriptor, int size )
     if ( size == 0 )
     {
         wxCFRef< CFNumberRef > value( (CFNumberRef) CTFontDescriptorCopyAttribute( fontdescriptor, kCTFontSizeAttribute ) );
-        
+
         float fsize;
         if ( CFNumberGetValue( value , kCFNumberFloatType , &fsize ) )
         {
@@ -361,9 +361,9 @@ void wxFontRefData::MacFindFont()
         {
             m_ctFont.reset(CTFontCreateUIFontForLanguage( kCTFontSystemFontType, 0.0, NULL ));
         }
-           
+
         if ( m_ctFont )
-        {            
+        {
             wxCFStringRef name( CTFontCopyFamilyName( m_ctFont ) );
             m_faceName = name.AsString();
             m_pointSize = CTFontGetSize(m_ctFont) ;
@@ -386,16 +386,16 @@ void wxFontRefData::MacFindFont()
                     case wxDECORATIVE :
                         m_faceName = wxT("Times");
                         break ;
-                        
+
                     case wxSWISS :
                         m_faceName =  wxT("Lucida Grande");
                         break ;
-                        
+
                     case wxMODERN :
                     case wxTELETYPE:
                         m_faceName =  wxT("Monaco");
                         break ;
-                        
+
                     default:
                         m_faceName =  wxT("Times");
                         break ;
@@ -404,12 +404,12 @@ void wxFontRefData::MacFindFont()
 
             wxCFStringRef cf( m_faceName, wxLocale::GetSystemEncoding() );
             CTFontSymbolicTraits traits = 0;
-        
+
             if (m_weight == wxBOLD)
                 traits |= kCTFontBoldTrait;
             if (m_style == wxITALIC || m_style == wxSLANT)
                 traits |= kCTFontItalicTrait;
-            
+
             m_ctFontDescriptor.reset( wxMacCreateCTFontDescriptor( cf, traits ) );
 
             m_ctFont.reset( CTFontCreateWithFontDescriptor( m_ctFontDescriptor, m_pointSize, NULL ) );
@@ -439,7 +439,7 @@ void wxFontRefData::MacFindFont()
         };
         Boolean kTrue = true ;
         Boolean kFalse = false ;
-        
+
         Fixed atsuSize = IntToFixed( m_pointSize );
         ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal;
         ATSUAttributeValuePtr    atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] =
@@ -451,7 +451,7 @@ void wxFontRefData::MacFindFont()
             (m_style == wxITALIC || m_style == wxSLANT) ? &kTrue : &kFalse ,
             (m_underlined) ? &kTrue : &kFalse ,
         };
-        
+
         if ( m_macATSUStyle )
         {
             ::ATSUDisposeStyle((ATSUStyle)m_macATSUStyle);
@@ -508,16 +508,16 @@ void wxFontRefData::MacFindFont()
                         case wxDECORATIVE :
                             m_faceName = wxT("Times");
                             break ;
-                            
+
                         case wxSWISS :
                             m_faceName =  wxT("Lucida Grande");
                             break ;
-                            
+
                         case wxMODERN :
                         case wxTELETYPE:
                             m_faceName =  wxT("Monaco");
                             break ;
-                            
+
                         default:
                             m_faceName =  wxT("Times");
                             break ;
@@ -550,7 +550,7 @@ void wxFontRefData::MacFindFont()
                         m_macFontFamily = FMGetFontFamilyFromATSFontFamilyRef( atsfamily );
                 }
             }
-            
+
             m_macFontStyle = 0;
             if (m_weight == wxBOLD)
                 m_macFontStyle |= bold;
@@ -560,25 +560,25 @@ void wxFontRefData::MacFindFont()
                 m_macFontStyle |= underline;
             m_macFontSize = m_pointSize ;
         }
-        
+
         // we try to get as much styles as possible into ATSU
-        
-        
+
+
         // ATSUFontID and FMFont are equivalent
         FMFontStyle intrinsicStyle = 0 ;
         status = FMGetFontFromFontFamilyInstance( m_macFontFamily , m_macFontStyle , &m_macATSUFontID , &intrinsicStyle);
         wxASSERT_MSG( status == noErr , wxT("couldn't get an ATSUFont from font family") );
         m_macATSUAdditionalQDStyles = m_macFontStyle & (~intrinsicStyle );
-        
+
         if ( m_macATSUStyle )
         {
             ::ATSUDisposeStyle((ATSUStyle)m_macATSUStyle);
             m_macATSUStyle = NULL ;
         }
-        
+
         status = ::ATSUCreateStyle((ATSUStyle *)&m_macATSUStyle);
         wxASSERT_MSG( status == noErr , wxT("couldn't create ATSU style") );
-        
+
         ATSUAttributeTag atsuTags[] =
         {
             kATSUFontTag ,
@@ -601,10 +601,10 @@ void wxFontRefData::MacFindFont()
             sizeof( Boolean ) ,
             sizeof( Boolean ) ,
         };
-        
+
         Boolean kTrue = true ;
         Boolean kFalse = false ;
-        
+
         Fixed atsuSize = IntToFixed( m_macFontSize );
         ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal;
         ATSUAttributeValuePtr    atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] =
@@ -618,12 +618,12 @@ void wxFontRefData::MacFindFont()
             (m_macATSUAdditionalQDStyles & condense) ? &kTrue : &kFalse ,
             (m_macATSUAdditionalQDStyles & extend) ? &kTrue : &kFalse ,
         };
-        
+
         status = ::ATSUSetAttributes(
                                      (ATSUStyle)m_macATSUStyle,
                                      sizeof(atsuTags) / sizeof(ATSUAttributeTag) ,
                                      atsuTags, atsuSizes, atsuValues);
-        
+
         wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") );
         return;
     }
@@ -682,10 +682,10 @@ bool wxFont::MacCreateFromUIFont(wxUint32 ctFontType )
 bool wxFont::MacCreateFromCTFontDescriptor( const void * ctFontDescriptor , int size )
 {
     UnRef();
-    
+
     m_refData = new wxFontRefData((CTFontDescriptorRef)ctFontDescriptor, size);;
     RealizeResource();
-    
+
     return true;
 }
 
@@ -751,11 +751,21 @@ void wxFont::Unshare()
     }
 }
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData;
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 void wxFont::SetPointSize(int pointSize)
 {
     if ( M_FONTDATA->GetPointSize() == pointSize )
         return;
-    
+
     Unshare();
 
     M_FONTDATA->SetPointSize( pointSize );
@@ -945,7 +955,7 @@ wxUint16 wxFont::MacGetThemeFontID() const
 void * wxFont::MacGetATSUStyle() const
 {
     wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") );
-    
+
     return M_FONTDATA->m_macATSUStyle;
 }
 #endif
@@ -962,7 +972,7 @@ const void * wxFont::MacGetCTFont() const
 const void * wxFont::MacGetCTFontDescriptor() const
 {
     wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") );
-    
+
     return (CTFontDescriptorRef)(M_FONTDATA->m_ctFontDescriptor);
 }
 
index 87c0ceb969a7f41ed4375d2f54931de92a6db73c..004b47fc6eb3e62ef74b06f9b73b1cb2be638a07 100644 (file)
@@ -26,21 +26,25 @@ IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxGDIObject)
 class WXDLLEXPORT wxIconRefData : public wxGDIRefData
 {
 public:
-    wxIconRefData();
+    wxIconRefData() { Init(); }
     wxIconRefData( WXHICON iconref, int desiredWidth, int desiredHeight );
     virtual ~wxIconRefData() { Free(); }
-    
-    void Init();
+
+    virtual bool IsOk() const { return m_iconRef != NULL; }
+
     virtual void Free();
-    
+
     void SetWidth( int width ) { m_width = width; }
     void SetHeight( int height ) { m_height = height; }
-    
+
     int GetWidth() const { return m_width; }
     int GetHeight() const { return m_height; }
-    
+
     WXHICON GetHICON() const { return (WXHICON) m_iconRef; }
-    private :
+
+private:
+    void Init();
+
     IconRef m_iconRef;
     int m_width;
     int m_height;
@@ -50,7 +54,7 @@ public:
 wxIconRefData::wxIconRefData( WXHICON icon, int desiredWidth, int desiredHeight )
 {
     m_iconRef = MAC_WXHICON( icon ) ;
-    
+
     // Standard sizes
     SetWidth( desiredWidth == -1 ? 32 : desiredWidth ) ;
     SetHeight( desiredHeight == -1 ? 32 : desiredHeight ) ;
@@ -59,6 +63,8 @@ wxIconRefData::wxIconRefData( WXHICON icon, int desiredWidth, int desiredHeight
 void wxIconRefData::Init()
 {
     m_iconRef = NULL ;
+    m_width =
+    m_height = 0;
 }
 
 void wxIconRefData::Free()
@@ -117,6 +123,16 @@ wxIcon::~wxIcon()
 {
 }
 
+wxGDIRefData *wxIcon::CreateGDIRefData() const
+{
+    return new wxIconRefData;
+}
+
+wxGDIRefData *wxIcon::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxIconRefData(*wx_static_cast(const wxIconRefData *, data));
+}
+
 WXHICON wxIcon::GetHICON() const
 {
     wxASSERT( Ok() ) ;
@@ -155,11 +171,6 @@ void wxIcon::SetHeight( int WXUNUSED(height) )
 {
 }
 
-bool wxIcon::IsOk() const
-{
-    return m_refData != NULL ;
-}
-
 bool wxIcon::LoadFile(
     const wxString& filename, wxBitmapType type,
     int desiredWidth, int desiredHeight )
@@ -200,34 +211,34 @@ bool wxIcon::LoadFile(
         }
         else
         {
-               IconRef iconRef = NULL ;
-               
-               // first look in the resource fork
-               if ( iconRef == NULL )
-               {
-                       Str255 theName ;
-
-                       wxMacStringToPascal( filename , theName ) ;
-                       Handle resHandle = GetNamedResource( 'icns' , theName ) ;
-                       if ( resHandle != 0L )
-                       {
-                                       IconFamilyHandle iconFamily = (IconFamilyHandle) resHandle ;
+            IconRef iconRef = NULL ;
+
+            // first look in the resource fork
+            if ( iconRef == NULL )
+            {
+                Str255 theName ;
+
+                wxMacStringToPascal( filename , theName ) ;
+                Handle resHandle = GetNamedResource( 'icns' , theName ) ;
+                if ( resHandle != 0L )
+                {
+                    IconFamilyHandle iconFamily = (IconFamilyHandle) resHandle ;
                     HLock((Handle) iconFamily);
                     OSStatus err = GetIconRefFromIconFamilyPtr( *iconFamily, GetHandleSize((Handle) iconFamily), &iconRef );
                     HUnlock((Handle) iconFamily);
                     wxASSERT_MSG( err == noErr , wxT("Error when constructing icon ref") );
                     ReleaseResource( resHandle ) ;
-                       }
-                       }
+                }
+              }
             if ( iconRef == NULL )
             {
                 // TODO add other attempts to load it from files etc here
             }
-                       if ( iconRef )
-                       {
-                       m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight ) ;
-                       return true ;
-                       }       
+               if ( iconRef )
+               {
+                   m_refData = new wxIconRefData( (WXHICON) iconRef, desiredWidth, desiredHeight ) ;
+                return true ;
+               }
         }
 
         if ( theId != 0 )
index 7d09ee10333822d3caebc581b2dbcdd49d5c40a7..73d5b77f9ab8a651fa60b7328ac23bbd776dad68 100644 (file)
@@ -37,17 +37,25 @@ IMPLEMENT_ABSTRACT_CLASS(wxMetafileDCImpl, wxGCDCImpl)
 
 #define M_METAFILEREFDATA( a ) ((wxMetafileRefData*)(a).GetRefData())
 
-class wxMetafileRefData: public wxGDIRefData
+class wxMetafileRefData : public wxGDIRefData
 {
 public:
+    // default ctor needed for CreateGDIRefData(), must be initialized later
+    wxMetafileRefData() { Init(); }
+
     // creates a metafile from memory, assumes ownership
     wxMetafileRefData(CFDataRef data);
+
     // prepares a recording metafile
     wxMetafileRefData( int width, int height);
+
     // prepares a metafile to be read from a file (if filename is not empty)
     wxMetafileRefData( const wxString& filename);
+
     virtual ~wxMetafileRefData();
 
+    virtual bool IsOk() const { return m_data != NULL; }
+
     void Init();
 
     int GetWidth() const { return m_width; }
@@ -162,9 +170,14 @@ wxMetaFile::~wxMetaFile()
 {
 }
 
-bool wxMetaFile::IsOk() const
+wxGDIRefData *wxMetaFile::CreateGDIRefData() const
+{
+    return new wxMetafileRefData;
+}
+
+wxGDIRefData *wxMetaFile::CloneGDIRefData(const wxGDIRefData *data) const
 {
-    return (M_METAFILEDATA && (M_METAFILEDATA->GetData() != NULL));
+    return new wxMetafileRefData(*wx_static_cast(const wxMetafileRefData *, data));
 }
 
 WXHMETAFILE wxMetaFile::GetHMETAFILE() const
index cb5ca9487bb33e3b94b07d171aa65249d0824a8d..99727e0d52dc5be87bcdb0f97ffea63f6bc2d9c0 100644 (file)
 
 IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
 
-/*
- * Palette
- *
- */
+// ============================================================================
+// wxPaletteRefData
+// ============================================================================
+
+class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
+{
+public:
+    wxPaletteRefData();
+    wxPaletteRefData(const wxPaletteRefData& data);
+    virtual ~wxPaletteRefData();
+
+    virtual bool IsOk() const { return m_count > 0; }
+
+protected:
+    wxColour* m_palette;
+    wxInt32   m_count;
+
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
+
+    DECLARE_NO_ASSIGN_CLASS(wxPaletteRefData)
+};
 
 wxPaletteRefData::wxPaletteRefData()
 {
-    m_palette = NULL ;
-    m_count = 0 ;
+    m_palette = NULL;
+    m_count = 0;
+}
+
+wxPaletteRefData::wxPaletteRefData(const wxPaletteRefData& data)
+{
+    m_count = data.m_count;
+    m_palette = new wxColour[m_count];
+    for ( wxInt32 i = 0; i < m_count; i++ )
+        m_palette[i] = data.m_palette[i];
 }
 
 wxPaletteRefData::~wxPaletteRefData()
 {
-    if (m_palette != NULL) {
-        delete[] m_palette ;
-        m_palette = NULL;
-    }
+    delete[] m_palette;
 }
 
+// ============================================================================
+// wxPalette
+// ============================================================================
+
 wxPalette::wxPalette()
 {
 }
@@ -111,10 +137,18 @@ int wxPalette::GetColoursCount() const
 {
     if (m_refData)
         return M_PALETTEDATA->m_count;
-    
-    return 0;    
+
+    return 0;
+}
+
+wxGDIRefData *wxPalette::CreateGDIRefData() const
+{
+    return new wxPaletteRefData;
 }
 
+wxGDIRefData *wxPalette::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxPaletteRefData(*wx_static_cast(const wxPaletteRefData *, data));
+}
 
-#endif
-// wxUSE_PALETTE
+#endif // wxUSE_PALETTE
index d0644b2468080fee8ee0e6e80869131b483dafa6..5fa47f2a9a1c776435803d7fffc2688e8032312f 100644 (file)
@@ -19,9 +19,8 @@
 
 IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject)
 
-class WXDLLEXPORT wxPenRefData: public wxGDIRefData
+class WXDLLEXPORT wxPenRefData : public wxGDIRefData
 {
-    friend class WXDLLIMPEXP_FWD_CORE wxPen;
 public:
     wxPenRefData();
     wxPenRefData(const wxPenRefData& data);
@@ -33,28 +32,30 @@ public:
     {
         // we intentionally don't compare m_hPen fields here
         return m_style == data.m_style &&
-               m_width == data.m_width &&
-               m_join == data.m_join &&
-               m_cap == data.m_cap &&
-               m_colour == data.m_colour &&
-               (m_style != wxSTIPPLE || m_stipple.IsSameAs(data.m_stipple)) &&
-               (m_style != wxUSER_DASH ||
-                (m_nbDash == data.m_nbDash &&
-                    memcmp(m_dash, data.m_dash, m_nbDash*sizeof(wxDash)) == 0));
+            m_width == data.m_width &&
+            m_join == data.m_join &&
+            m_cap == data.m_cap &&
+            m_colour == data.m_colour &&
+            (m_style != wxSTIPPLE || m_stipple.IsSameAs(data.m_stipple)) &&
+            (m_style != wxUSER_DASH ||
+             (m_nbDash == data.m_nbDash &&
+              memcmp(m_dash, data.m_dash, m_nbDash*sizeof(wxDash)) == 0));
     }
 
 protected:
-  int           m_width;
-  int           m_style;
-  int           m_join ;
-  int           m_cap ;
-  wxBitmap      m_stipple ;
-  int           m_nbDash ;
-  wxDash *      m_dash ;
-  wxColour      m_colour;
-/* TODO: implementation
-  WXHPEN        m_hPen;
-*/
+    int           m_width;
+    int           m_style;
+    int           m_join ;
+    int           m_cap ;
+    wxBitmap      m_stipple ;
+    int           m_nbDash ;
+    wxDash *      m_dash ;
+    wxColour      m_colour;
+    /* TODO: implementation
+       WXHPEN        m_hPen;
+       */
+
+    friend class WXDLLIMPEXP_FWD_CORE wxPen;
 };
 
 wxPenRefData::wxPenRefData()
@@ -126,7 +127,17 @@ wxPen::wxPen(const wxBitmap& stipple, int Width)
     RealizeResource();
 }
 
-bool wxPen::operator == (const wxPen& pen) const
+wxGDIRefData *wxPen::CreateGDIRefData() const
+{
+    return new wxPenRefData;
+}
+
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxPenRefData(*wx_static_cast(const wxPenRefData *, data));
+}
+
+bool wxPen::operator==(const wxPen& pen) const
 {
     const wxPenRefData *penData = (wxPenRefData *)pen.m_refData;
 
@@ -134,39 +145,39 @@ bool wxPen::operator == (const wxPen& pen) const
     return m_refData ? penData && *M_PENDATA == *penData : !penData;
 }
 
-wxColour& wxPen::GetColour() const 
-{ 
-    return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); 
+wxColour& wxPen::GetColour() const
+{
+    return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour);
 }
 
-int wxPen::GetWidth() const 
-{ 
-    return (M_PENDATA ? M_PENDATA->m_width : 0); 
+int wxPen::GetWidth() const
+{
+    return (M_PENDATA ? M_PENDATA->m_width : 0);
 }
 
-int wxPen::GetStyle() const 
-{ 
-    return (M_PENDATA ? M_PENDATA->m_style : 0); 
+int wxPen::GetStyle() const
+{
+    return (M_PENDATA ? M_PENDATA->m_style : 0);
 }
 
-int wxPen::GetJoin() const 
-{ 
-    return (M_PENDATA ? M_PENDATA->m_join : 0); 
+int wxPen::GetJoin() const
+{
+    return (M_PENDATA ? M_PENDATA->m_join : 0);
 }
 
-int wxPen::GetCap() const 
-{ 
-    return (M_PENDATA ? M_PENDATA->m_cap : 0); 
+int wxPen::GetCap() const
+{
+    return (M_PENDATA ? M_PENDATA->m_cap : 0);
 }
 
-int wxPen::GetDashes(wxDash **ptr) const 
+int wxPen::GetDashes(wxDash **ptr) const
 {
     *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0);
 }
 
-wxBitmap *wxPen::GetStipple() const 
-{ 
-    return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); 
+wxBitmap *wxPen::GetStipple() const
+{
+    return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL);
 }
 
 void wxPen::Unshare()
index 69e0e80e8254dd35c16e61f07e4e47ae0afdd5f2..d08fd4984c25b88208ffa5c7bd77738258a6bd85 100644 (file)
@@ -160,6 +160,16 @@ wxRegion::~wxRegion()
     // m_refData unrefed in ~wxObject
 }
 
+wxGDIRefData *wxRegion::CreateGDIRefData() const
+{
+    return new wxRegionRefData;
+}
+
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxRegionRefData(*wx_static_cast(const wxRegionRefData *, data));
+}
+
 //-----------------------------------------------------------------------------
 //# Modify region
 //-----------------------------------------------------------------------------
index 1c424417fe79102fbb4ffe0e5853e9a84554a35f..c280b0b0ac7a82770a2243cfbd20161717055061 100644 (file)
@@ -60,6 +60,8 @@ public:
     wxBitmapRefData();
     virtual ~wxBitmapRefData();
 
+    virtual bool IsOk() const { return m_bitmap != NULL; }
+
     int             m_width;
     int             m_height;
     int             m_bpp;
@@ -267,11 +269,6 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
     delete bdc;
 }
 
-bool wxBitmap::IsOk() const
-{
-    return (m_refData != NULL && M_BMPDATA->m_bitmap != NULL);
-}
-
 int wxBitmap::GetHeight() const
 {
     wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") );
index b151db8a0a5b0d9663daf021a058aa0c6f347b96..b8f6073f388fcfb6c45294161a306f0a2d1bf52f 100644 (file)
@@ -70,13 +70,15 @@ void wxBitmapToPixPattern(const wxBitmap& bitmap,
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class wxBrushRefData: public wxObjectRefData
+class wxBrushRefData : public wxGDIRefData
 {
 public:
     wxBrushRefData();
     wxBrushRefData(const wxBrushRefData& data);
 
-    bool operator == (const wxBrushRefData& data) const
+    virtual bool IsOk() const { return m_colour.IsOk(); }
+
+    bool operator==(const wxBrushRefData& data) const
     {
         return (m_style == data.m_style &&
                 m_stipple.IsSameAs(data.m_stipple) &&
@@ -164,11 +166,6 @@ bool wxBrush::operator != (const wxBrush& brush) const
     return m_refData != brush.m_refData;
 }
 
-bool wxBrush::IsOk() const
-{
-    return ((m_refData) && M_BRUSHDATA->m_colour.Ok());
-}
-
 int wxBrush::GetStyle() const
 {
     if (m_refData == NULL)
@@ -252,12 +249,12 @@ void wxBrush::SetStipple(const wxBitmap& stipple)
         M_BRUSHDATA->m_style = wxSTIPPLE;
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(wxBrushRefData *)data);
 }
index 5b9c7899d1e3b201ee01259d6308d174fc06b55c..b43d0b254b3c3c7a7ee199312d0c9f454559eb8d 100644 (file)
@@ -175,11 +175,6 @@ wxCursor::~wxCursor()
     // wxObject unrefs data
 }
 
-bool wxCursor::IsOk() const
-{
-    return (m_refData != NULL);
-}
-
 MGLCursor *wxCursor::GetMGLCursor() const
 {
     return M_CURSORDATA->m_cursor;
index d3a5afe21ad1a7dd5e30ab0bb6a32d17d3ad8e3b..db17cb1c013d425ac6ced9b5250ee5d071d2dc25 100644 (file)
@@ -57,12 +57,12 @@ bool wxFont::Create(int pointSize,
     return true;
 }
 
-wxObjectRefData *wxFont::CreateRefData() const
+wxGDIRefData *wxFont::CreateGDIRefData() const
 {
     return new wxFontRefData;
 }
 
-wxObjectRefData *wxFont::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxFontRefData(*(wxFontRefData *)data);
 }
index 48717b498b331eb183f16e3efbce4b3bc70dccda..92536bb350ba7ac7a0e4d6f09bafe8b3da18ee24 100644 (file)
@@ -63,11 +63,6 @@ wxPalette::~wxPalette()
 {
 }
 
-bool wxPalette::IsOk(void) const
-{
-    return (m_refData != NULL);
-}
-
 bool wxPalette::Create(int n,
                        const unsigned char *red,
                        const unsigned char *green,
index 83ad3603dabefe5d3b30f243e1b5c0199a1d2bb1..203faed261251f011da625cdfc98aad9435c4865 100644 (file)
@@ -257,17 +257,12 @@ void* wxPen::GetPixPattern() const
 }
 
 
-bool wxPen::IsOk() const
-{
-    return (m_refData != NULL);
-}
-
-wxObjectRefData *wxPen::CreateRefData() const
+wxGDIRefData *wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxPenRefData(*(wxPenRefData *)data);
 }
index 2604513a1eba60c5de1eedf5116e95dc3b14fd53..62457373753d764ed9fb77b840be989a0fe22f36 100644 (file)
@@ -57,12 +57,12 @@ public:
 // wxRegion
 //-----------------------------------------------------------------------------
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
index 6d32080afdce56ea35d041cf2f17f7ebf77d2b41..134c7e9596587eb37b63917f20450f148649d3ee 100644 (file)
@@ -49,15 +49,16 @@ WX_DECLARE_LIST(wxXCursor, wxXCursorList);
 #include "wx/listimpl.cpp"
 WX_DEFINE_LIST(wxXCursorList)
 
-class WXDLLEXPORT wxCursorRefData: public wxObjectRefData
+class WXDLLEXPORT wxCursorRefData: public wxGDIRefData
 {
-    friend class wxCursor;
 public:
     wxCursorRefData();
     virtual ~wxCursorRefData();
 
     wxXCursorList m_cursors;  // wxXCursor objects, one per display
     wxStockCursor m_cursorId; // wxWidgets standard cursor id
+
+    friend class wxCursor;
 };
 
 #define M_CURSORDATA ((wxCursorRefData *)m_refData)
@@ -293,9 +294,14 @@ wxCursor::~wxCursor()
 {
 }
 
-bool wxCursor::IsOk() const
+wxGDIRefData *wxCursor::CreateGDIRefData() const
+{
+    return new wxCursorRefData;
+}
+
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
 {
-    return m_refData != NULL;
+    return new wxCursorRefData(*wx_static_cast(const wxCursorRefData *, data));
 }
 
 // Motif-specific: create/get a cursor for the current display
index fc503f190f49488c7fc36192871bba2a9821b375..15bc878ed719c4e22a4e161c578b517a4a88d06d 100644 (file)
@@ -344,6 +344,16 @@ wxFont::~wxFont()
 {
 }
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData;
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 // ----------------------------------------------------------------------------
 // change the font attributes
 // ----------------------------------------------------------------------------
index d06251a59966fc50963c7ef6b284b5614de65df2..222cb4c40bac7a91456e7ebf557a32ef8ef8e43d 100644 (file)
@@ -211,7 +211,7 @@ wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData& data)
         m_bitmapMask = new wxMask(*data.m_bitmapMask);
 
     // FIXME: we don't copy m_hBitmap currently but we should, see wxBitmap::
-    //        CloneRefData()
+    //        CloneGDIRefData()
 
     wxASSERT_MSG( !data.m_isDIB,
                     _T("can't copy bitmap locked for raw access!") );
@@ -250,7 +250,7 @@ wxGDIImageRefData *wxBitmap::CreateData() const
     return new wxBitmapRefData;
 }
 
-wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *dataOrig) const
+wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *dataOrig) const
 {
     const wxBitmapRefData *
         data = wx_static_cast(const wxBitmapRefData *, dataOrig);
@@ -277,16 +277,17 @@ wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *dataOrig) const
         self->m_refData = new wxBitmapRefData(*data);
     }
 
+    wxBitmapRefData * const
+        selfdata = wx_static_cast(wxBitmapRefData *, m_refData);
+
     // copy also the mask
     wxMask * const maskSrc = data->GetMask();
     if ( maskSrc )
     {
-        wxBitmapRefData *selfdata = wx_static_cast(wxBitmapRefData *, m_refData);
-
         selfdata->SetMask(new wxMask(*maskSrc));
     }
 
-    return m_refData;
+    return selfdata;
 }
 
 bool wxBitmap::CopyFromIconOrCursor(const wxGDIImage& icon,
index 8f0e645b31916ca1e2e34a9878826849d4215e16..b5edb432054483524b7fad6d989ec3df2b00bda6 100644 (file)
@@ -252,12 +252,12 @@ bool wxBrush::operator==(const wxBrush& brush) const
     return m_refData ? (brushData && *M_BRUSHDATA == *brushData) : !brushData;
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(const wxBrushRefData *)data);
 }
index fe4d384aca7b243f12cdbe0b96c39fc73bf3d7d2..d2c39001f7f286f823a83bcb33be1211fffdf7bf 100644 (file)
@@ -69,6 +69,21 @@ static inline const wxChar *GetMetaFileName(const wxString& fn)
 // wxEnhMetaFile
 // ----------------------------------------------------------------------------
 
+wxGDIRefData *wxEnhMetaFile::CreateGDIRefData() const
+{
+    wxFAIL_MSG( _T("must be implemented if used") );
+
+    return NULL;
+}
+
+wxGDIRefData *
+wxEnhMetaFile::CloneGDIRefData(const wxGDIRefData *WXUNUSED(data)) const
+{
+    wxFAIL_MSG( _T("must be implemented if used") );
+
+    return NULL;
+}
+
 void wxEnhMetaFile::Init()
 {
     if ( m_filename.empty() )
index 024e43d3aef7ac2cdbc636bdc4dd1453fe652665..f2ff677d8a5549ceb1bb0df591115c79328be2fd 100644 (file)
@@ -895,12 +895,12 @@ wxFont::~wxFont()
 // real implementation
 // ----------------------------------------------------------------------------
 
-wxObjectRefData *wxFont::CreateRefData() const
+wxGDIRefData *wxFont::CreateGDIRefData() const
 {
     return new wxFontRefData();
 }
 
-wxObjectRefData *wxFont::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
 }
index 2186f3ef18e5d9573aea35645638bdc04b12380f..3076145d20bff433c6cabef2871df602bf515d73 100644 (file)
@@ -94,6 +94,16 @@ wxMetafile::~wxMetafile()
 {
 }
 
+wxGDIRefData *wxMetafile::CreateGDIRefData() const
+{
+    return new wxMetafileRefData;
+}
+
+wxGDIRefData *wxMetafile::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxMetafileRefData(wx_static_cast(wxMetafileRefData *, data));
+}
+
 bool wxMetafile::SetClipboard(int width, int height)
 {
 #if !wxUSE_CLIPBOARD
index 989ff48e22a5417ab81029bedcf11495d2149d4d..570f4d96c80a117a27f5f24ea9d3cd06580385a4 100644 (file)
 
 #include "wx/palette.h"
 
-#ifndef WX_PRECOMP
-#endif
-
 #include "wx/msw/private.h"
 
-IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
-
-/*
- * Palette
- *
- */
+// ============================================================================
+// wxPaletteRefData
+// ============================================================================
 
-wxPaletteRefData::wxPaletteRefData(void)
+class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData
 {
-    m_hPalette = 0;
-}
+public:
+    wxPaletteRefData() { Init(); }
 
-wxPaletteRefData::~wxPaletteRefData(void)
-{
-    if ( m_hPalette )
-        ::DeleteObject((HPALETTE) m_hPalette);
-}
+    wxPaletteRefData(int n,
+                     unsigned char *red,
+                     unsigned char *green,
+                     unsigned char *blue)
+    {
+        Init();
+
+        LOGPALETTE *pPal = Alloc(n);
+        if ( !pPal )
+            return;
+
+        for ( int i = 0; i < n; i++ )
+        {
+            pPal->palPalEntry[i].peRed = red[i];
+            pPal->palPalEntry[i].peGreen = green[i];
+            pPal->palPalEntry[i].peBlue = blue[i];
+            pPal->palPalEntry[i].peFlags = 0;
+        }
+
+        m_hPalette = ::CreatePalette(pPal);
+        free(pPal);
+    }
 
-wxPalette::wxPalette()
-{
-}
+    wxPaletteRefData(const wxPaletteRefData& data)
+    {
+        Init();
 
-wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
-{
-    Create(n, red, green, blue);
-}
+        const UINT n = data.GetEntries();
+        if ( !n )
+            return;
 
-wxPalette::~wxPalette(void)
-{
-//    FreeResource(true);
-}
+        LOGPALETTE *pPal = Alloc(n);
+        if ( !pPal )
+            return;
 
-bool wxPalette::FreeResource(bool WXUNUSED(force))
-{
-    if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette)
+        if ( ::GetPaletteEntries(data.m_hPalette, 0, n, pPal->palPalEntry) )
+            m_hPalette = ::CreatePalette(pPal);
+
+        free(pPal);
+    }
+
+    virtual ~wxPaletteRefData()
     {
-        DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette);
+        if ( m_hPalette )
+            ::DeleteObject(m_hPalette);
     }
 
-    return true;
-}
+    virtual bool IsOk() const { return m_hPalette != 0; }
 
-int wxPalette::GetColoursCount() const
-{
-    if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette)
+    UINT GetEntries() const
     {
-        return ::GetPaletteEntries((HPALETTE) M_PALETTEDATA->m_hPalette, 0, 0, NULL );
+        return ::GetPaletteEntries(m_hPalette, 0, 0, NULL);
     }
 
-    return 0;
-}
+private:
+    // caller must free() the pointer
+    static LOGPALETTE *Alloc(UINT numEntries)
+    {
+        LOGPALETTE *pPal = (LOGPALETTE *)
+            malloc(sizeof(LOGPALETTE) + numEntries*sizeof(PALETTEENTRY));
+        if ( pPal )
+        {
+            pPal->palVersion = 0x300;
+            pPal->palNumEntries = numEntries;
+        }
+
+        return pPal;
+    }
 
-bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
-{
-    UnRef();
+    void Init() { m_hPalette = 0; }
 
-#if defined(__WXMICROWIN__)
+    HPALETTE m_hPalette;
 
-    return false;
+    friend class WXDLLIMPEXP_FWD_CORE wxPalette;
+};
 
-#else
+// ============================================================================
+// wxPalette
+// ============================================================================
 
-    m_refData = new wxPaletteRefData;
+IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
 
-    NPLOGPALETTE npPal = (NPLOGPALETTE)LocalAlloc(LMEM_FIXED, sizeof(LOGPALETTE) +
-                          (WORD)n * sizeof(PALETTEENTRY));
-    if (!npPal)
-        return false;
+#define M_PALETTEDATA ((wxPaletteRefData *)m_refData)
 
-    npPal->palVersion = 0x300;
-    npPal->palNumEntries = (WORD)n;
+bool wxPalette::Create(int n,
+                       unsigned char *red,
+                       unsigned char *green,
+                       unsigned char *blue)
+{
+    m_refData = new wxPaletteRefData(n, red, green, blue);
 
-    int i;
-    for (i = 0; i < n; i ++)
-    {
-        npPal->palPalEntry[i].peRed = red[i];
-        npPal->palPalEntry[i].peGreen = green[i];
-        npPal->palPalEntry[i].peBlue = blue[i];
-        npPal->palPalEntry[i].peFlags = 0;
-    }
-    M_PALETTEDATA->m_hPalette = (WXHPALETTE) CreatePalette((LPLOGPALETTE)npPal);
-    LocalFree((HANDLE)npPal);
-    return true;
+    return IsOk();
+}
 
-#endif
+wxGDIRefData *wxPalette::CreateGDIRefData() const
+{
+    return new wxPaletteRefData;
 }
 
-int wxPalette::GetPixel(unsigned char red, unsigned char green, unsigned char blue) const
+wxGDIRefData *wxPalette::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxPaletteRefData(*wx_static_cast(const wxPaletteRefData *, data));
+}
+
+int wxPalette::GetColoursCount() const
+{
+    return IsOk() ? M_PALETTEDATA->GetEntries() : 0;
+}
+
+int wxPalette::GetPixel(unsigned char red,
+                        unsigned char green,
+                        unsigned char blue) const
 {
-#ifdef __WXMICROWIN__
-    return wxNOT_FOUND;
-#else
     if ( !m_refData )
         return wxNOT_FOUND;
 
-    return ::GetNearestPaletteIndex((HPALETTE) M_PALETTEDATA->m_hPalette, PALETTERGB(red, green, blue));
-#endif
+    return ::GetNearestPaletteIndex(M_PALETTEDATA->m_hPalette,
+                                    PALETTERGB(red, green, blue));
 }
 
-bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const
+bool wxPalette::GetRGB(int index,
+                       unsigned char *red,
+                       unsigned char *green,
+                       unsigned char *blue) const
 {
-#ifdef __WXMICROWIN__
-    return false;
-#else
     if ( !m_refData )
         return false;
 
@@ -136,24 +163,26 @@ bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsi
         return false;
 
     PALETTEENTRY entry;
-    if (::GetPaletteEntries((HPALETTE) M_PALETTEDATA->m_hPalette, index, 1, &entry))
-    {
-        *red = entry.peRed;
-        *green = entry.peGreen;
-        *blue = entry.peBlue;
-        return true;
-    }
-    else
+    if ( !::GetPaletteEntries(M_PALETTEDATA->m_hPalette, index, 1, &entry) )
         return false;
-#endif
+
+    *red = entry.peRed;
+    *green = entry.peGreen;
+    *blue = entry.peBlue;
+
+    return true;
+}
+
+WXHPALETTE wxPalette::GetHPALETTE() const
+{
+    return M_PALETTEDATA ? (WXHPALETTE)M_PALETTEDATA->m_hPalette : 0;
 }
 
 void wxPalette::SetHPALETTE(WXHPALETTE pal)
 {
-    if ( !m_refData )
-        m_refData = new wxPaletteRefData;
+    AllocExclusive();
 
-    M_PALETTEDATA->m_hPalette = pal;
+    M_PALETTEDATA->m_hPalette = (HPALETTE)pal;
 }
 
 #endif // wxUSE_PALETTE
index a43d02b14da772621f964ea08f6fdd714d384038..9df28c6731a3099d7deebfe97d81391690c26000 100644 (file)
@@ -469,12 +469,12 @@ bool wxPen::IsFree() const
     return M_PENDATA && !M_PENDATA->HasHPEN();
 }
 
-wxObjectRefData* wxPen::CreateRefData() const
+wxGDIRefData* wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData* wxPen::CloneRefData(const wxObjectRefData* data) const
+wxGDIRefData* wxPen::CloneGDIRefData(const wxGDIRefData* data) const
 {
     return new wxPenRefData(*wx_static_cast(const wxPenRefData*, data));
 }
index 51aff2b707c69d038cd855424c0930e9e07b9d19..329f150d010e6615a371175aff332cac6c984add 100644 (file)
@@ -143,12 +143,12 @@ wxRegion::~wxRegion()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
index 068ccb02949f490423707f51a30af82aef130d21..8b3dbb8feaa431b5b4d0e1657ca1d5172c45d5e0 100644 (file)
@@ -94,12 +94,12 @@ void wxBitmapRefData::Free()
 // wxBitmap creation
 // ----------------------------------------------------------------------------
 
-wxObjectRefData* wxBitmap::CreateRefData() const
+wxGDIRefData* wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData* wxBitmap::CloneRefData(const wxObjectRefData* data) const
+wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const
 {
     return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data));
 }
index 92849e1384609248c5ceb356e5c9553f0a6f8b1c..eff2107d6047c17fa375bf239305602976a0a7d9 100644 (file)
@@ -233,12 +233,12 @@ wxRegion::~wxRegion()
 {
 } // end of wxRegion::~wxRegion
 
-wxObjectRefData *wxRegion::CreateData() const
+wxGDIRefData *wxRegion::CreateData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
index 9cee09616c508cc1e341eb5499d937c4f59b8589..6018ae35b28b2b14e24787c58086fbb5bc501608 100644 (file)
@@ -71,12 +71,12 @@ bool wxBrush::operator==(const wxBrush& brush) const
     return false;
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return NULL;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return NULL;
 }
index 46c1839b405851f8393e7ea1dc0dccd5abfa714a..ae6ffff148da22c3e12014b10fb4516eba179859 100644 (file)
@@ -73,12 +73,12 @@ wxRegion::~wxRegion()
 {
 }
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return NULL;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return NULL;
 }
index ba6ebacd0e477960cc7b83db4d9e90107f130963..856f0288b8259e17ac886a125ba6d8bd364a93c2 100644 (file)
@@ -227,7 +227,7 @@ bool wxMask::Create( const wxBitmap& bitmap )
 // wxBitmap
 //-----------------------------------------------------------------------------
 
-class wxBitmapRefData: public wxObjectRefData
+class wxBitmapRefData : public wxGDIRefData
 {
 public:
     wxBitmapRefData();
@@ -237,6 +237,8 @@ public:
     // shouldn't be called more than once as it doesn't free the existing data
     bool Create(int width, int height, int depth);
 
+    virtual bool IsOk() const { return m_pixmap || m_bitmap; }
+
     Pixmap          m_pixmap;
     Pixmap          m_bitmap;
     Display        *m_display;
@@ -430,12 +432,12 @@ wxBitmap::wxBitmap(const char* const* bits)
     Create(bits, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
 }
 
-wxObjectRefData *wxBitmap::CreateRefData() const
+wxGDIRefData *wxBitmap::CreateGDIRefData() const
 {
     return new wxBitmapRefData;
 }
 
-wxObjectRefData *wxBitmap::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBitmap::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data));
 }
@@ -934,11 +936,6 @@ wxBitmap::~wxBitmap()
 {
 }
 
-bool wxBitmap::IsOk() const
-{
-    return (m_refData != NULL);
-}
-
 int wxBitmap::GetHeight() const
 {
     wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") );
index 3eeb858046d692f17b2e02749f609ccf5817186f..7ac5842b351f0f5f1165fdbad288481b34a2685a 100644 (file)
@@ -24,7 +24,7 @@
 // wxBrush
 //-----------------------------------------------------------------------------
 
-class wxBrushRefData: public wxObjectRefData
+class wxBrushRefData : public wxGDIRefData
 {
 public:
     wxBrushRefData()
@@ -82,12 +82,12 @@ wxBrush::~wxBrush()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxBrush::CreateRefData() const
+wxGDIRefData *wxBrush::CreateGDIRefData() const
 {
     return new wxBrushRefData;
 }
 
-wxObjectRefData *wxBrush::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxBrushRefData(*(wxBrushRefData *)data);
 }
index 26dfeded955864d434a1c0af8d95db4d3b44b02a..df120d904b1ebe05e2a5e65e35a5d42dcd302148 100644 (file)
@@ -25,7 +25,7 @@
 // wxColour
 //-----------------------------------------------------------------------------
 
-class wxColourRefData: public wxObjectRefData
+class wxColourRefData : public wxGDIRefData
 {
 public:
     wxColourRefData()
@@ -37,8 +37,8 @@ public:
         m_colormap = (WXColormap *) NULL;
         m_hasPixel = false;
     }
-    wxColourRefData(const wxColourRefData& data):
-        wxObjectRefData()
+
+    wxColourRefData(const wxColourRefData& data)
     {
         m_color = data.m_color;
         m_colormap = data.m_colormap;
@@ -50,7 +50,7 @@ public:
         FreeColour();
     }
 
-    bool operator == (const wxColourRefData& data) const
+    bool operator==(const wxColourRefData& data) const
     {
         return (m_colormap == data.m_colormap &&
                 m_hasPixel == data.m_hasPixel &&
@@ -162,12 +162,12 @@ bool wxColour::operator == ( const wxColour& col ) const
 
 }
 
-wxObjectRefData *wxColour::CreateRefData() const
+wxGDIRefData *wxColour::CreateGDIRefData() const
 {
     return new wxColourRefData;
 }
 
-wxObjectRefData *wxColour::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxColour::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxColourRefData(*(wxColourRefData *)data);
 }
index 1e1efbc681cedd316abbd4eafe6ca35e21c7cd61..f1b2a9dc894fa3bbc79dbce76007d6443b384924 100644 (file)
@@ -19,6 +19,7 @@
     #include "wx/utils.h"
     #include "wx/icon.h"
     #include "wx/gdicmn.h"
+    #include "wx/image.h"
 #endif
 
 #include "wx/x11/private.h"
@@ -31,7 +32,7 @@
 // wxCursor
 //-----------------------------------------------------------------------------
 
-class wxCursorRefData: public wxObjectRefData
+class wxCursorRefData: public wxGDIRefData
 {
 public:
 
@@ -143,9 +144,14 @@ wxCursor::~wxCursor()
 {
 }
 
-bool wxCursor::IsOk() const
+wxGDIRefData *wxCursor::CreateGDIRefData() const
 {
-    return (m_refData != NULL);
+    return new wxCursorRefData;
+}
+
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxCursorRefData(*wx_static_cast(const wxCursorRefData *, data));
 }
 
 WXCursor wxCursor::GetCursor() const
index 3b0f09338f71b4b3603d1ec44835c734dd3fa10f..0855e067a390b2e7a01f825f14d608d7372b5f74 100644 (file)
@@ -93,7 +93,7 @@ wxXFont::~wxXFont()
 // wxFontRefData
 // ----------------------------------------------------------------------------
 
-class wxFontRefData: public wxObjectRefData
+class wxFontRefData: public wxGDIRefData
 {
 friend class wxFont;
 
@@ -402,7 +402,7 @@ void wxFontRefData::InitFromNative()
 }
 
 wxFontRefData::wxFontRefData( const wxFontRefData& data )
-             : wxObjectRefData()
+             : wxGDIRefData()
 {
     m_pointSize = data.m_pointSize;
     m_family = data.m_family;
@@ -686,6 +686,16 @@ wxFont::~wxFont()
 {
 }
 
+wxGDIRefData *wxFont::CreateGDIRefData() const
+{
+    return new wxFontRefData;
+}
+
+wxGDIRefData *wxFont::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxFontRefData(*wx_static_cast(const wxFontRefData *, data));
+}
+
 // ----------------------------------------------------------------------------
 // change the font attributes
 // ----------------------------------------------------------------------------
index 8d7852654f05dcf37d6c64aaab04a10dc038ba2a..79f27675560330046fae2b18d023e8cb86311fb1 100644 (file)
@@ -170,6 +170,16 @@ bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *gre
     return true;
 }
 
+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 WXUNUSED(red),
                         unsigned char WXUNUSED(green),
                         unsigned char WXUNUSED(blue)) const
index 23cf2ca01e3f0439131e304a67753e8669f422ea..079472dbdf59b1b5cb424667147c880ad4b574b4 100644 (file)
@@ -24,7 +24,7 @@
 // wxPen
 //-----------------------------------------------------------------------------
 
-class wxPenRefData: public wxObjectRefData
+class wxPenRefData : public wxGDIRefData
 {
 public:
     wxPenRefData()
@@ -91,12 +91,12 @@ wxPen::~wxPen()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxPen::CreateRefData() const
+wxGDIRefData *wxPen::CreateGDIRefData() const
 {
     return new wxPenRefData;
 }
 
-wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxPenRefData(*(wxPenRefData *)data);
 }
index bf46762fe00d203dd014c68d26dd243908341de3..f912e633ba596699f03eff99189201259f3220ab 100644 (file)
@@ -31,7 +31,7 @@
 // wxRegionRefData: private class containing the information about the region
 // ----------------------------------------------------------------------------
 
-class wxRegionRefData : public wxObjectRefData
+class wxRegionRefData : public wxGDIRefData
 {
 public:
     wxRegionRefData()
@@ -115,12 +115,12 @@ wxRegion::~wxRegion()
     // m_refData unrefed in ~wxObject
 }
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
@@ -361,7 +361,7 @@ struct _XRegion {
     _XBox *rects, extents;
 };
 
-class wxRIRefData: public wxObjectRefData
+class wxRIRefData: public wxGDIRefData
 {
 public: