3f66f6a5b3
This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
174 lines
5.2 KiB
Objective-C
174 lines
5.2 KiB
Objective-C
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: metafile.h
|
|
// Purpose: interface of wxMetafileDC
|
|
// Author: wxWidgets team
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
@class wxMetafileDC
|
|
|
|
This is a type of device context that allows a metafile object to be
|
|
created (Windows only), and has most of the characteristics of a normal
|
|
@b wxDC.
|
|
The wxMetafileDC::Close member must be called after drawing into the
|
|
device context, to return a metafile. The only purpose for this at
|
|
present is to allow the metafile to be copied to the clipboard
|
|
(see wxMetafile).
|
|
|
|
Adding metafile capability to an application should be easy if you
|
|
already write to a wxDC; simply pass the wxMetafileDC to your drawing
|
|
function instead. You may wish to conditionally compile this code so it
|
|
is not compiled under X (although no harm will result if you leave it in).
|
|
|
|
Note that a metafile saved to disk is in standard Windows metafile format,
|
|
and cannot be imported into most applications. To make it importable,
|
|
call the function ::wxMakeMetafilePlaceable after closing your disk-based
|
|
metafile device context.
|
|
|
|
@library{wxcore}
|
|
@category{dc}
|
|
|
|
@see wxMetafile, wxDC
|
|
*/
|
|
class wxMetafileDC : public wxDC
|
|
{
|
|
public:
|
|
/**
|
|
Constructor.
|
|
If no filename is passed, the metafile is created in memory.
|
|
*/
|
|
wxMetafileDC(const wxString& filename = wxEmptyString);
|
|
|
|
/**
|
|
Destructor.
|
|
*/
|
|
~wxMetafileDC();
|
|
|
|
/**
|
|
This must be called after the device context is finished with.
|
|
A metafile is returned, and ownership of it passes to the calling
|
|
application (so it should be destroyed explicitly).
|
|
*/
|
|
wxMetafile* Close();
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
@class wxMetafile
|
|
|
|
A @b wxMetafile represents the MS Windows metafile object, so metafile
|
|
operations have no effect in X. In wxWidgets, only sufficient functionality
|
|
has been provided for copying a graphic to the clipboard; this may be extended
|
|
in a future version.
|
|
|
|
Presently, the only way of creating a metafile is to use a wxMetafileDC.
|
|
|
|
@onlyfor{wxmsw}
|
|
|
|
@library{wxcore}
|
|
@category{gdi}
|
|
|
|
@see wxMetafileDC
|
|
*/
|
|
class wxMetafile : public wxObject
|
|
{
|
|
public:
|
|
/**
|
|
Constructor.
|
|
|
|
If a filename is given, the Windows disk metafile is read in.
|
|
Check whether this was performed successfully by using the IsOk() member.
|
|
*/
|
|
wxMetafile(const wxString& filename = wxEmptyString);
|
|
|
|
/**
|
|
Destructor.
|
|
|
|
See @ref overview_refcount_destruct for more info.
|
|
*/
|
|
~wxMetafile();
|
|
|
|
/**
|
|
Returns @true if the metafile is valid.
|
|
*/
|
|
bool IsOk();
|
|
|
|
/**
|
|
Plays the metafile into the given device context, returning
|
|
@true if successful.
|
|
*/
|
|
bool Play(wxDC* dc);
|
|
|
|
/**
|
|
Passes the metafile data to the clipboard. The metafile can no longer be
|
|
used for anything, but the wxMetafile object must still be destroyed by
|
|
the application.
|
|
|
|
Below is a example of metafile, metafile device context and clipboard use
|
|
from the @c hello.cpp example. Note the way the metafile dimensions
|
|
are passed to the clipboard, making use of the device context's ability
|
|
to keep track of the maximum extent of drawing commands.
|
|
|
|
@code
|
|
wxMetafileDC dc;
|
|
if (dc.IsOk())
|
|
{
|
|
Draw(dc, false);
|
|
wxMetafile *mf = dc.Close();
|
|
if (mf)
|
|
{
|
|
bool success = mf->SetClipboard((int)(dc.MaxX() + 10), (int)(dc.MaxY() + 10));
|
|
delete mf;
|
|
}
|
|
}
|
|
@endcode
|
|
*/
|
|
bool SetClipboard(int width = 0, int height = 0);
|
|
};
|
|
|
|
|
|
|
|
// ============================================================================
|
|
// Global functions/macros
|
|
// ============================================================================
|
|
|
|
/** @addtogroup group_funcmacro_gdi */
|
|
//@{
|
|
|
|
/**
|
|
Given a filename for an existing, valid metafile (as constructed using
|
|
wxMetafileDC) makes it into a placeable metafile by prepending a header
|
|
containing the given bounding box. The bounding box may be obtained from a
|
|
device context after drawing into it, using the functions wxDC::MinX(),
|
|
wxDC::MinY(), wxDC::MaxX() and wxDC::MaxY().
|
|
|
|
In addition to adding the placeable metafile header, this function adds the
|
|
equivalent of the following code to the start of the metafile data:
|
|
|
|
@code
|
|
SetMapMode(dc, MM_ANISOTROPIC);
|
|
SetWindowOrg(dc, minX, minY);
|
|
SetWindowExt(dc, maxX - minX, maxY - minY);
|
|
@endcode
|
|
|
|
This simulates the wxMM_TEXT mapping mode, which wxWidgets assumes.
|
|
|
|
Placeable metafiles may be imported by many Windows applications, and can
|
|
be used in RTF (Rich Text Format) files.
|
|
|
|
@a scale allows the specification of scale for the metafile.
|
|
|
|
This function is only available under Windows.
|
|
|
|
@header{wx/metafile.h}
|
|
*/
|
|
bool wxMakeMetafilePlaceable(const wxString& filename,
|
|
int minX, int minY,
|
|
int maxX, int maxY,
|
|
float scale = 1.0);
|
|
|
|
//@}
|
|
|