| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/msw/enhmeta.h
 
- // Purpose:     wxEnhMetaFile class for Win32
 
- // Author:      Vadim Zeitlin
 
- // Modified by:
 
- // Created:     13.01.00
 
- // Copyright:   (c) 2000 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_MSW_ENHMETA_H_
 
- #define _WX_MSW_ENHMETA_H_
 
- #include "wx/dc.h"
 
- #include "wx/gdiobj.h"
 
- #if wxUSE_DRAG_AND_DROP
 
-     #include "wx/dataobj.h"
 
- #endif
 
- // ----------------------------------------------------------------------------
 
- // wxEnhMetaFile: encapsulation of Win32 HENHMETAFILE
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxEnhMetaFile : public wxGDIObject
 
- {
 
- public:
 
-     wxEnhMetaFile(const wxString& file = wxEmptyString) : m_filename(file)
 
-         { Init(); }
 
-     wxEnhMetaFile(const wxEnhMetaFile& metafile) : wxGDIObject()
 
-         { Init(); Assign(metafile); }
 
-     wxEnhMetaFile& operator=(const wxEnhMetaFile& metafile)
 
-         { Free(); Assign(metafile); return *this; }
 
-     virtual ~wxEnhMetaFile()
 
-         { Free(); }
 
-     // display the picture stored in the metafile on the given DC
 
-     bool Play(wxDC *dc, wxRect *rectBound = NULL);
 
-     // accessors
 
-     virtual bool IsOk() const { return m_hMF != 0; }
 
-     wxSize GetSize() const;
 
-     int GetWidth() const { return GetSize().x; }
 
-     int GetHeight() const { return GetSize().y; }
 
-     const wxString& GetFileName() const { return m_filename; }
 
-     // copy the metafile to the clipboard: the width and height parameters are
 
-     // for backwards compatibility (with wxMetaFile) only, they are ignored by
 
-     // this method
 
-     bool SetClipboard(int width = 0, int height = 0);
 
-     // implementation
 
-     WXHANDLE GetHENHMETAFILE() const { return m_hMF; }
 
-     void SetHENHMETAFILE(WXHANDLE hMF) { Free(); m_hMF = hMF; }
 
- protected:
 
-     void Init();
 
-     void Free();
 
-     void Assign(const wxEnhMetaFile& mf);
 
-     // we don't use these functions (but probably should) but have to implement
 
-     // them as they're pure virtual in the base class
 
-     virtual wxGDIRefData *CreateGDIRefData() const;
 
-     virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
 
- private:
 
-     wxString m_filename;
 
-     WXHANDLE m_hMF;
 
-     DECLARE_DYNAMIC_CLASS(wxEnhMetaFile)
 
- };
 
- // ----------------------------------------------------------------------------
 
- // wxEnhMetaFileDC: allows to create a wxEnhMetaFile
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxEnhMetaFileDC : public wxDC
 
- {
 
- public:
 
-     // the ctor parameters specify the filename (empty for memory metafiles),
 
-     // the metafile picture size and the optional description/comment
 
-     wxEnhMetaFileDC(const wxString& filename = wxEmptyString,
 
-                     int width = 0, int height = 0,
 
-                     const wxString& description = wxEmptyString);
 
-     // as above, but takes reference DC as first argument to take resolution,
 
-     // size, font metrics etc. from
 
-     wxEXPLICIT
 
-     wxEnhMetaFileDC(const wxDC& referenceDC,
 
-                     const wxString& filename = wxEmptyString,
 
-                     int width = 0, int height = 0,
 
-                     const wxString& description = wxEmptyString);
 
-     // obtain a pointer to the new metafile (caller should delete it)
 
-     wxEnhMetaFile *Close();
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC)
 
- };
 
- #if wxUSE_DRAG_AND_DROP
 
- // ----------------------------------------------------------------------------
 
- // wxEnhMetaFileDataObject is a specialization of wxDataObject for enh metafile
 
- // ----------------------------------------------------------------------------
 
- // notice that we want to support both CF_METAFILEPICT and CF_ENHMETAFILE and
 
- // so we derive from wxDataObject and not from wxDataObjectSimple
 
- class WXDLLIMPEXP_CORE wxEnhMetaFileDataObject : public wxDataObject
 
- {
 
- public:
 
-     // ctors
 
-     wxEnhMetaFileDataObject() { }
 
-     wxEnhMetaFileDataObject(const wxEnhMetaFile& metafile)
 
-         : m_metafile(metafile) { }
 
-     // virtual functions which you may override if you want to provide data on
 
-     // demand only - otherwise, the trivial default versions will be used
 
-     virtual void SetMetafile(const wxEnhMetaFile& metafile)
 
-         { m_metafile = metafile; }
 
-     virtual wxEnhMetaFile GetMetafile() const
 
-         { return m_metafile; }
 
-     // implement base class pure virtuals
 
-     virtual wxDataFormat GetPreferredFormat(Direction dir) const;
 
-     virtual size_t GetFormatCount(Direction dir) const;
 
-     virtual void GetAllFormats(wxDataFormat *formats, Direction dir) const;
 
-     virtual size_t GetDataSize(const wxDataFormat& format) const;
 
-     virtual bool GetDataHere(const wxDataFormat& format, void *buf) const;
 
-     virtual bool SetData(const wxDataFormat& format, size_t len,
 
-                          const void *buf);
 
- protected:
 
-     wxEnhMetaFile m_metafile;
 
-     wxDECLARE_NO_COPY_CLASS(wxEnhMetaFileDataObject);
 
- };
 
- // ----------------------------------------------------------------------------
 
- // wxEnhMetaFileSimpleDataObject does derive from wxDataObjectSimple which
 
- // makes it more convenient to use (it can be used with wxDataObjectComposite)
 
- // at the price of not supoprting any more CF_METAFILEPICT but only
 
- // CF_ENHMETAFILE
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxEnhMetaFileSimpleDataObject : public wxDataObjectSimple
 
- {
 
- public:
 
-     // ctors
 
-     wxEnhMetaFileSimpleDataObject() : wxDataObjectSimple(wxDF_ENHMETAFILE) { }
 
-     wxEnhMetaFileSimpleDataObject(const wxEnhMetaFile& metafile)
 
-         : wxDataObjectSimple(wxDF_ENHMETAFILE), m_metafile(metafile) { }
 
-     // virtual functions which you may override if you want to provide data on
 
-     // demand only - otherwise, the trivial default versions will be used
 
-     virtual void SetEnhMetafile(const wxEnhMetaFile& metafile)
 
-         { m_metafile = metafile; }
 
-     virtual wxEnhMetaFile GetEnhMetafile() const
 
-         { return m_metafile; }
 
-     // implement base class pure virtuals
 
-     virtual size_t GetDataSize() const;
 
-     virtual bool GetDataHere(void *buf) const;
 
-     virtual bool SetData(size_t len, const void *buf);
 
-     virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const
 
-         { return GetDataSize(); }
 
-     virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format),
 
-                              void *buf) const
 
-         { return GetDataHere(buf); }
 
-     virtual bool SetData(const wxDataFormat& WXUNUSED(format),
 
-                          size_t len, const void *buf)
 
-         { return SetData(len, buf); }
 
- protected:
 
-     wxEnhMetaFile m_metafile;
 
-     wxDECLARE_NO_COPY_CLASS(wxEnhMetaFileSimpleDataObject);
 
- };
 
- #endif // wxUSE_DRAG_AND_DROP
 
- #endif // _WX_MSW_ENHMETA_H_
 
 
  |