+IMPLEMENT_DYNAMIC_CLASS(wxIconBundle, wxGDIObject)
+
+#define M_ICONBUNDLEDATA static_cast<wxIconBundleRefData*>(m_refData)
+
+// ----------------------------------------------------------------------------
+// wxIconBundleRefData
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxIconBundleRefData : public wxGDIRefData
+{
+public:
+ wxIconBundleRefData() { }
+
+ // We need the copy ctor for CloneGDIRefData() but notice that we use the
+ // base class default ctor in it and not the copy one which it doesn't have.
+ wxIconBundleRefData(const wxIconBundleRefData& other)
+ : wxGDIRefData(),
+ m_icons(other.m_icons)
+ {
+ }
+
+ // default assignment operator and dtor are ok
+
+ virtual bool IsOk() const { return !m_icons.empty(); }
+
+ wxIconArray m_icons;
+};
+
+// ============================================================================
+// wxIconBundle implementation
+// ============================================================================
+
+wxIconBundle::wxIconBundle()
+{
+}
+
+#if wxUSE_STREAMS && wxUSE_IMAGE
+
+#if wxUSE_FFILE || wxUSE_FILE
+wxIconBundle::wxIconBundle(const wxString& file, wxBitmapType type)
+ : wxGDIObject()
+{
+ AddIcon(file, type);
+}
+#endif // wxUSE_FFILE || wxUSE_FILE
+
+wxIconBundle::wxIconBundle(wxInputStream& stream, wxBitmapType type)
+ : wxGDIObject()