wxWidgets/include/wx/dataobj.h
Robin Dunn 61e33e31ab Since wxPrivateDataObject doesn't derive from wxObject it can't
participate in wxWindows RTTI system using wxClassInfo.  Removed
DECLARE_DYNAMIC_CLASS( wxPrivateDataObject )


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-06-07 21:28:06 +00:00

142 lines
4.6 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: dataobj.h
// Purpose: common data object classes
// Author: Robert Roebling, Vadim Zeitlin
// Modified by:
// Created: 26.05.99
// RCS-ID: $Id$
// Copyright: (c) wxWindows Team
// Licence: wxWindows license
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DATAOBJ_H_BASE_
#define _WX_DATAOBJ_H_BASE_
#if defined(__WXMSW__)
// ----------------------------------------------------------------------------
// 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;
};
#include "wx/msw/ole/dataobj.h"
#elif defined(__WXMOTIF__)
#include "wx/motif/dataobj.h"
#elif defined(__WXGTK__)
#include "wx/gtk/dataobj.h"
#elif defined(__WXQT__)
#include "wx/qt/dnd.h"
#elif defined(__WXMAC__)
#include "wx/mac/dnd.h"
#elif defined(__WXSTUBS__)
#include "wx/stubs/dnd.h"
#endif
// ---------------------------------------------------------------------------
// wxPrivateDataObject is a specialization of wxDataObject for app specific
// data (of some given kind, derive directly from wxDataObject if you wish to
// efficiently support multiple formats)
// ---------------------------------------------------------------------------
class WXDLLEXPORT wxPrivateDataObject : public wxDataObject
{
public:
wxPrivateDataObject();
virtual ~wxPrivateDataObject() { Free(); }
// get the format object - it is used to decide whether we support the
// given output format or not
wxDataFormat& GetFormat() { return m_format; }
// set data. will make copy of the data
void SetData( const void *data, size_t size );
// returns pointer to data
void *GetData() const { return m_data; }
// get the size of the data
virtual size_t GetSize() const;
// copy data to the given buffer
virtual void WriteData( void *dest ) const;
// these functions are provided for wxGTK compatibility, their usage is
// deprecated - use GetFormat().SetId() instead
void SetId( const wxString& id ) { m_format.SetId(id); }
wxString GetId() const { return m_format.GetId(); }
// implement the base class pure virtuals
virtual wxDataFormat GetPreferredFormat() const
{ return m_format; }
virtual bool IsSupportedFormat(wxDataFormat format) const
{ return m_format == format; }
virtual size_t GetDataSize() const
{ return m_size; }
virtual void GetDataHere(void *dest) const
{ WriteData(dest); }
protected:
// the function which really copies the data - called by WriteData() above
// and uses GetSize() to get the size of the data
//
// VZ: I really wonder why do we need it
void WriteData( const void *data, void *dest ) const;
private:
// free the data
inline void Free();
// the data
size_t m_size;
void *m_data;
// the data format
wxDataFormat m_format;
};
#endif
// _WX_DATAOBJ_H_BASE_