#define M_BITMAPDATA ((wxBitmapRefData *)m_refData)
 
-class WXDLLEXPORT wxBitmapHandler: public wxObject
+class WXDLLEXPORT wxBitmapHandler: public wxBitmapHandlerBase
 {
   DECLARE_DYNAMIC_CLASS(wxBitmapHandler)
 public:
   virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
   virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
       int desiredWidth, int desiredHeight);
-  virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
+  virtual bool SaveFile(const wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
 
   inline void SetName(const wxString& name) { m_name = name; }
   inline void SetExtension(const wxString& ext) { m_extension = ext; }
 
 #define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData())
 
-class WXDLLEXPORT wxBitmap: public wxGDIObject
+class WXDLLEXPORT wxBitmap: public wxBitmapBase
 {
   DECLARE_DYNAMIC_CLASS(wxBitmap)
 
   wxBitmap(char **bits);
 
   // Load a file or resource
-  wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_PICT_RESOURCE);
+  wxBitmap(const wxString& name, wxBitmapType type = wxBITMAP_TYPE_PICT_RESOURCE);
 
   // Constructor for generalised creation from data
-  wxBitmap(void *data, long type, int width, int height, int depth = 1);
+  wxBitmap(void *data, wxBitmapType type, int width, int height, int depth = 1);
 
   // If depth is omitted, will create a bitmap compatible with the display
   wxBitmap(int width, int height, int depth = -1);
   wxBitmap GetSubBitmap( const wxRect& rect ) const;
 
   virtual bool Create(int width, int height, int depth = -1);
-  virtual bool Create(void *data, long type, int width, int height, int depth = 1);
-  virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE);
-  virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL);
+  virtual bool Create(void *data, wxBitmapType type, int width, int height, int depth = 1);
+  virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_TYPE_BMP_RESOURCE);
+  virtual bool SaveFile(const wxString& name, wxBitmapType type, const wxPalette *cmap = NULL) const;
+
+  // copies the contents and mask of the given (colour) icon to the bitmap
+  virtual bool CopyFromIcon(const wxIcon& icon);
 
   bool Ok() const;
   int GetWidth() const;
   static void InsertHandler(wxBitmapHandler *handler);
   static bool RemoveHandler(const wxString& name);
   static wxBitmapHandler *FindHandler(const wxString& name);
-  static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType);
-  static wxBitmapHandler *FindHandler(long bitmapType);
+  static wxBitmapHandler *FindHandler(const wxString& extension, wxBitmapType type);
+  static wxBitmapHandler *FindHandler(wxBitmapType type);
 
   static void InitStandardHandlers();
   static void CleanUpHandlers();
 
 #pragma interface "radiobox.h"
 #endif
 
-#include "wx/control.h"
-
-WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr;
-
 // List box item
-class  wxBitmap ;
+class WXDLLEXPORT wxBitmap ;
 
-class  wxRadioButton ;
+class WXDLLEXPORT wxRadioButton ;
 
-class  wxRadioBox: public wxControl
+class WXDLLEXPORT wxRadioBox: public wxControl, public wxRadioBoxBase
 {
        DECLARE_DYNAMIC_CLASS(wxRadioBox)
 public:
        int GetSelection() const;
        wxString GetString(int item) const;
        virtual wxString GetStringSelection() const;
-       inline virtual int Number() const { return m_noItems; } ;
+       inline virtual int GetCount() const { return m_noItems; } ;
        void SetLabel(const wxString& label) ;
        void SetLabel(int item, const wxString& label) ;
        void SetSelection(int item);
 
 #pragma interface "statbmp.h"
 #endif
 
-#include "wx/control.h"
+#include "wx/icon.h"
 
-WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr;
-
-class WXDLLEXPORT wxStaticBitmap: public wxControl
+class WXDLLEXPORT wxStaticBitmap: public wxStaticBitmapBase
 {
   DECLARE_DYNAMIC_CLASS(wxStaticBitmap)
  public:
   virtual void OnPaint( wxPaintEvent &event ) ;
   void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
 
-  inline const wxBitmap& GetBitmap() const { return m_messageBitmap; }
-  const wxIcon& GetIcon() const { return (const wxIcon&) GetBitmap() ; }
+  wxBitmap GetBitmap() const { return m_bitmap; }
+  wxIcon GetIcon() const
+      {
+         // icons and bitmaps are really the same thing in wxMac
+         return (const wxIcon &)m_bitmap;
+      }
   void  SetIcon(const wxIcon& icon) { SetBitmap( (const wxBitmap &)icon ) ; }
 
   // overriden base class virtuals
   wxSize DoGetBestSize() const ;
 
  protected:
-  wxBitmap m_messageBitmap;
+  wxBitmap m_bitmap;
        DECLARE_EVENT_TABLE() 
 };
 
 
        m_datas.Add( NULL ) ;
        int index = m_strings.GetCount()  - 1  ;
        DoSetItemClientData( index , NULL ) ;
-       SetControlMaximum( m_macControl , Number()) ;
+       SetControlMaximum( m_macControl , GetCount()) ;
        return index ;
 }
 
     ::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ;
     m_strings.Remove( n ) ;
     m_datas.Remove( n ) ;
-       SetControlMaximum( m_macControl , Number()) ;
+       SetControlMaximum( m_macControl , GetCount()) ;
 }
 
 void wxChoice::Clear()
 
 #include "wx/dcclient.h"
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxStaticBitmapBase)
 #endif
 
 /*
  * wxStaticBitmap
  */
 
-BEGIN_EVENT_TABLE(wxStaticBitmap, wxControl)
+BEGIN_EVENT_TABLE(wxStaticBitmap, wxStaticBitmapBase)
     EVT_PAINT(wxStaticBitmap::OnPaint)
 END_EVENT_TABLE()
 
     m_backgroundColour = parent->GetBackgroundColour() ;
     m_foregroundColour = parent->GetForegroundColour() ;
 
-    m_messageBitmap = bitmap;
+    m_bitmap = bitmap;
     if ( id == -1 )
            m_windowId = (int)NewControlId();
     else
     m_windowStyle = style;
 
     bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name );
-       SetSizeOrDefault( size ) ;
+       SetBestSize( size ) ;
     
     return ret;
 }
 
 void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap)
 {
-    m_messageBitmap = bitmap;
+    m_bitmap = bitmap;
     Refresh() ;
-    SetSizeOrDefault();
+    SetBestSize(wxSize(bitmap.GetWidth(), bitmap.GetHeight()));
 }
 
 void wxStaticBitmap::OnPaint( wxPaintEvent &event ) 
     wxPaintDC dc(this);
     PrepareDC(dc);
 
-    dc.DrawBitmap( m_messageBitmap , 0 , 0 , TRUE ) ;
+    dc.DrawBitmap( m_bitmap , 0 , 0 , TRUE ) ;
 }
 
 wxSize wxStaticBitmap::DoGetBestSize() const
 {
-   if ( m_messageBitmap.Ok() )
-       return wxSize(m_messageBitmap.GetWidth(), m_messageBitmap.GetHeight());
+   if ( m_bitmap.Ok() )
+       return wxSize(m_bitmap.GetWidth(), m_bitmap.GetHeight());
    else
        return wxSize(16, 16);  // completely arbitrary
 }
 
 #include <stdio.h>
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxStaticTextBase)
 #endif
 
 #include <wx/mac/uma.h>
 
-BEGIN_EVENT_TABLE(wxStaticText, wxControl)
+BEGIN_EVENT_TABLE(wxStaticText, wxStaticTextBase)
     EVT_PAINT(wxStaticText::OnPaint)
 END_EVENT_TABLE()
 
     m_label = label ;
 
        bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name );
-       SetSizeOrDefault( size ) ;
+       SetBestSize( size ) ;
     
     return ret;
 }
        SetTitle( st ) ;
        m_label = st ;
        if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-               SetSizeOrDefault() ;
+               SetSize( GetBestSize() ) ;
 
        Refresh() ;     
        MacUpdateImmediately() ;
 
        m_datas.Add( NULL ) ;
        int index = m_strings.GetCount()  - 1  ;
        DoSetItemClientData( index , NULL ) ;
-       SetControlMaximum( m_macControl , Number()) ;
+       SetControlMaximum( m_macControl , GetCount()) ;
        return index ;
 }
 
     ::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ;
     m_strings.Remove( n ) ;
     m_datas.Remove( n ) ;
-       SetControlMaximum( m_macControl , Number()) ;
+       SetControlMaximum( m_macControl , GetCount()) ;
 }
 
 void wxChoice::Clear()
 
 #include "wx/dcclient.h"
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxStaticBitmapBase)
 #endif
 
 /*
  * wxStaticBitmap
  */
 
-BEGIN_EVENT_TABLE(wxStaticBitmap, wxControl)
+BEGIN_EVENT_TABLE(wxStaticBitmap, wxStaticBitmapBase)
     EVT_PAINT(wxStaticBitmap::OnPaint)
 END_EVENT_TABLE()
 
     m_backgroundColour = parent->GetBackgroundColour() ;
     m_foregroundColour = parent->GetForegroundColour() ;
 
-    m_messageBitmap = bitmap;
+    m_bitmap = bitmap;
     if ( id == -1 )
            m_windowId = (int)NewControlId();
     else
     m_windowStyle = style;
 
     bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name );
-       SetSizeOrDefault( size ) ;
+       SetBestSize( size ) ;
     
     return ret;
 }
 
 void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap)
 {
-    m_messageBitmap = bitmap;
+    m_bitmap = bitmap;
     Refresh() ;
-    SetSizeOrDefault();
+    SetBestSize(wxSize(bitmap.GetWidth(), bitmap.GetHeight()));
 }
 
 void wxStaticBitmap::OnPaint( wxPaintEvent &event ) 
     wxPaintDC dc(this);
     PrepareDC(dc);
 
-    dc.DrawBitmap( m_messageBitmap , 0 , 0 , TRUE ) ;
+    dc.DrawBitmap( m_bitmap , 0 , 0 , TRUE ) ;
 }
 
 wxSize wxStaticBitmap::DoGetBestSize() const
 {
-   if ( m_messageBitmap.Ok() )
-       return wxSize(m_messageBitmap.GetWidth(), m_messageBitmap.GetHeight());
+   if ( m_bitmap.Ok() )
+       return wxSize(m_bitmap.GetWidth(), m_bitmap.GetHeight());
    else
        return wxSize(16, 16);  // completely arbitrary
 }
 
 #include <stdio.h>
 
 #if !USE_SHARED_LIBRARY
-IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxStaticTextBase)
 #endif
 
 #include <wx/mac/uma.h>
 
-BEGIN_EVENT_TABLE(wxStaticText, wxControl)
+BEGIN_EVENT_TABLE(wxStaticText, wxStaticTextBase)
     EVT_PAINT(wxStaticText::OnPaint)
 END_EVENT_TABLE()
 
     m_label = label ;
 
        bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name );
-       SetSizeOrDefault( size ) ;
+       SetBestSize( size ) ;
     
     return ret;
 }
        SetTitle( st ) ;
        m_label = st ;
        if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-               SetSizeOrDefault() ;
+               SetSize( GetBestSize() ) ;
 
        Refresh() ;     
        MacUpdateImmediately() ;