]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/metafile.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxMetafileDC 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  12     This is a type of device context that allows a metafile object to be 
  13     created (Windows only), and has most of the characteristics of a normal 
  15     The wxMetafileDC::Close member must be called after drawing into the 
  16     device context, to return a metafile. The only purpose for this at 
  17     present is to allow the metafile to be copied to the clipboard 
  20     Adding metafile capability to an application should be easy if you 
  21     already write to a wxDC; simply pass the wxMetafileDC to your drawing 
  22     function instead. You may wish to conditionally compile this code so it 
  23     is not compiled under X (although no harm will result if you leave it in). 
  25     Note that a metafile saved to disk is in standard Windows metafile format, 
  26     and cannot be imported into most applications. To make it importable, 
  27     call the function ::wxMakeMetafilePlaceable after closing your disk-based 
  28     metafile device context. 
  35 class wxMetafileDC 
: public wxDC
 
  40         If no filename is passed, the metafile is created in memory. 
  42     wxMetafileDC(const wxString
& filename 
= ""); 
  50         This must be called after the device context is finished with. 
  51         A metafile is returned, and ownership of it passes to the calling 
  52         application (so it should be destroyed explicitly). 
  62     A @b wxMetafile represents the MS Windows metafile object, so metafile 
  63     operations have no effect in X. In wxWidgets, only sufficient functionality 
  64     has been provided for copying a graphic to the clipboard; this may be extended 
  67     Presently, the only way of creating a metafile is to use a wxMetafileDC. 
  76 class wxMetafile 
: public wxObject
 
  82         If a filename is given, the Windows disk metafile is read in. 
  83         Check whether this was performed successfully by using the IsOk() member. 
  85     wxMetafile(const wxString
& filename 
= ""); 
  90         See @ref overview_refcount_destruct for more info. 
  95         Returns @true if the metafile is valid. 
 100         Plays the metafile into the given device context, returning 
 106         Passes the metafile data to the clipboard. The metafile can no longer be 
 107         used for anything, but the wxMetafile object must still be destroyed by 
 110         Below is a example of metafile, metafile device context and clipboard use 
 111         from the @c hello.cpp example. Note the way the metafile dimensions 
 112         are passed to the clipboard, making use of the device context's ability 
 113         to keep track of the maximum extent of drawing commands. 
 120             wxMetafile *mf = dc.Close(); 
 123                 bool success = mf->SetClipboard((int)(dc.MaxX() + 10), (int)(dc.MaxY() + 10)); 
 129     bool SetClipboard(int width 
= 0, int height 
= 0); 
 134 // ============================================================================ 
 135 // Global functions/macros 
 136 // ============================================================================ 
 138 /** @ingroup group_funcmacro_gdi */ 
 142     Given a filename for an existing, valid metafile (as constructed using 
 143     wxMetafileDC) makes it into a placeable metafile by prepending a header 
 144     containing the given bounding box. The bounding box may be obtained from a 
 145     device context after drawing into it, using the functions wxDC::MinX(), 
 146     wxDC::MinY(), wxDC::MaxX() and wxDC::MaxY(). 
 148     In addition to adding the placeable metafile header, this function adds the 
 149     equivalent of the following code to the start of the metafile data: 
 152     SetMapMode(dc, MM_ANISOTROPIC); 
 153     SetWindowOrg(dc, minX, minY); 
 154     SetWindowExt(dc, maxX - minX, maxY - minY); 
 157     This simulates the wxMM_TEXT mapping mode, which wxWidgets assumes. 
 159     Placeable metafiles may be imported by many Windows applications, and can 
 160     be used in RTF (Rich Text Format) files. 
 162     @a scale allows the specification of scale for the metafile. 
 164     This function is only available under Windows. 
 166     @header{wx/metafile.h} 
 168 bool wxMakeMetafilePlaceable(const wxString
& filename
,