| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/osx/metafile.h
- // Purpose: wxMetaFile, wxMetaFileDC classes.
- // This probably should be restricted to Windows platforms,
- // but if there is an equivalent on your platform, great.
- // Author: Stefan Csomor
- // Modified by:
- // Created: 1998-01-01
- // Copyright: (c) Stefan Csomor
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_METAFIILE_H_
- #define _WX_METAFIILE_H_
- #include "wx/dc.h"
- #include "wx/gdiobj.h"
- #if wxUSE_DATAOBJ
- #include "wx/dataobj.h"
- #endif
- #include "wx/osx/dcclient.h"
- /*
- * Metafile and metafile device context classes
- *
- */
- #define wxMetaFile wxMetafile
- #define wxMetaFileDC wxMetafileDC
- class WXDLLIMPEXP_FWD_CORE wxMetafile;
- class wxMetafileRefData ;
- #define M_METAFILEDATA ((wxMetafileRefData *)m_refData)
- class WXDLLIMPEXP_CORE wxMetafile : public wxGDIObject
- {
- public:
- wxMetafile(const wxString& file = wxEmptyString);
- virtual ~wxMetafile(void);
- // After this is called, the metafile cannot be used for anything
- // since it is now owned by the clipboard.
- virtual bool SetClipboard(int width = 0, int height = 0);
- virtual bool Play(wxDC *dc);
- wxSize GetSize() const;
- int GetWidth() const { return GetSize().x; }
- int GetHeight() const { return GetSize().y; }
- // Implementation
- WXHMETAFILE GetHMETAFILE() const ;
- void SetHMETAFILE(WXHMETAFILE mf) ;
- protected:
- virtual wxGDIRefData *CreateGDIRefData() const;
- virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
- DECLARE_DYNAMIC_CLASS(wxMetafile)
- };
- class WXDLLIMPEXP_CORE wxMetafileDCImpl: public wxGCDCImpl
- {
- public:
- wxMetafileDCImpl( wxDC *owner,
- const wxString& filename,
- int width, int height,
- const wxString& description );
- virtual ~wxMetafileDCImpl();
- // Should be called at end of drawing
- virtual wxMetafile *Close();
- // Implementation
- wxMetafile *GetMetaFile(void) const { return m_metaFile; }
- void SetMetaFile(wxMetafile *mf) { m_metaFile = mf; }
- protected:
- virtual void DoGetSize(int *width, int *height) const;
- wxMetafile* m_metaFile;
- private:
- DECLARE_CLASS(wxMetafileDCImpl)
- wxDECLARE_NO_COPY_CLASS(wxMetafileDCImpl);
- };
- class WXDLLIMPEXP_CORE wxMetafileDC: public wxDC
- {
- public:
- // the ctor parameters specify the filename (empty for memory metafiles),
- // the metafile picture size and the optional description/comment
- wxMetafileDC( const wxString& filename = wxEmptyString,
- int width = 0, int height = 0,
- const wxString& description = wxEmptyString ) :
- wxDC( new wxMetafileDCImpl( this, filename, width, height, description) )
- { }
- wxMetafile *GetMetafile() const
- { return ((wxMetafileDCImpl*)m_pimpl)->GetMetaFile(); }
- wxMetafile *Close()
- { return ((wxMetafileDCImpl*)m_pimpl)->Close(); }
- private:
- DECLARE_CLASS(wxMetafileDC)
- wxDECLARE_NO_COPY_CLASS(wxMetafileDC);
- };
- /*
- * Pass filename of existing non-placeable metafile, and bounding box.
- * Adds a placeable metafile header, sets the mapping mode to anisotropic,
- * and sets the window origin and extent to mimic the wxMM_TEXT mapping mode.
- *
- */
- // No origin or extent
- #define wxMakeMetaFilePlaceable wxMakeMetafilePlaceable
- bool WXDLLIMPEXP_CORE wxMakeMetafilePlaceable(const wxString& filename, float scale = 1.0);
- // Optional origin and extent
- bool WXDLLIMPEXP_CORE wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale = 1.0, bool useOriginAndExtent = true);
- // ----------------------------------------------------------------------------
- // wxMetafileDataObject is a specialization of wxDataObject for metafile data
- // ----------------------------------------------------------------------------
- #if wxUSE_DATAOBJ
- class WXDLLIMPEXP_CORE wxMetafileDataObject : public wxDataObjectSimple
- {
- public:
- // ctors
- wxMetafileDataObject()
- : wxDataObjectSimple(wxDF_METAFILE) { }
- wxMetafileDataObject(const wxMetafile& metafile)
- : wxDataObjectSimple(wxDF_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 wxMetafile& metafile)
- { m_metafile = metafile; }
- virtual wxMetafile GetMetafile() 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:
- wxMetafile m_metafile;
- };
- #endif
- #endif
- // _WX_METAFIILE_H_
|