Provided by: libemf-doc_1.0.9+git.10.3231442-1_all 

NAME
EMF::METAFILEDEVICECONTEXT - Graphics Device Context.
SYNOPSIS
#include <libemf.h>
Inherits EMF::OBJECT.
Public Member Functions
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)
Data Fields
::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
Detailed Description
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.
Constructor & Destructor Documentation
EMF::METAFILEDEVICECONTEXT::METAFILEDEVICECONTEXT (FILE * fp_, const RECT * size, LPCWSTR description_w)
[inline]
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:
fp_ stdio pointer to an open file. May be null.
size the rectangle describing the position and size of the metafile on the 'page'. May be null.
description_w a UNICODE string describing the metafile. The format must be 'some text\0some more
text\0\0'. May be null.
virtual EMF::METAFILEDEVICECONTEXT::~METAFILEDEVICECONTEXT () [inline], [virtual]
Destructor frees all the graphics objects which may have been allocated. Now, it also frees any
metarecords which it might hold, too.
Member Function Documentation
void EMF::METAFILEDEVICECONTEXT::appendHandle (METARECORD * record) [inline]
Add this record to the metafile.
Parameters:
record this record is an object so it increments the handle count as well.
References EMF::METARECORD::size().
Referenced by EMF::EMRCREATEPALETTE::execute().
void EMF::METAFILEDEVICECONTEXT::appendRecord (METARECORD * record) [inline]
Add this record to the metafile.
Parameters:
record standard graphics record
References EMF::METARECORD::size().
Referenced by EMF::EMRCREATEPALETTE::execute().
void EMF::METAFILEDEVICECONTEXT::clearHandle (DWORD handle) [inline]
Clear the usage of this handle
Referenced by EMF::EMRCREATEPALETTE::execute().
void EMF::METAFILEDEVICECONTEXT::deleteMetafile (void) [inline]
Delete all the records from the metafile. This would seem to include deleting the header record as well.
Referenced by EMF::EMRCREATEPALETTE::execute().
OBJECTTYPE EMF::METAFILEDEVICECONTEXT::getType (void) const [inline], [virtual]
Return the type of this object (could probably do better with RTTI()).
Implements EMF::OBJECT.
void EMF::METAFILEDEVICECONTEXT::mergePoint (const LONG & x, const LONG & y) [inline]
Somewhat superfluous, except checker doesn't understand the initialization of automatic structures in the
declaration.
Referenced by EMF::EMRCREATEPALETTE::execute().
void EMF::METAFILEDEVICECONTEXT::mergePoint (const POINT & p) [inline]
Take the given point and determine if it enlarges the 'painted' area of the device.
DWORD EMF::METAFILEDEVICECONTEXT::nextHandle (void) [inline]
Scan the bit vector of used handles and return the index of the first free bit as this objects metafile
handle.
References EMF::ENHMETAHEADER::size().
Referenced by EMF::EMRCREATEPALETTE::execute().
Field Documentation
DATASTREAM EMF::METAFILEDEVICECONTEXT::ds
All i/o to the metafile is wrapped by this class so that byte swapping on big-endian machines is
transparent.
Referenced by EMF::EMRCREATEPALETTE::execute().
std::map< HGDIOBJ, HGDIOBJ > EMF::METAFILEDEVICECONTEXT::emf_handles
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(),
EMF::EMREXTCREATEFONTINDIRECTW::execute(), and EMF::EMRCREATEPALETTE::execute().
::FILE* EMF::METAFILEDEVICECONTEXT::fp
If it is a file-based metafile, then this pointer is not null.
Referenced by EMF::EMRCREATEPALETTE::execute().
std::vector< bool > EMF::METAFILEDEVICECONTEXT::handles
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.
ENHMETAHEADER* EMF::METAFILEDEVICECONTEXT::header
Serves double duty as the physical device description.
Referenced by EMF::EMRCREATEPALETTE::execute().
std::vector< EMF::METARECORD* > EMF::METAFILEDEVICECONTEXT::records
All of the metafile records are stored in memory.
Referenced by EMF::EMRCREATEPALETTE::execute().
Author
Generated automatically by Doxygen for libemf from the source code.
Version 1.0.9 Tue Aug 29 2017 EMF::METAFILEDEVICECONTEXT(3)