EMF::METAFILEDEVICECONTEXT(3) | libemf | EMF::METAFILEDEVICECONTEXT(3) |
EMF::METAFILEDEVICECONTEXT - Graphics Device Context.
#include <libemf.h>
Inherits EMF::OBJECT.
METAFILEDEVICECONTEXT (FILE *fp_, const RECT *size, LPCWSTR
description_w)
virtual ~METAFILEDEVICECONTEXT ()
OBJECTTYPE getType (void) const
DWORD nextHandle (void)
void clearHandle (DWORD handle)
void appendRecord (METARECORD *record)
void appendHandle (METARECORD *record)
void deleteMetafile (void)
void mergePoint (const LONG &x, const LONG &y)
void mergePoint (const POINT &p)
::FILE * fp
DATASTREAM ds
ENHMETAHEADER * header
std::vector< EMF::METARECORD * > records
SIZEL resolution
The resolution in DPI of the reference DC. SIZEL viewport_ext
The extent of the viewport. POINT viewport_org
The origin of the viewport. SIZEL window_ext
The extent of the window. POINT window_org
The origin of the window. bool update_frame
Update the frame automatically? POINT min_device_point
The lft/top-most painted point in device units. POINT max_device_point
The rgt/btm-most painted point in device units. POINT point
The current point. PEN * pen
The current pen. BRUSH * brush
The current brush. FONT * font
The current font. PALETTE * palette
The current palette. UINT text_alignment
The current text alignment. COLORREF text_color
The current text foreground color. COLORREF bk_color
The current background color. INT bk_mode
The current background mode. INT polyfill_mode
The current polygon fill mode. INT map_mode
The current mapping mode. FLOAT miter_limit
The current miter length limit. std::vector< bool > handles
std::map< HGDIOBJ, HGDIOBJ > emf_handles
Graphics Device Context.
Almost all GDI graphics calls require a device context (except those which create graphics objects such as pens and fonts). This is a specific context which renders to a metafile. There is a one-to-one correspondence between the device context and the metafile.
Most graphics programs seem to want to handle the opening and closing of files themselves, so this is an extension to the w32 interface.
Parameters
Destructor frees all the graphics objects which may have been allocated. Now, it also frees any metarecords which it might hold, too.
References deleteMetafile(), and records.
Add this record to the metafile.
Parameters
References header, records, and EMF::METARECORD::size().
Add this record to the metafile.
Parameters
References header, records, and EMF::METARECORD::size().
Clear the usage of this handle
References EMF::OBJECT::handle, and handles.
Delete all the records from the metafile. This would seem to include deleting the header record as well.
References records.
Referenced by ~METAFILEDEVICECONTEXT().
Return the type of this object (could probably do better with RTTI()).
Implements EMF::OBJECT.
Somewhat superfluous, except checker doesn't understand the initialization of automatic structures in the declaration.
Take the given point and determine if it enlarges the 'painted' area of the device.
References header, max_device_point, min_device_point, update_frame, viewport_ext, viewport_org, window_ext, and window_org.
Scan the bit vector of used handles and return the index of the first free bit as this objects metafile handle.
References handles, and header.
All i/o to the metafile is wrapped by this class so that byte swapping on big-endian machines is transparent.
This map holds the current mapping between EMF handles and global object handles as a metafile is played back (with PlayEnhMetaFile).
Referenced by EMF::EMRSELECTOBJECT::execute(), EMF::EMRDELETEOBJECT::execute(), EMF::EMRCREATEPEN::execute(), EMF::EMREXTCREATEPEN::execute(), EMF::EMRCREATEBRUSHINDIRECT::execute(), and EMF::EMREXTCREATEFONTINDIRECTW::execute().
If it is a file-based metafile, then this pointer is not null.
For compatibility, it appears that metafile handles are reused as objects are deleted. Attempt to emulate that behavior with a bit vector of used metafile handles.
Referenced by clearHandle(), and nextHandle().
Serves double duty as the physical device description.
Referenced by appendHandle(), appendRecord(), mergePoint(), and nextHandle().
All of the metafile records are stored in memory.
Referenced by appendHandle(), appendRecord(), deleteMetafile(), and ~METAFILEDEVICECONTEXT().
Generated automatically by Doxygen for libemf from the source code.
Wed Jun 29 2022 | Version 1.0.9 |