X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a126fcc3438c6b2693090e8c97761fa12d8ca7a..a419c3b116bef0b1e58e2ed0aea6ed0d053f7c21:/include/wx/gtk1/dataobj.h diff --git a/include/wx/gtk1/dataobj.h b/include/wx/gtk1/dataobj.h index b360614805..d79e1b63c8 100644 --- a/include/wx/gtk1/dataobj.h +++ b/include/wx/gtk1/dataobj.h @@ -31,63 +31,51 @@ class wxBitmapDataObject; class wxPrivateDataObject; class wxFileDataObject; -//------------------------------------------------------------------------- -// wxDataType (internal) -//------------------------------------------------------------------------- - -enum wxDataType -{ - wxDF_INVALID = 0, - wxDF_TEXT = 1, /* CF_TEXT */ - wxDF_BITMAP = 2, /* CF_BITMAP */ - wxDF_METAFILE = 3, /* CF_METAFILEPICT */ - wxDF_SYLK = 4, - wxDF_DIF = 5, - wxDF_TIFF = 6, - wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ - wxDF_DIB = 8, /* CF_DIB */ - wxDF_PALETTE = 9, - wxDF_PENDATA = 10, - wxDF_RIFF = 11, - wxDF_WAVE = 12, - wxDF_UNICODETEXT = 13, - wxDF_ENHMETAFILE = 14, - wxDF_FILENAME = 15, /* CF_HDROP */ - wxDF_LOCALE = 16, - wxDF_PRIVATE = 20 -}; - //------------------------------------------------------------------------- // wxDataFormat (internal) //------------------------------------------------------------------------- class wxDataFormat : public wxObject { - DECLARE_CLASS( wxDataFormat ) - public: - - wxDataFormat(); - wxDataFormat( wxDataType type ); - wxDataFormat( const wxString &id ); - wxDataFormat( const char *id ); - wxDataFormat( wxDataFormat &format ); - wxDataFormat( const GdkAtom atom ); - - void SetType( wxDataType type ); - wxDataType GetType() const; - - wxString GetId() const; - void SetId( const char *id ); - - GdkAtom GetAtom(); - + wxDataFormat(); + wxDataFormat( wxDataFormatId type ); + wxDataFormat( const wxString &id ); + wxDataFormat( const wxChar *id ); + wxDataFormat( const wxDataFormat &format ); + wxDataFormat( const GdkAtom atom ); + + void SetType( wxDataFormatId type ); + wxDataFormatId GetType() const; + + /* the string Id identifies the format of clipboard or DnD data. a word + * processor would e.g. add a wxTextDataObject and a wxPrivateDataObject + * to the clipboard - the latter with the Id "application/wxword", an + * image manipulation program would put a wxBitmapDataObject and a + * wxPrivateDataObject to the clipboard - the latter with "image/png". */ + + wxString GetId() const; + void SetId( const wxChar *id ); + + GdkAtom GetAtom(); + void SetAtom(GdkAtom atom) { m_hasAtom = TRUE; m_atom = atom; } + + // implicit conversion to wxDataFormatId + operator wxDataFormatId() const { return m_type; } + + bool operator==(wxDataFormatId type) const { return m_type == type; } + bool operator!=(wxDataFormatId type) const { return m_type != type; } + private: + wxDataFormatId m_type; + wxString m_id; + bool m_hasAtom; + GdkAtom m_atom; + + void PrepareFormats(); - wxDataType m_type; - wxString m_id; - bool m_hasAtom; - GdkAtom m_atom; +private: + DECLARE_CLASS( wxDataFormat ) }; //------------------------------------------------------------------------- @@ -96,44 +84,41 @@ private: class wxDataBroker : public wxObject { - DECLARE_CLASS( wxDataBroker ) - public: + /* constructor */ + wxDataBroker(); - /* constructor */ - wxDataBroker(); - - /* add data object */ - void Add( wxDataObject *dataObject, bool preferred = FALSE ); - -private: - - /* OLE implementation, the methods don't need to be overridden */ - - /* get number of supported formats */ - virtual size_t GetFormatCount() const; - - /* return nth supported format */ - virtual wxDataFormat &GetNthFormat( size_t nth ) const; - - /* return preferrd/best supported format */ - virtual wxDataFormat &GetPreferredFormat() const; - - /* search through m_dataObjects, return TRUE if found */ - virtual bool IsSupportedFormat( wxDataFormat &format ) const; - - /* search through m_dataObjects and call child's GetSize() */ - virtual size_t GetSize( wxDataFormat& format ) const; - - /* search through m_dataObjects and call child's WriteData(dest) */ - virtual void WriteData( wxDataFormat& format, void *dest ) const; - - /* implementation */ + /* add data object */ + void Add( wxDataObject *dataObject, bool preferred = FALSE ); + +private: + /* OLE implementation, the methods don't need to be overridden */ + + /* get number of supported formats */ + virtual size_t GetFormatCount() const; + + /* return nth supported format */ + virtual wxDataFormat &GetNthFormat( size_t nth ) const; + + /* return preferrd/best supported format */ + virtual wxDataFormatId GetPreferredFormat() const; + + /* search through m_dataObjects, return TRUE if found */ + virtual bool IsSupportedFormat( wxDataFormat &format ) const; + + /* search through m_dataObjects and call child's GetSize() */ + virtual size_t GetSize( wxDataFormat& format ) const; + + /* search through m_dataObjects and call child's WriteData(dest) */ + virtual void WriteData( wxDataFormat& format, void *dest ) const; public: + /* implementation */ + wxList m_dataObjects; + size_t m_preferred; - wxList m_dataObjects; - size_t m_preferred; +private: + DECLARE_CLASS( wxDataBroker ) }; //---------------------------------------------------------------------------- @@ -142,177 +127,137 @@ public: class wxDataObject : public wxObject { - DECLARE_DYNAMIC_CLASS( wxDataObject ) - public: + /* constructor */ + wxDataObject(); - /* constructor */ - wxDataObject(); - - /* destructor */ - ~wxDataObject(); - - /* write data to dest */ - virtual void WriteData( void *dest ) const = 0; - - /* get size of data */ - virtual size_t GetSize() const = 0; - - /* implementation */ - - wxDataFormat &GetFormat(); - - wxDataType GetFormatType() const; - wxString GetFormatId() const; - GdkAtom GetFormatAtom() const; - - wxDataFormat m_format; -}; + /* destructor */ + ~wxDataObject(); -//---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -//---------------------------------------------------------------------------- + /* write data to dest */ + virtual void WriteData( void *dest ) const = 0; -class wxTextDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxTextDataObject ) + /* get size of data */ + virtual size_t GetSize() const = 0; public: - - /* default constructor. call SetText() later or override - WriteData() and GetSize() for working on-demand */ - wxTextDataObject(); - - /* constructor */ - wxTextDataObject( const wxString& data ); - - /* set current text data */ - void SetText( const wxString& data ); + /* implementation */ + wxDataFormat m_format; - /* get current text data */ - wxString GetText() const; + wxDataFormat &GetFormat(); - /* by default calls WriteString() with string set by constructor or - by SetText(). can be overridden for working on-demand */ - virtual void WriteData( void *dest ) const; - - /* by default, returns length of string as set by constructor or - by SetText(). can be overridden for working on-demand */ - virtual size_t GetSize() const; - - /* write string to dest */ - void WriteString( const wxString &str, void *dest ) const; - - /* implementation */ + wxDataFormatId GetFormatType() const; + wxString GetFormatId() const; + GdkAtom GetFormatAtom() const; - wxString m_data; +private: + DECLARE_DYNAMIC_CLASS( wxDataObject ) }; //---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names +// wxTextDataObject is a specialization of wxDataObject for text data //---------------------------------------------------------------------------- -class wxFileDataObject : public wxDataObject +class wxTextDataObject : public wxDataObject { - DECLARE_DYNAMIC_CLASS( wxFileDataObject ) - public: + /* default constructor. call SetText() later or override + WriteData() and GetSize() for working on-demand */ + wxTextDataObject(); - /* default constructor */ - wxFileDataObject(); - - /* add file name to list */ - void AddFile( const wxString &file ); - - /* get all filename as one string. each file name is 0 terminated, - the list is double zero terminated */ - wxString GetFiles() const; - - /* write list of filenames */ - virtual void WriteData( void *dest ) const; + /* constructor */ + wxTextDataObject( const wxString& data ); - /* return length of list of filenames */ - virtual size_t GetSize() const; - - /* implementation */ + /* set current text data */ + void SetText( const wxString& data ); + + /* get current text data */ + wxString GetText() const; + + /* by default calls WriteString() with string set by constructor or + by SetText(). can be overridden for working on-demand */ + virtual void WriteData( void *dest ) const; + + /* by default, returns length of string as set by constructor or + by SetText(). can be overridden for working on-demand */ + virtual size_t GetSize() const; - wxString m_files; + /* write string to dest */ + void WriteString( const wxString &str, void *dest ) const; + +public: + /* implementation */ + wxString m_data; + +private: + DECLARE_DYNAMIC_CLASS( wxTextDataObject ) }; //---------------------------------------------------------------------------- -// wxBitmapDataObject is a specialization of wxDataObject for bitmaps +// wxFileDataObject is a specialization of wxDataObject for file names //---------------------------------------------------------------------------- -class wxBitmapDataObject : public wxDataObject +class wxFileDataObject : public wxDataObject { - DECLARE_DYNAMIC_CLASS( wxBitmapDataObject ) - public: + /* default constructor */ + wxFileDataObject(); - /* see wxTextDataObject for explanation */ + /* add file name to list */ + void AddFile( const wxString &file ); - wxBitmapDataObject(); - wxBitmapDataObject( const wxBitmap& bitmap ); - - void SetBitmap( const wxBitmap &bitmap ); - wxBitmap GetBitmap() const; - - virtual void WriteData( void *dest ) const; - virtual size_t GetSize() const; - - void WriteBitmap( const wxBitmap &bitmap, void *dest ) const; - - // implementation + /* get all filename as one string. each file name is 0 terminated, + the list is double zero terminated */ + wxString GetFiles() const; - wxBitmap m_bitmap; + /* write list of filenames */ + virtual void WriteData( void *dest ) const; + + /* return length of list of filenames */ + virtual size_t GetSize() const; + +public: + /* implementation */ + wxString m_files; +private: + DECLARE_DYNAMIC_CLASS( wxFileDataObject ) }; //---------------------------------------------------------------------------- -// wxPrivateDataObject is a specialization of wxDataObject for app specific data +// wxBitmapDataObject is a specialization of wxDataObject for bitmaps //---------------------------------------------------------------------------- -class wxPrivateDataObject : public wxDataObject +class wxBitmapDataObject : public wxDataObject { - DECLARE_DYNAMIC_CLASS( wxPrivateDataObject ) - public: + /* see wxTextDataObject for explanation */ + wxBitmapDataObject(); + wxBitmapDataObject( const wxBitmap& bitmap ); + ~wxBitmapDataObject(); - /* see wxTextDataObject for explanation of functions */ - - wxPrivateDataObject(); - ~wxPrivateDataObject(); - - /* the string Id identifies the format of clipboard or DnD data. a word - * processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - * to the clipboard - the latter with the Id "application/wxword", an - * image manipulation program would put a wxBitmapDataObject and a - * wxPrivateDataObject to the clipboard - the latter with "image/png". */ - - void SetId( const wxString& id ); - - /* get id */ - wxString GetId() const; + void SetBitmap( const wxBitmap &bitmap ); + wxBitmap GetBitmap() const; - /* set data. will make internal copy. */ - void SetData( const char *data, size_t size ); - - /* returns pointer to data */ - char* GetData() const; - - virtual void WriteData( void *dest ) const; - virtual size_t GetSize() const; - - void WriteData( const char *data, void *dest ) const; + virtual void WriteData( void *dest ) const; + virtual size_t GetSize() const; + void *GetData() const { return (void*)m_pngData; } + + void WriteBitmap( const wxBitmap &bitmap, void *dest ) const; - // implementation + void SetPngData( const char *pngData, size_t pngSize ); - size_t m_size; - char* m_data; - wxString m_id; +private: + wxBitmap m_bitmap; + size_t m_pngSize; + char *m_pngData; + + void DoConvertToPng(); + +private: + DECLARE_DYNAMIC_CLASS( wxBitmapDataObject ); }; - -#endif +#endif //__GTKDNDH__