X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/41618278a66c3a8ef50919516ca66d381b38d2b6..27476f7368c891de149723b7d4cf9fb922ce8433:/include/wx/msw/ole/dataobj.h?ds=inline diff --git a/include/wx/msw/ole/dataobj.h b/include/wx/msw/ole/dataobj.h index 80a1e13e43..34cd92557a 100644 --- a/include/wx/msw/ole/dataobj.h +++ b/include/wx/msw/ole/dataobj.h @@ -12,6 +12,54 @@ #ifndef _WX_OLEDATAOBJ_H #define _WX_OLEDATAOBJ_H +#include "wx/bitmap.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 +68,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 +118,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 @@ -124,7 +149,7 @@ class WXDLLEXPORT wxBitmapDataObject : public wxDataObject { public: // ctors - wxBitmapDataObject() {}; + wxBitmapDataObject() {} wxBitmapDataObject(const wxBitmap& bitmap): m_bitmap(bitmap) {} void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; } wxBitmap GetBitmap() const { return m_bitmap; } @@ -133,13 +158,13 @@ public: // implement base class pure virtuals virtual wxDataFormat GetPreferredFormat() const - { return (wxDataFormat) wxDataObject::Bitmap; } + { return wxDF_BITMAP; } virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDataObject::Bitmap; } + { return format == wxDF_BITMAP; } virtual size_t GetDataSize() const - { wxASSERT(false); return 0; } // BEMIMP + { wxASSERT(FALSE); return 0; } // BEMIMP virtual void GetDataHere(void *pBuf) const - { wxASSERT(false); } // BEMIMP + { wxASSERT(FALSE); } // BEMIMP private: wxBitmap m_bitmap;