+ // 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;
+};
+
+// ----------------------------------------------------------------------------
+// wxGDIImageHandler: a class which knows how to load/save wxGDIImages.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxGDIImageHandler : public wxObject
+{
+public:
+ // ctor
+ wxGDIImageHandler() { m_type = wxBITMAP_TYPE_INVALID; }
+ wxGDIImageHandler(const wxString& name,
+ const wxString& ext,
+ wxBitmapType type)
+ : m_name(name), m_extension(ext), m_type(type) { }
+
+ // accessors
+ void SetName(const wxString& name) { m_name = name; }
+ void SetExtension(const wxString& ext) { m_extension = ext; }
+ void SetType(wxBitmapType type) { m_type = type; }
+
+ const wxString& GetName() const { return m_name; }
+ const wxString& GetExtension() const { return m_extension; }
+ wxBitmapType GetType() const { return m_type; }
+
+ // real handler operations: to implement in derived classes
+ virtual bool Create(wxGDIImage *image,
+ const void* data,
+ wxBitmapType flags,
+ int width, int height, int depth = 1) = 0;
+ virtual bool Load(wxGDIImage *image,
+ const wxString& name,
+ wxBitmapType flags,
+ int desiredWidth, int desiredHeight) = 0;
+ virtual bool Save(const wxGDIImage *image,
+ const wxString& name,
+ wxBitmapType type) const = 0;
+
+protected:
+ wxString m_name;
+ wxString m_extension;
+ wxBitmapType m_type;