EMF
1.0
|
Graphics Device Context. More...
#include <libemf.h>
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) |
Public Attributes | |
::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.
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.
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.
void EMF::METAFILEDEVICECONTEXT::appendHandle | ( | METARECORD * | record | ) | [inline] |
Add this record to the metafile.
record | this record is an object so it increments the handle count as well. |
void EMF::METAFILEDEVICECONTEXT::appendRecord | ( | METARECORD * | record | ) | [inline] |
Add this record to the metafile.
record | standard graphics record |
void EMF::METAFILEDEVICECONTEXT::clearHandle | ( | DWORD | handle | ) | [inline] |
Clear the usage of this handle
void EMF::METAFILEDEVICECONTEXT::deleteMetafile | ( | void | ) | [inline] |
Delete all the records from the metafile. This would seem to include deleting the header record as well.
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.
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.
All i/o to the metafile is wrapped by this class so that byte swapping on big-endian machines is transparent.
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).
::FILE* EMF::METAFILEDEVICECONTEXT::fp |
If it is a file-based metafile, then this pointer is not null.
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.
Serves double duty as the physical device description.
std::vector< EMF::METARECORD* > EMF::METAFILEDEVICECONTEXT::records |
All of the metafile records are stored in memory.