X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/26f86486b088495eeff542ec7d43caf78601fac1..e2c87f4cc46b77ca7aee5be0e3dac1a90681bf62:/include/wx/msw/ole/dataobj.h diff --git a/include/wx/msw/ole/dataobj.h b/include/wx/msw/ole/dataobj.h index 9ffe673ffe..6490e67f82 100644 --- a/include/wx/msw/ole/dataobj.h +++ b/include/wx/msw/ole/dataobj.h @@ -12,6 +12,53 @@ #ifndef _WX_OLEDATAOBJ_H #define _WX_OLEDATAOBJ_H +// ---------------------------------------------------------------------------- +// wxDataFormat identifies the single format of data +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxDataFormat +{ +public: + // the clipboard formats under Win32 are UINTs + typedef unsigned int NativeFormat; + + wxDataFormat(NativeFormat format = wxDF_INVALID) { m_format = format; } + wxDataFormat& operator=(NativeFormat format) + { m_format = format; return *this; } + + // defautl copy ctor/assignment operators ok + + // comparison (must have both versions) + bool operator==(wxDataFormatId format) const + { return m_format == (NativeFormat)format; } + bool operator!=(wxDataFormatId format) const + { return m_format != (NativeFormat)format; } + bool operator==(const wxDataFormat& format) const + { return m_format == format.m_format; } + bool operator!=(const wxDataFormat& format) const + { return m_format != format.m_format; } + + // explicit and implicit conversions to NativeFormat which is one of + // standard data types (implicit conversion is useful for preserving the + // compatibility with old code) + NativeFormat GetFormatId() const { return m_format; } + operator NativeFormat() const { return m_format; } + + // this only works with standard ids + void SetId(wxDataFormatId format) { m_format = format; } + + // string ids are used for custom types - this SetId() must be used for + // application-specific formats + wxString GetId() const; + void SetId(const wxChar *format); + +private: + // returns TRUE if the format is one of those defined in wxDataFormatId + bool IsStandard() const { return m_format > 0 && m_format < wxDF_MAX; } + + NativeFormat m_format; +}; + // ---------------------------------------------------------------------------- // forward declarations // ---------------------------------------------------------------------------- @@ -20,49 +67,26 @@ struct IDataObject; // ---------------------------------------------------------------------------- // wxDataObject is a "smart" and polymorphic piece of data. // -// @@@ it's currently "read-only" from COM point of view, i.e. we don't support -// SetData. We don't support all advise functions neither (but it's easy to -// do if we really want them) +// TODO it's currently "read-only" from COM point of view, i.e. we don't support +// SetData. We don't support all advise functions neither (but it's easy to +// do if we really want them) // ---------------------------------------------------------------------------- class WXDLLEXPORT wxDataObject { public: - // all data formats (values are the same as in windows.h, do not change!) - enum StdFormat - { - Invalid, - Text, - Bitmap, - MetafilePict, - Sylk, - Dif, - Tiff, - OemText, - Dib, - Palette, - Pendata, - Riff, - Wave, - UnicodeText, - EnhMetafile, - Hdrop, - Locale, - Max - }; - // function to return symbolic name of clipboard format (debug messages) static const char *GetFormatName(wxDataFormat format); // ctor & dtor wxDataObject(); - ~wxDataObject(); + virtual ~wxDataObject(); // pure virtuals to override // get the best suited format for our data virtual wxDataFormat GetPreferredFormat() const = 0; // decide if we support this format (should be one of values of - // StdFormat enumerations or a user-defined format) + // wxDataFormatId enumerations or a user-defined format) virtual bool IsSupportedFormat(wxDataFormat format) const = 0; // get the (total) size of data virtual size_t GetDataSize() const = 0; @@ -93,9 +117,9 @@ public: // implement base class pure virtuals virtual wxDataFormat GetPreferredFormat() const - { return (wxDataFormat) wxDataObject::Text; } + { return wxDF_TEXT; } virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDataObject::Text || format == wxDataObject::Locale; } + { return format == wxDF_TEXT || format == wxDF_LOCALE; } virtual size_t GetDataSize() const { return m_strText.Len() + 1; } // +1 for trailing '\0'of course virtual void GetDataHere(void *pBuf) const @@ -131,17 +155,15 @@ public: virtual wxDataFormat GetFormat() const { return wxDF_BITMAP; } -/* ?? // implement base class pure virtuals virtual wxDataFormat GetPreferredFormat() const - { return (wxDataFormat) wxDataObject::Text; } + { return wxDF_BITMAP; } virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDataObject::Text || format == wxDataObject::Locale; } + { return format == wxDF_BITMAP; } virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course + { wxASSERT(FALSE); return 0; } // BEMIMP virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } -*/ + { wxASSERT(FALSE); } // BEMIMP private: wxBitmap m_bitmap;